设为首页 收藏本站
查看: 981|回复: 0

[经验分享] 基于MHA的MySQL高可用

[复制链接]

尚未签到

发表于 2018-10-7 08:06:01 | 显示全部楼层 |阅读模式
  一、MHA工作原理以及实验准备
  1、MHA工作原理总结为以下几条:
  (1)从宕机崩溃的master保存二进制日志事件(binlog events);
  (2)识别含有最新更新的slave;
  (3)应用差异的中继日志(relay log) 到其他slave;
  (4)应用从master保存的二进制日志事件(binlog events);
  (5)提升一个slave为新master;
  (6)使用其他的slave连接新的master进行复制。
  2、本实验环境共需要四个节点,其角色分配如下:
  node1:MariaDB master
  node2:MariaDB slave
  node3:MariaDB slave
  node4:MHA  manager
  二、实现MySQL的主从
  配置MySQL主服务器
  1,配置master主服务器 (配置文件)
  server-id=1   //配置server-id ,让主服务器又唯一ID号
  log-bin=zuozuo-bin  //打开二进制日志
  relay-log =zuozuo-relay-log // 打开中继日志
  log_slave_updates = 1
  skip_name_resolve  //关闭域名解析
  2创建复制账号
  在登录MySQL的前提下,在master的数据库下创建一个备份账户,每个slave使用标准的MySQL用户名和密码连接master,进行复制操作的slave会授予replication slave权限
  grant replication slave,replicationclient client on . to slave @'172.17.%.%'>  3、配置所有slave节点
  

server-id =2  /配置server-id  不可以与master重复  
relay-log =zuozuo-relay-log   //开启中继日志
  
log-bin = zuozuo-bin
  
log_slave_updates = 1 //使得更新的日志写进二进制日志中
  
read_only=ON   //设置制度权限,保证数据库数据的一致性
  
relay_log_purge=0
  
skip_name_resolve //忽略域名解析
  

  4、启动从服务器父子线程
  让slave连接master,病开始重做master二进制日志中的事件
  

change master to master_host='172.17.252.157',       //master的IP地址  
maste_user='slave';
  
master_password='123456',
  
master_log_file='zuozuo-bin.000002', //主服务器的二进制日志文件名
  
master_log_pos=278;  //读取二进制文件的起点
  
执行start slave ;// 启动复制线程
  

  三、准备通信环境
  MHA集群中的各个节点之间均需要局域SSH互相通信,以实现远程控制和数据管理功能,简单起见,可在manager节点生成密钥对,实现各节点尖实现基于key的免密码登录。
  

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa  
ssh-copy-id -i .ssh/id_rsa.pub  @各个MySQL数据库ID
  

  四 、安装配置MHA
  1、安装MHA
  Manager 节点: #yum install mha4mysql-manager-0.56-0.el6.noarch.rpm
  所有节点,包括Manager: #yum install mha4mysql-node-0.56-0.el6.norch.rpm
  注:对于manager节点 要先安装mha4mysql-node包然后安装管理包,避免一些依赖包没有安装影响管理包的安装。
  在所有MySQL节点授权拥有管理权限的用户可在本地网络紫红有其他节点上远程访问,当然,此时仅需要且只能在master节点上创建并且授权用户;
  

mysql> GRANT ALL ON *.* TO 'mhaadmin'@'172.17.%.%'>
'mhapass';
  

  2、初始化MHA,进行配置
  manager节点需要为每个监控的master/slave集群提供一个专用的配置文件,而所有的master/slave集群也可共享全局配置。全局配置文件默认为/etc/masterha_default.cnf ,其为可选配置。如果仅监控一组master/slave集群,也可直接通过application的配置来提供各服务器的默认配置信息。而每个application的配置文件路径为自定义。
  3、定义MHA管理配置文件
  

mkdir /etc/mha_master  
vim /etc/mha_master/app.cnf
  
[server default]
  
user=mhaadmin
  
password=123456
  
