MHA+MYSQL主从同步结构

MHA由日本dena公司youshimaton开发

是一套优秀的实现mysql高可用的解决方案

数据库的自动故障切换操作能做到在0-30秒内完成

MHA能确保在故障切换过程中最大限度保证数据的一致性,

以达到真正意义的高可用。

perl 编写

MHA组成:

MHA manager 管理节点

管理所有数据库的服务器

可以单独部署在一台独立的机器上

也可以部署在某台数据库服务器上

MHA Node 数据节点

存储数据的mysql服务器

运行在每台mysql服务器上

由manager定时探测集群中的master节点

当master故障时,manager自动将拥有最新数据的slave提升为新的master

实例:

客户端1台  管理机1台  数据库服务器3台一主两从

数据库:show  master  status;   show  slave  status; 

查看日志是否打开,是否是从服务器

重启mysqld

配置数据库之间可以互相无密码连接

ssh-keygen  

ssh-copy-id   root@ip

管理机无密码连接数据库群

ssh-keygen

ssh-copy-id  root@ip

配置mysql一主多从

51主数据服务器

开启日志   /etc/my.cnf

log_bin=master51

server_id=51

:wq

登录授权从服务器用户:

grant    replication slave  on  *.* to repluster@"密码"  identified  by "密码”;

52从数据服务器

·/etc/my.cnf

server_id=52

:wq        

systemctl  restart  mysqld

登录指定主数据服务信息 show  master  status;看主数据服务器的日志指定日志文件和位置偏移量

change  master  to master_host="主ip"  ,master_user="repluster",master_password="密码“,

master_log_file="master51.0001",master_log_pos=22;

start slave;

show  slave  status \G;

53主机和52主机一样

show  master  status;

show grants  for  repluster@"%";

show  slave   status  \G;

57管理主机:

安装软件包

创建并编辑主配置文件

创建故障切换脚本并编辑

把vip地址指定给在当前的主服务器51

yum   -y install    perl*

rpm -ivh  mha4.mysql-node-0.56-0.e16.noarch.rpm

yum  -y install   mha4.mysql-node-0.56-0.e16.noarch.rpm

tar    -zxvf  mha4.mysql-manager-0.56.tar.gz

perl    Makefile.pl    //需要yum list  | grep -i  "  " 依赖包

make

make install

安装完成命令

masterha_check_ssh   检查mha的ssh配置状况

masterha_check_repl      检查mysql复制状况

masterha_manager          启动mha

masterha_check_status     检测mha运行状态

masterha_stop                  停止mha

模板文件:

mkdir   /etc/mha

cp   /var/ftp/upload/mha/mha4mysql-manager-0.56/samples/conf/app1.cnf  /etc/mha

vim /etc/mha/app1.cnf

manager_workdir=/etc/mha

manager_log=/etc/mha/manager.log

master_ip_failover_script=/etc/mha/master_ip_failover    故障切换脚本,需拷贝模板

ssh_user=root

ssh_port=22

repl_user=用户名(主服务授予的从连接的用户名)

repl_password=密码

user=root      数据服务器授权用户登录监视

password=密码

[server1]

hostname=数据服务器ip地址

port=3306

candidate_master=1

[server2]

....

:wq

cp   /var/.../samples/scripts/master_ip_failover   /etc/mha/

vim /etc/mha/master_ip_failover         在35行my后

my  $vip="192.168.4.100";  定义vip地址

my  $key="1";   定义地址编号

my  $ssh_start_vip="/sbin/ifconfig eth0:$key $vip"; 绑定vip

my  $ssh_stop_vip="/sbin/ifconfig eth0:$key  down"; 释放vip

:wq

chmod +x  /etc/mha/master_ip_failover

51主服务器数据库

ifconfig   eth0:1  192.168.4.100/24

ifconfig   eth0:1

配置数据库服务器 51  52  53

安装软件

创建授权用户

