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

[经验分享] Mysql MHA高可用集群架构

[复制链接]

尚未签到

发表于 2018-9-28 07:01:31 | 显示全部楼层 |阅读模式
  记得之前发过一篇文章,名字叫《浅析MySQL高可用架构》,之后一直有很多小伙伴在公众号后台或其它渠道问我,何时有相关的深入配置管理文章出来,因此,民工哥,也将对前面的各类架构逐一进行整理,然后发布出来。那么今天将来发布的MHA的架构整体规划与配置操作。
  简单介绍
  MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
  MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。
  目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器
  布署规划
  系统信息
  

[root@db250 ~]# cat /etc/redhat-release
  
CentOS>  
[root@db250 ~]# uname -r
  
2.6.32-642.el6.x86_64
  

  数据库
  mysql57-community-release-el6-9.noarch.rpm
  环境规划
  Db250    集群管理节点  192.168.4.250
  Db251    主库   192.168.4.251
  Db253    从库(备主库)  192.168.4.253
  Db254    从库 192.168.4.254
  架构图如下
DSC0000.jpg

  配置SSH免密登陆与hosts文件
  配置hosts文件
  

cat>>/etc/hosts  --------------以上配置三台数据库服务器都需要配置----------------
  配置主从同步
  Db251与db253的配置文件都需要配置开启binlog
  server_id=251
  log_bin=master-bin
  log_bin_index=master-bin.index
  server_id=253
  log_bin=slave-bin
  log_bin_index=slave-bin.index
  log-slave-updates
  relay_log_index=slave-relay-bin.index
  relay_log=slave-relay-bin
  server_id=254
  relay_log_index=slave-relay-bin.index
  relay_log=slave-relay-bin
  同步主库数据到从库,主从同步操作请参考之前的文章
  检查主从同步状态
  mysql -uroot -p123456 -e "show slave status\G" |egrep "Slave_IO_Running|Slave_SQL_Running"
DSC0001.jpg

  所有数据库节点配置MHA管理用户与权限

  grant all on . to mha@'192.168.4.%'>  至此所有基础环境组建完成
  安装配置MHA
  https://downloads.mariadb.com/MHA/  下载地址
  整个MHA服务安装过程如下:
  安装依赖包
  

yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch -y  
yum install perl-Parallel-ForkManager perl-Time-HiRes –y
  

  管理节点安装
  

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm  
yum localinstall -y mha4mysql-manager-0.52-0.noarch.rpm
  
yum localinstall -y mha4mysql-node-0.52-0.noarch.rpm
  

  其它节点安装
  yum localinstall -y mha4mysql-node-0.52-0.noarch.rpm
  安装过程中可能会报错,根据提示去解决
  配置过程如下:
  

Mkdir /mha  
[root@db250 ~]# vim /etc/masterha_default.cnf
  
[server default]
  
#刚才授权的mysql管理用戶名
  
user=mha
  
password=123456
  
manager_workdir=/mha
  
manager_log=/mha/manager.log
  
remote_workdir=/mha
  

  
#ssh免密钥登录的帐号名
  
ssh_user=root
  
#mysql复制帐号,用来在主从机之间同步二进制日志等
  
repl_user=slave
  
repl_password=123456
  

  
#ping间隔,用来检测master是否正常
  
ping_interval= 1
  

  
[server1]
  
hostname=db251
  
master_binlog_dir=/var/lib/mysql
  
#候选master挂掉时候优先让它顶
  
candidate_master=1
  

  
[server2]
  
hostname=db253
  
master_binlog_dir=/var/lib/mysql/
  
candidate_master=1
  

  
[server3]
  
hostname=db254
  
master_binlog_dir=/var/lib/mysql/
  
no_master=1
  
#不能成为master
  

DSC0002.jpg

  masterha_check_ssh         检查MHA的SSH配置状况
  masterha_check_repl 检查MySQL复制状况
  masterha_manger            启动MHA
  masterha_check_status      检测当前MHA运行状态
  masterha_master_monitor    检测master是否宕机
  masterha_master_switch     控制故障转移(自动或者手动)
  masterha_conf_host         添加或删除配置的server信息
  验证操作
  

[root@db250 ~]# masterha_check_ssh --conf=/etc/masterha_default.cnf  
检查主从同步
  
masterha_check_repl --conf=/etc/masterha_default.cnf
  

DSC0003.jpg

DSC0004.jpg

  启动MHA服务
  

[root@db250 ~]# masterha_manager --conf=/etc/masterha_default.cnf &  
[1] 2035
  
[root@db250 ~]# Fri Sep  1 01:52:25 2017 - [info] Reading default configuratoins from /etc/masterha_default.cnf..
  
Fri Sep  1 01:52:25 2017 - [info] Reading application default configurations from /etc/masterha_default.cnf..
  
Fri Sep  1 01:52:25 2017 - [info] Reading server configurations from /etc/masterha_default.cnf..
  

  查看启动日志
DSC0005.jpg

DSC0006.jpg

  好吧,到此MHA高可用总算成功了,也算可以的哈!
  接下来模拟下故障,将db251关闭
  

[root@db251 ~]# /etc/init.d/mysqld stop  
Stopping mysqld:              [  OK  ]
  

  查看日志
DSC0007.jpg

DSC0008.jpg

DSC0009.jpg

DSC00010.jpg

DSC00011.jpg

  发现新的主库已切换到db253这台服务器上了,接下来查看下主从同步的情况
DSC00012.jpg

DSC00013.jpg

  当原来的主服务器故障修复后,需要手工将原主变成从
  

[root@db250 ~]# grep -i "All other slaves should start" /mha/manager.log  
Fri Sep  1 01:59:05 2017 - [info]  All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='db253 or 192.168.4.253', MASTER_PORT=3306, MASTER_LOG_FILE='slave-bin.000003', MASTER_LOG_POS=760546, MASTER_USER='slave', MASTER_PASSWORD='xxx';
  

  因此此时我在原主库上执行操作将修复的主库改为从库
DSC00014.jpg

DSC00015.jpg

DSC00016.jpg

  接下来在新的主库上写入数据来测试同步情况
DSC00017.jpg

DSC00018.jpg

DSC00019.jpg




运维网声明 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-602979-1-1.html 上篇帖子: mysql重命名表 下篇帖子: mysql执行sql及慢查询监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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