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

[经验分享] MySQL高可用解决方案---MHA

[复制链接]
累计签到:5 天
连续签到:1 天
发表于 2018-10-7 09:18:20 | 显示全部楼层 |阅读模式
  一主两从一管理,一共四台设备
  MHA的作用是做master的高可用,当主节点MySQL故障时,会将和主节点数据最接近的一个从节点提升为主节点,同时如果其他从节点有更新的数据也会同步到此“准主节点”上。如果在主节点有数据已经提交但是所有的从节点还未完成复制,则从节点提升为主节点后只能将此数据回退,没有别的办法。
  准备事项:
  1、同步时间
ntpdate 172.18.0.1  2、配置主机域名,在主节点即node1上操作
vim /etc/hosts  
192.168.1.101 node1  #主节点
  
192.168.1.106 node2  #从节点
  
192.168.1.107 node3  #从节点
  
192.168.1.100 node4  #manager
  
scp /etc/hosts  node2:/etc/hosts
  
scp /etc/hosts  node3:/etc/hosts
  
scp /etc/hosts  node4:/etc/hosts
  3、MHA需要ssh无密钥验证
ssh-keygen -t rsa -P ''  
cd  /root/.ssh/
  
ssh-copy-id -i ./id_rsa.pub  root@node1
  
scp id_rsa{,.pub} authorized_keys  node2:/root/.ssh
  
scp id_rsa{,.pub} authorized_keys  node3:/root/.ssh
  
scp id_rsa{,.pub} authorized_keys  node4:/root/.ssh
  下面开始具体步骤:
  1、配置主从复制集群
node1:  
vim /etc/my.cnf.d/server.cnf
  
[server]
  
  skip_name_resolve=ON
  
  innodb_file_per_table=ON
  
  server_id = 1
  
  log_bin = master-log
  
  relay_log = relay-log
  
  #主节点也要配置中继日志,因为主节点故障再恢复时就会称为从节点
node2:  
vim /etc/my.cnf.d/server.cnf
  
[server]
  
  skip_name_resolve=ON
  
  innodb_file_per_table=ON
  
  server_id = 2
  
  relay_log = relay-log
  
  log_bin = master-log
  
  relay_log_purge = OFF
  
  read_only = ON
  

  
  node3:
  
vim /etc/my.cnf.d/server.cnf
  
[server]
  
  skip_name_resolve=ON
  
  innodb_file_per_table=ON
  
  server_id = 3
  
  relay_log = relay-log
  
  log_bin = master-log
  
  relay_log_purge = OFF
  
  read_only = ON
  开启服务
systemctl  start mariadb.service  2、在主节点授权复制账号
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.1.%' IDENTIFIED BY 'centos';  主节点授权管理设备的管理账号
GRANT ALL ON *.* TO 'mhaadmin'@'192.168.1.%' IDENTIFIED BY 'centos';  写入磁盘
FLUSH PRIVILEGES;  3、在从节点配置
CHANGE  MASTER TO MASTER_HOST='192.168.1.101',MASTER_USER='repluser',MASTER_PASSWORD='centos',MASTER_LOG_FILE='master-log.000003',MASTER_LOG_POS=245;  
START SLAVE ;
  
SHOW SLAVE STATUS\G;
  
SELECT USER FROM mysql.user;
  
#能看到复制授权账户和管理账户已经同步
  4、安装MHA软件包
  在manager节点安装manager和node包
yum -y install mha4mysql-manager-0.56-0.el6.noarch.rpm  
yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm
  5、在node上安装node包
yum -y install  mha4mysql-node-0.56-0.el6.noarch.rpm  6、在manager上配置
mkdir /etc/masterha  
vim /etc/masterha/app1.cnf
  
[server default]
  
user=mhaadmin
  
password=centos
  
manager_workdir=/data/masterha/app1
  
manager_log=/data/masterha/app1/manager.log
  
remote_workdir=/data/masterha/app1
  
ssh_user=root
  
repl_user=repluser
  
repl_password=centos
  
ping_interval=1
  

  
[server1]
  
hostname=192.168.1.101
  
ssh_port=22
  
candidate_master=1
  

  
[server2]
  
hostname=192.168.1.106
  
ssh_port=22
  
candidate_master=1
  

  
[server3]
  
hostname=192.168.1.107
  
ssh_port=22
  
candidate_master=1
  7、检查配置并启动服务
检查  
masterha_check_ssh --conf=/etc/masterha/app1.cnf
  
masterha_check_repl --conf=/etc/masterha/app1.cnf
  

  
启动manager服务器
  
masterha_manager  --conf=/etc/masterha/app1.cnf
  8、测试
  此时模拟主节点故障
SHOW MASTER STATUS;  
SHOW SLAVE STATUS;
  
#在从节点查看从节点信息,此时有一个从节点已经升级为主节点
  9、修复原主节点
vim /etc/my.cnf.d/server.cnf    #添加两行  
relay_log_purge = OFF
  
read_only = ON
  

  
再次开启服务上线
  
systemctl  start mariadb.service
  

  
CHANGE  MASTER TO MASTER_HOST='192.168.1.106',MASTER_USER='repluser',MASTER_PASSWORD='centos',MASTER_LOG_FILE='master-log.000003',MASTER_LOG_POS=320;
  
START SLAVE;
  
SHOW SLAVE STATUS\G;
  
#此时的主节点就是替代的原从节点
  10、在manager上检查复制功能
masterha_check_repl --conf=/etc/masterha/app1.cnf  
出现如下字样就说明主从已经切换了,而且原主节点此时也变成了从节点
  
192.168.1.106(192.168.1.106:3306) (current master)
  
+--192.168.1.101(192.168.1.101:3306)
  
+--192.168.1.107(192.168.1.107:3306)
  11、再次启动MHA
nohup masterha_manager  --conf=/etc/masterha/app1.cnf &> /data/masterha/app1/manager.log &  
#在后台执行,并剥离与当前终端的关系
  
#当主节点再次down掉,此程序会自动结束同时主从节点自动切换。然后我们还要再次手动开启MHA
  至此实验结束



运维网声明 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-614181-1-1.html 上篇帖子: Xtrabackup进行MySQL备份与恢复 下篇帖子: 3、MySQL的数据类型介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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