优化数据库

cd               mha-soft-student

都配yum     -y    install     ./mha4mysql-node-0.56-noarch.rpm   节点

主配会同步给从:grant    all  on  *.*   to  root@"%"  identified  by "密码";

select   user,host   from  mysql.usrer;

多从服务器都要配置授权同步的用户:

grant   replication   slave  on *.*   to repluser@"%"  identified by “密码”;

优化配置:

开通半同步复制:

数据都配以下:vim /etc/my.cnf  在[mysql]下

plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so

rpl_semi_sync_master_enabled=1

rpl_semi_sync_slave_enabled=1      //启用模块

relay_log_purge=0  //禁止自动删除日志文件

:wq

systemctl  restart   mysqld

开启从服务器bin-log日志

vim  /etc/my.cnf

log_bin=master52|53

:wq

测试mha

57管理主机:

masterha_check_ssh   --conf=/etc/mha/app1.cnf    检查ssh

masterha_check_repl  --conf=/etc/mha/app1.cnf   检查从服务复制主从正常

masterha_manager  --conf=/etc/mha/app1.cnf   --remove_dead_master_conf   --ignore_last_failover(无8小时内第二次限制切换)

masterha_check_status   --conf=/etc/mha/app1.cnf

masterha_stop  --conf=/etc/mha/app1.cnf

主数据会同步:grant   select,insert  on gamedb.*  to ya@"%"  identified  by "密码“;

create database  gamedb;

create   table  gamedb.t1(id int);

客户端:mysql  -hvip    -uya  -p密码   -e  "mysql命令"

51主数据停止mysqld服务

客户端:mysql  -hvip    -uya  -p密码   -e  "mysql命令"

52:show  slave  status;

53:show  slave status \G | grep  -i  "master_host"

57:masterha_manager  --conf=/etc/mha/app1.cnf   --remove_dead_master_conf --ignore_last_failover

masterha_check_status  --conf=/etc/mha/app1.cnf

如何恢复宕机的数据库服务器

启动mysql宕机服务

show  slave  status;

当前主服务器数据完全备份:

mysqldump   -uroot  -p密码  --master-data(记录日志和偏移量)  gamedb > /root/gamedb.sql

scp   /root/gamedb.sql    宕机ip:/root/

宕机:mysql  -uroot   -p密码   gamedb  <  /root/gamedb.sql

grep  master   /root/gamedb.sql   日志和偏移量

宕机做从指定复制主服务器:

change  master  to master_host="192.168.4.52",master_user="repluser"

,master_password="密码",master_log_file=master.22,

master_log_pos=903;

start  slave;

管理主机:vim  /mha/app1.cnf  添加宕机的数据库信息加入选举

[server1]

candidate_master=1

hostname=192.168.4.51

port=3305

:wq

masterha_check_repl   --conf=/etc/mha/app1.cnf

检查主从同步

masterha_stop --conf=/etc/mha/app1.cnf

masterha_manager --conf=/etc/mha/app1.cnf  --remove_dead_master_conf --ignore_last_failover

select   * from  gamedb.t1;

PXC

介绍:percona  xtraDB cluster 简称pxc

galera  cluster  是codership公司开发的开源软件

为mysql存储数据提供高可用的集群解决方案

官网http://galeracluster.com

mha高可用:必须是主从结构,ssh免密码登录,必须有vip

恢复故障的主服务器:手动同步数据,配置为当前主服务的从库,手动添加

pxc特点:

数据强一致性,多线程复制,无同步延时,没有主从切换操作,

无需使用虚拟ip,支持故障节点自动加入,无需手动拷贝数据,配置简单

相应端口服务端口:

3306      数据库服务端口

4444     sst端口

4567   集群通讯端口

4568    ist  端口

sst           state  snapshot  transfer  全量同步

ist           incremental  state   transfer  增量同步