manager_workdir=/etc/mha_master/app1
  
manager_log=/etc/mha_master/manager.log
  
remote_workdir=/mydata/mha_master/app1
  
ssh_user=root
  
repl_user=slave
  
repl_user=slave
  
ping_interval=1
  
[server1]
  
hostname=172.17.253.21
  
ssh_port=22
  
candidate_master=1
  
[server2]
  
hostname=172.17.253.157
  
ssh_port=22
  
candidate_master=1
  
[server3]
  
hostname=172.17.253.59
  
ssh_port=22
  
candidate_master=1
  

  4、检测各节点间ssh互相通信配置是否OK
  [root@node4 ~]# masterha_check_ssh -conf=/etc/mha_master/app1.cnf
  输出信息最后一行类似如下信息,表示其通过检测。
  [info]All SSH connection tests passed successfully.
  [root@node4 ~]#masterha_check_repl -conf=/etc/mha_master/app1.cnf
  如果测试时会报错,可能是节点上没有账号,因为这个架构,任何一个从节点,将有可能成为主节点,所以也需要创建账号
  五、启动MHA
  

[root@node4 ~]#nohup masterha_manager -conf=/etc/mha_master/app1.cnf  
&> /etc/mha_master/manager.log &   //启动之后后台运行,负责将会占住挡墙终端,不能进行之后的操作。
  

  
启动成功之后,查看master节点的状态
  
[root@node4 ~]#masterha_check_status -conf=/etc/mha_master/app1.cnf
  

  
如果要停止MHA,需要使用master_stop命令。
  
[root@node4 ~]#masterha_stop -conf=/etc/mha_master/app1.cnf
  

  六、测试MHA故障转移
  (1)在master节点关闭mariadb服务,模拟主节点数据崩溃
  systemctl stop mariadb
  (2)在manager节点查看日志:
  /data/masterha/app1/manager.log 日志文件中出现如下信息,表示manager检测
  到172.16.252.18节点故障,而后自动执行故障转移,将172.16.252.17提升为主节
  点。注意,故障转移完成后,manager将会自动停止,此时使用masterha_check_status命令检测将会遇到错误提示,如下所示:
  #masterha_check_status –conf=/etc/masterha/app1.cnf
  app1 is stopped(2:NOT_RINNING).
  (3) 提供新的从节点以修复复制集群
  原有 master 节点故障后,需要重新准备好一个新的 MySQL 节点。基于来自于
  master 节点的备份恢复数据后,将其配置为新的 master 的从节点即可。注意,
  新加入的节点如果为新 增节点,其 IP 地址要配置为原来 master 节点的 IP,否则
  ,还需要修改 app1.cnf 中相应的 ip 地址。随后再次启动 manager,并再次检测
  其状态。
  (4)新节点提供后再次执行检查操作
  masterha_check_status -conf=/etc/mha_master/app1.cnf
  masterha_check_repl -conf=/etc/mha_master/app1.cnf
  检查无误,再次运行,这次要记录日志
  masterha_manager -conf=/etc/mha_master/app1.cnf

  /etc/mha_master/manager.log  2>&1

  七、新节点上线,故障转换恢复注意事项
  (1)、在生产环境中,当你的主节点挂了后,一定要在从节点上做一个备份,拿着备份文件把主节点手动提升为从节点,并指明从哪一个日志文件的位置开始复制
  (2)、每一次自动完成转换后,每一次的(replication health )检测不ok始终都是启
  动不了必须手动修复主节点,除非你改配置文件
  (3)、手动修复主节点提升为从节点后,再次运行检测命令
  

[root@node5 ~]# masterha_check_repl --conf=/etc/mha_master/app1.cnf  
app1 (pid:3211) is running(0:PING_OK), master:172.16.5.103
  

  (4)、再次运行起来就恢复成功了
  masterha_manager --conf=/etc/mha_master/app1.cnf



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-614130-1-1.html 上篇帖子: mysql插入换行符 下篇帖子: MySQL PHP 语法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表