MHA实现MySQL的高可用

MHA:Master High Availability,对主节点进行监控,可实现自动故障转移至其他从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主二从,即一台充当master,一台充当备用master,另外一台充当从数据库,出于机器成本的考虑,淘宝进行了改造,目前淘宝TMHA已经一主一从。

MHA架构

MHA实现MySQL的高可用

MHA的工作原理

MHA实现MySQL的高可用


MHA是由一台manager服务器远程监控主服务器,当主服务器挂了提升一台从服务器作为主服务器。
当主节点挂了,manager首先要查看哪台从节点,同步的数据最多,然后提升同步最多的从节点为主节点,再将其余的MySQL服务器对他做从节点。
如果原主节点没彻底死透,manager会让新的主机通过ssh协议远程连接到原先的主节点,拉取二进制日志进行同步。如果主节死透了那就放弃。  

MHA搭建 环境准备 一、准备4台主机,管理节点1台,主节点MySQL服务器1台,从节点MySQL服务器2台 主机IP
Manager   192.168.73.111  
Master   192.168.73.110  
Slave1   192.168.73.112  
Slave2   192.168.73.113  
二、将Manager管理节点配置为时间服务器,向所有MySQL服务器提供时间同步。

1.安装chrony服务

[root@Manager ~]# yum install -y chrony

2.修改chrony配置文件

[root@Manager ~]# vim /etc/chrony.conf server 172.22.0.1 iburst allow 192.168.0.0/16 local stratum 10

3.启动chrony服务

[root@Manager ~]# systemctl start chronyd

4.将MySQL服务器与Manager服务器进行时间同步
4.1在所有MySQL主机上修改配置文件并启动,并启动服务

[root@Master ~]# sed -i '/^server 0/i server 192.168.73.111 iburst' /etc/chrony.conf [root@Master ~]# systemctl start chronyd

4.2确认时间同步

[root@Master ~]# chronyc sources -v 210 Number of sources = 1 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 192.168.73.111 4 6 377 54 +25us[ +41us] +/- 105ms 三、配置ssh为的密钥认证登陆

当主节点宕机,manager会让从节点通过ssh协议去尝试连接主节点,并拉取二进制日志,所以要时用密钥的认证方式让从节点登陆到主节点拉取数据。
1.在manager服务器上生成私钥文件

[root@Manager ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:yAvC2PJUlRyAf1udlrVXzmIsUljTdUdW6X6FVpQ3Ajo root@Manager The key's randomart image is: +---[RSA 2048]----+ | ..ooo ++. +%| | . .o o oo.=*| | .. E = oo*o| | + ...... B o B.+| |o = ..ooS. . =...| | + . ... ..| | . . .| | | | | +----[SHA256]-----+

2.将公钥文件复制给自己

[root@Manager ~]# ssh-copy-id 127.0.0.1

3.将整个~/.ssh目录复制给所有的MySQL主机

[root@Manager ~]# scp -r ~/.ssh 192.168.73.110:/root

至此所有环境准备完毕

一、配置主从复制 主节点配置

1.修改配置文件

[root@Master ~]# vim /etc/my.cnf [mysqld] server-id=1 log-bin binlog-format=row skip_name_resolve

2.启动数据库服务

[root@Master ~]# systemctl start mariadb

3.创建主从复制账号

[root@Master ~]# mysql -e "GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.73.%' IDENTIFIED BY 'CentOS';"

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3c52e500fa419ba0c71389591b0c81c8.html