至少需要三台数据库服务器:克隆修改/etc/sysconfig/network-scripts/ifcfg-ens33网卡

3台服务器都要安装:  先下载

rpm -ivh  libev-4.15-1.el6.rf.x86_64.rpm  //安装依赖

yum -y install  percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm  在线热备程序

rpm  -ivh   qpress-1.1-14.11.x86_64.rpm      递归压缩包程序

tar -xvf  Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar

yum  -y  install  Percona-XtraDB-Cluster-*.rpm

存放目录:ls  /etc/percona-xtradb-cluster.conf.d/

配置文件说明:

mysqld.cnf  //数据库服务运行参数配置文件

mysql.stafe.cnf  //mysql进程参数配置文件无需修改使用默认配置即可

wsrep.cnf   //pxc集群配置文件

cd    /etc/percona-xtradb-cluster.conf.d/

vim  ./mysqld.cnf    在[mysqld]  3台都要配

server_id=数字本机位    //server-id  不允许重复

datadir=/var/lib/mysql    //数据库目录

socket=/var/llib/mysql/mysql.sock  //socker文件

log-error=/var/lib/mysqld.log   //日志文件

pid-file=/var/run/mysql/mysqld.pid  //pid文件

log-bin                       //启用binlog日志

log_slave_updates        //启用链式复制

expire_logs_days=7    //日志文件保留天数

修改wsrep.cnf

vim  wsrep.cnf    3台服务器都需要修改

8:wsrep_cluster_address=gcomm://xxxx,xxxx,xxxx    集群成员列表

25:wsrep_node_address=x.x.x.x      //本机ip地址

27:wsrep_cluster_name=pxc-cluster  //集群名称,3台必须相同

30:wsrep_node_name=本机名

39:wsrep_sst_auth="用户名sst:密码“   //sst数据同步授权用户

:wq

测试集群

启动服务:在1台服务器上执行即可71主机

添加用户:

systemctl    start  mysql@bootstrap.service  //启动集群服务

grep pass /var/log/mysqld.log  //查看数据库管理员初始登录密码

mysql -uroot -p”初始登录密码“  //使用初始登录密码

alter   user  root@"localhost"  identified  by "密码”;修改密码

grant  reload,lock tables,replication client,process  on   *.*   to   stu@"localhost" identified by  "密码“  ;   //添加授权用户跟上面配置的wsrep用户密码一样

select  user  from  mysql.user;

ls  /var/lib/mysql

其他服务主机:只需启动数据库服务

systemctl  start  mysql  //启动数据库服务pxc没有d

