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

[经验分享] mysql高可用方案之MHA

[复制链接]

尚未签到

发表于 2018-9-28 07:51:22 | 显示全部楼层 |阅读模式
  环境规划:
  节点说明    主机名   IP地址
  管理节点   tong3   192.168.1.249
  主节点     tong2   192.168.1.248
  主节点    tong1   192.168.1.247
  mysql dba技术群 378190849
  武汉-linux运维群 236415619
  1.网络和主机名配置
  设置每个主机的IP地址和/etc/hosts文件互相解析
  [root@tong1 ~]# cat /etc/hosts
  192.168.1.247 tong1
  192.168.1.248 tong2
  192.168.1.249 tong3
  [root@tong1 ~]# ping tong1 -c1         --网络必须ping通
  PING tong1 (192.168.1.247) 56(84) bytes of data.
  64 bytes from localhost (192.168.1.247): icmp_seq=1 ttl=64 time=0.021 ms
  --- tong1 ping statistics ---
  1 packets transmitted, 1 received, 0% packet loss, time 0ms
  rtt min/avg/max/mdev = 0.021/0.021/0.021/0.000 ms
  [root@tong1 ~]# ping tong2 -c1
  PING tong2 (192.168.1.248) 56(84) bytes of data.
  64 bytes from tong2 (192.168.1.248): icmp_seq=1 ttl=64 time=0.109 ms
  --- tong2 ping statistics ---
  1 packets transmitted, 1 received, 0% packet loss, time 0ms
  rtt min/avg/max/mdev = 0.109/0.109/0.109/0.000 ms
  [root@tong1 ~]# ping tong3 -c1
  PING tong3 (192.168.1.249) 56(84) bytes of data.
  64 bytes from tong3 (192.168.1.249): icmp_seq=1 ttl=64 time=0.124 ms
  --- tong3 ping statistics ---
  1 packets transmitted, 1 received, 0% packet loss, time 0ms
  rtt min/avg/max/mdev = 0.124/0.124/0.124/0.000 ms
  [root@tong1 ~]#
  2.安装mha管理软件mha manager
  tong3管理节点:
  [root@tong3 ~]# yum install  perl-DBD-MySQL cpan  --安装perl工具
  [root@tong3 ~]# tar xvf mha4mysql-manager-0.53.tar.gz  -C /usr/local/
  [root@tong3 ~]# cd /usr/local/mha4mysql-manager-0.53/
  [root@tong3 mha4mysql-manager-0.53]# perl Makefile.PL
  [root@tong3 mha4mysql-manager-0.53]# echo $?
  0
  [root@tong3 mha4mysql-manager-0.53]# make && make install
  [root@tong3 mha4mysql-manager-0.53]# echo $?
  0
  [root@tong3 mha4mysql-manager-0.53]#
  3.在各数据节点安装mha node
  [root@tong2 ~]# tar xvf mha4mysql-node-0.53.tar.gz
  [root@tong2 ~]# cd mha4mysql-node-0.53
  [root@tong2 mha4mysql-node-0.53]# yum install perl-DBD-mysql cpan -y
  [root@tong2 mha4mysql-node-0.53]# perl Makefile.PL
  [root@tong2 mha4mysql-node-0.53]# make && make install
  [root@tong2 mha4mysql-node-0.53]#  echo $?
  0
  [root@tong2 mha4mysql-node-0.53]#
  4.各节点ssh互相信任
  [root@tong3 ~]# ssh-keygen  -t dsa
  [root@tong3 ~]# cd .ssh

  [root@tong3 .ssh]# cat>  [root@tong3 .ssh]# scp 192.168.1.247:/root/.ssh/id_dsa.pub 247
  [root@tong3 .ssh]# scp 192.168.1.248:/root/.ssh/id_dsa.pub 248
  [root@tong3 .ssh]# cat 248  247 >> authorized_keys
  [root@tong3 .ssh]# scp authorized_keys 192.168.1.248:/root/.ssh/
  authorized_keys                                                                                                                                    100% 1800     1.8KB/s   00:00
  [root@tong3 .ssh]# scp authorized_keys 192.168.1.247:/root/.ssh/
  root@192.168.1.247's password:
  authorized_keys                                                                                                                                    100% 1800     1.8KB/s   00:00
  [root@tong3 .ssh]# ssh tong1 date
  Tue Apr 28 12:57:02 CST 2015
  [root@tong3 .ssh]# ssh tong2 date
  Tue Apr 28 12:59:57 CST 2015
  [root@tong3 .ssh]# ssh tong3 date
  Tue Apr 28 12:57:25 CST 2015
  [root@tong3 .ssh]#
  5.在管理节点编辑配置文件
  [root@tong3 .ssh]# mkdir /etc/mysqlmha
  [root@tong3 .ssh]# cd /etc/mysqlmha/
  [root@tong3 mysqlmha]# cp -a /usr/local/mha4mysql-manager-0.53/samples/* .
  [root@tong3 mysqlmha]# vim conf/app1.cnf
  [server default]
  manager_workdir=/var/log/masterha/app1
  manager_log=/var/log/masterha/app1/manager.log
  user=root1                --远程登陆用户
  password=system
  ssh_user=root
  repl_user=repl_user       --复制用户
  repl_password=system!#%246
  ping_interval=1       --心跳检测
  [server1]
  hostname=192.168.1.249
  master_binlog_dir="/usr/local/mysql-5.6.23/data/"
  # candidate_master=1
  no_master=1          --不能切换成主数据库
  [server2]
  hostname=192.168.1.248
  master_binlog_dir="/usr/local/mysql-5.6.23/data/"     --二进制日志文件存放
  candidate_master=1     --可以切换成主数据库
  [server4]
  hostname=192.168.1.247
  master_binlog_dir="/usr/local/mysql-5.6.23/data/"
  candidate_master=1    -可以切换成主数据库
  [root@tong3 ~]# masterha_check_ssh --conf=/etc/mysqlmha/conf/app1.cnf
  Tue Apr 28 15:39:21 2015 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
  Tue Apr 28 15:39:21 2015 - [info] Reading application default configurations from /etc/mysqlmha/conf/app1.cnf..
  Tue Apr 28 15:39:21 2015 - [info] Reading server configurations from /etc/mysqlmha/conf/app1.cnf..
  Tue Apr 28 15:39:21 2015 - [info] Starting SSH connection tests..
  Tue Apr 28 15:39:22 2015 - [debug]
  Tue Apr 28 15:39:21 2015 - [debug]  Connecting via SSH from root@192.168.1.249(192.168.1.249:22) to root@192.168.1.248(192.168.1.248:22)..
  Tue Apr 28 15:39:22 2015 - [debug]   ok.
  Tue Apr 28 15:39:22 2015 - [debug]  Connecting via SSH from root@192.168.1.249(192.168.1.249:22) to root@192.168.1.247(192.168.1.247:22)..
  Tue Apr 28 15:39:22 2015 - [debug]   ok.
  Tue Apr 28 15:39:23 2015 - [debug]
  Tue Apr 28 15:39:22 2015 - [debug]  Connecting via SSH from root@192.168.1.248(192.168.1.248:22) to root@192.168.1.249(192.168.1.249:22)..
  Tue Apr 28 15:39:22 2015 - [debug]   ok.
  Tue Apr 28 15:39:22 2015 - [debug]  Connecting via SSH from root@192.168.1.248(192.168.1.248:22) to root@192.168.1.247(192.168.1.247:22)..
  Tue Apr 28 15:39:23 2015 - [debug]   ok.
  Tue Apr 28 15:39:24 2015 - [debug]
  Tue Apr 28 15:39:22 2015 - [debug]  Connecting via SSH from root@192.168.1.247(192.168.1.247:22) to root@192.168.1.249(192.168.1.249:22)..
  Tue Apr 28 15:39:23 2015 - [debug]   ok.
  Tue Apr 28 15:39:23 2015 - [debug]  Connecting via SSH from root@192.168.1.247(192.168.1.247:22) to root@192.168.1.248(192.168.1.248:22)..
  Tue Apr 28 15:39:23 2015 - [debug]   ok.
  Tue Apr 28 15:39:24 2015 - [info] All SSH connection tests passed successfully.
  [root@tong3 ~]#
  6.修改数据库配置文件和创建用户
  在所有节点创建相同的用户:

  mysql> grant all privileges on *.* to root1@'192.168.1.%'>
  mysql> grant replication slave,replication client on *.* to repl_user@'192.168.1.%'>  tong1节点:
  [root@tong1 ~]# vim /etc/my.cnf
  basedir = /usr/local/mysql-5.6.23
  datadir = /usr/local/mysql-5.6.23/data
  port = 3306
  server_id = 20
  socket = /tmp/mysql.sock
  replicate-do-db=tong
  replicate-ignore-db=mysql
  log-bin=mysql-bin
  log-bin-index=mysql-bin-index
  auto_increment_offset=1
  auto_increment_increment=2
  relay_log_purge=0
  read-only=1
  [root@tong1 ~]#
  tong2节点:
  [root@tong2 ~]# vim /etc/my.cnf
  basedir = /usr/local/mysql-5.6.23
  datadir = /usr/local/mysql-5.6.23/data
  port = 3306
  server_id = 10
  socket = /tmp/mysql.sock
  replicate-do-db=tong
  replicate-ignore-db=mysql
  log-bin=mysql-bin
  log-bin-index=mysql-bin-index
  auto_increment_offset=2
  auto_increment_increment=2
  read-only=1
  relay_log_purge=0
  [root@tong2 ~]#
  tong3节点:
  [root@tong3 ~]# vim /etc/my.cnf
  basedir = /usr/local/mysql-5.6.23
  datadir = /usr/local/mysql-5.6.23/data
  port = 3306
  server_id = 30
  socket = /tmp/mysql.sock
  replicate-do-db=tong
  replicate-ignore-db=mysql
  [root@tong3 ~]#
  7.将tong1和tong2搭建为主主模式
  tong1主机:
  [root@tong1 .ssh]# mysql -u root -p
  Enter password:
  Welcome to the MySQL monitor.  Commands end with ; or \g.

  Your MySQL connection>  Server version: 5.6.23-log MySQL Community Server (GPL)
  Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
  Oracle is a registered trademark of Oracle Corporation and/or its
  affiliates. Other names may be trademarks of their respective
  owners.
  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  mysql>  change master to master_host='192.168.1.248',master_port=3306,master_user='repl_user',master_password='system!#%246',master_log_file='mysql-bin.000010',master_log_pos=120;
  Query OK, 0 rows affected, 2 warnings (0.45 sec)
  mysql> start slave;
  Query OK, 0 rows affected (0.05 sec)
  mysql>
  tong1主机:
  [root@tong2 .ssh]# mysql -u root -p
  Enter password:
  Welcome to the MySQL monitor.  Commands end with ; or \g.

  Your MySQL connection>  Server version: 5.6.23-log MySQL Community Server (GPL)
  Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
  Oracle is a registered trademark of Oracle Corporation and/or its
  affiliates. Other names may be trademarks of their respective
  owners.
  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  mysql> change master to master_host='192.168.1.247',master_port=3306,master_user='repl_user',master_password='system!#%246',master_log_file='mysql-bin.000010',master_log_pos=120;
  Query OK, 0 rows affected, 2 warnings (0.45 sec)
  mysql> start slave;
  Query OK, 0 rows affected (0.05 sec)
  mysql>
  8.检查复制是否有错
  [root@tong3 ~]# masterha_check_repl --conf=/etc/mysqlmha/conf/app1.cnf
  Tue Apr 28 15:53:23 2015 - [info] Checking replication health on 192.168.1.249..
  Tue Apr 28 15:53:23 2015 - [info]  ok.
  Tue Apr 28 15:53:23 2015 - [info] Checking replication health on 192.168.1.248..
  Tue Apr 28 15:53:23 2015 - [info]  ok.
  Tue Apr 28 15:53:23 2015 - [warning] master_ip_failover_script is not defined.
  Tue Apr 28 15:53:23 2015 - [warning] shutdown_script is not defined.
  Tue Apr 28 15:53:23 2015 - [info] Got exit code 0 (Not master dead).
  MySQL Replication Health is OK.
  [root@tong3 mysqlmha]# nohup masterha_manager --conf=/etc/mysqlmha/conf/app1.cnf  >> /tmp/mha_manager 2>&1 &
  [root@tong3 mysqlmha]# jobs
  [1]+  Running                 nohup masterha_manager --conf=/etc/mysqlmha/conf/app1.cnf >> /tmp/mha_manager 2>&1 &
  [root@tong3 mysqlmha]# masterha_check_status --conf=/etc/mysqlmha/conf/app1.cnf
  app1 (pid:24330) is running(0:PING_OK), master:192.168.1.247  --此时主节点在247服务器上
  [root@tong3 mysqlmha]#
  9.故障测试
  tong1节点:
  [root@tong1 ~]# /etc/init.d/mysqld stop       --停掉tong1节点的数据库
  Shutting down MySQL............ SUCCESS!
  [root@tong2 ~]# /etc/init.d/mysqld start   --节点必须启动才能做切换
  Starting MySQL. SUCCESS!
  [root@tong2 ~]#
  查看tong2主机的日志状态,将tong1节点必须要同步到tong2节点上才可以切换(change master to master_host='192.168.1.248,master_ ....................)
  tong3节点:
  [root@tong3 mysqlmha]# rm -rf /var/log/masterha/app1/app1.failover.complete
  [1]+  Done                    nohup masterha_manager --conf=/etc/mysqlmha/conf/app1.cnf >> /tmp/mha_manager 2>&1          --必须删除管理节点的监控文件
  [root@tong3 mysqlmha]# nohup masterha_manager --conf=/etc/mysqlmha/conf/app1.cnf  >> /tmp/mha_manager 2>&1 &
  [root@tong3 ~]# masterha_check_status --conf=/etc/mysqlmha/conf/app1.cnf
  app1 (pid:27870) is running(0:PING_OK), master:192.168.1.248
  [root@tong3 ~]#


运维网声明 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-603009-1-1.html 上篇帖子: linux下mysql的安装 下篇帖子: MMM实现mysql高可用性
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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