没有成功关闭防火墙和selinux,同时删掉 rm -rf /var/lib/mysq/*

重启

netstat    -utnlp | grep  3306 //数据库服务端口

netstat    -utnlp  | grep   4567 //集群端口

查询集群信息

可以在任意一台数据库服务器上执行

mysql  -uroot  -p12345

show  status  like  "%wsrep%";   

查看wsrep_incoming_addresses  , wsrep_cluster_size,wsrep_cluster_status  primary,wsrep_connected

测试高可用

在任意一台服务器上添加访问数据的授权用户

任意一台服务器宕机不影响客户端连接

在客户端使用授权用户连接任意服务器数据库可以存储数据,且可以查到同样的数据

建表时,必须有主键字段

grant  all on  库名.* to  用户@"%"  identified by "密码“;

客户端:mysql  -h数据库服务器ip地址  -u用户  -p密码 

故障:只需重启

mysql高可用集群MHA,PXC相关推荐

  1. mysql高可用集群——MHA架构

    目录 1.下载 2.搭建mha 2.1 系统配置 2.2 架构 2.3 添加ssh公钥信任 2.4 安装mha节点 2.5 manager配置文件 2.6 检查 2.7 启动manager进程 2.8 ...

  2. 企业主流MySQL高可用集群

    选型 10款常见MySQL高可用方案选型解读 MYSQL(高可用方案) 目前最流行的是:主从复制.基于Galera的方案 企业主流MySQL高可用集群 了解 MySQL 集群之前,先看看单节点数据库的 ...

  3. heartbeat+DRBD+mysql高可用集群实战

      heartbeat+DRBD+mysql高可用集群实战 四台主机 主机名                 IP地址             用途 dbm128                    ...

  4. mysql1.7(mysql优化,mysql-mmm软件介绍,mysql高可用集群。)

    一,mysql优化. 1. 1mysql服务工作过程 mysql服务由8个功能组件组成: 1,管理工具  把软件包安装后,提供的命令. #mv /etc/my.cnf   /etc/my.cnf.ba ...

  5. MYSQL高可用集群架构——MHA架构

    MHA高可用集群 文章目录 一.MHA 简介: 二.部署 MHA: 第一步:三台主从服务器安装 mysql 第二步:修改 mysql 的主配置文件:/etc/my.cnf ,注意三台服务器的 serv ...

  6. 企业中MySQL高可用集群架构三部曲之MM+keepalived

    各位老铁们,老张与大家又见面了.看到各位在博客里面给我的留言和访问量的情况,我很是欣慰,也谢谢大家对我的认可.我写这些博客,就是想把自己对于MySQL数据库的一些看法和自己平时的实战经验分享出来,我们 ...

  7. nfs mysql_heatbeat-gui实现基于nfs的mysql高可用集群

    一.简述HA高可用集群 高可用集群就是当集群中的一个节点发生各种软硬件及人为故障时,集群中的其他节点能够自动接管故障节点的资源并向外提供服务.以实现减少业务中断时间,为用户提供更可靠,更高效的服务. ...

  8. 双vip的MySQL高可用集群

    目录 一.mysql集群的搭建 IP地址规划: 使用ansible给从服务器安装mysql 1.使用master与所有从服务器建立SSH免密通道,然后添加到mysqld组到hosts文件里面 2.使用 ...

  9. gelera mysql_基于Galera的MySQL高可用集群

    MySQL的高可用方案 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据 ...

最新文章

  1. CVPR2020:三维实例分割与目标检测
  2. [转]CentOS 5.5下FTP安装及配置
  3. 汇总|目标检测中的数据增强、backbone、head、neck、损失函数
  4. HTML5 音频audio 和视频video实用基础教程
  5. 从“执行新过程新增5%的工作量”看新过程引入
  6. Tomcat相关 -- 内存设置
  7. WIN32:API串口通讯实例教程
  8. java oracle时间格式转换_oracle时间格式转换问题 ORA-01810: format code appears twice--转...
  9. 精解闪电网络如何打开BTC支付时代 | 火星总编时刻No.7
  10. hadoop集群搭建(3)
  11. 批量解析域名为IP地址的shell脚本和python脚本
  12. 微信支付记录删除后怎么恢复?赶紧收藏这两个小技巧
  13. 微信打不开文件怎么办
  14. 杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)
  15. 2020-2021年度第2学期课程回顾总结
  16. C/C++基础 sleep()、usleep()、nanosleep()的用法
  17. 学生表、班级表、成绩表
  18. colorkey口红怎么样_colorkey口红推荐什么颜色
  19. LINE chatbot机器人开发
  20. EDA 电子设计自动化VHDL系列课程7 – 分频器和计数器

热门文章

  1. 为Arduino IDE安装添加库
  2. 干货!软考中级网络工程师备考经验分享
  3. EAUML日拱一卒 用例包含关系
  4. Buxwiz注册详解
  5. Django REST framework+Vue 打造生鲜超市(三)
  6. java计算机毕业设计校园快递联盟系统源码+系统+mysql数据库+lw文档
  7. 刚完成一个二手书信息发布网站 www.alluwant.cn
  8. Panda3D引擎简介跟初步体验
  9. Code jock 8.7 源代码编译
  10. 学会读源码,很重要!