
1.
2.
3.
4.
5.
6.
MHA 搭建
简介:
MHA(MasterHigh Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公
司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成
数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Manager可以单独部署在一台独立的机器上管理多个master-
slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故
障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。
从宕机崩溃的master保存二进制日志事件(binlog events);
识别含有最新更新的slave;
应用差异的中继日志(relay log)到其他的slave;
应用从master保存的二进制日志事件(binlog events);
提升一个slave为新的master;
使其他的slave连接新的master进行复制;
安装mysql
master:10.0.5.8
slave1:10.0.5.9
slave2:10.0.5.10

monitor:10.0.5.7
配置免密登录
[root@DB-master ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:
ed:e8:3e:cf:f4:a3:6c:98:df:01:52:ec:fa:41:3f:ad root@DB-master
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . |
| o |
| + |
| S = |
| * o . |
| oo+ + . |
| .+=.+.+ |
| .o=B.E. |
+-----------------+
[root@DB-master ~]# cd .ssh/
[root@DB-master .ssh]# ll
total 8
-rw-------. 1 root root 1675 Jul 4 02:28 id_rsa
-rw-r--r--. 1 root root 396 Jul 4 02:28 id_rsa.pub
[root@DB-master .ssh]# cat id_rsa.pub >> authorized_keys
[root@DB-master .ssh]# ll
total 12
-rw-------. 1 root root 1675 Jul 4 02:28 id_rsa
-rw-r--r--. 1 root root 396 Jul 4 02:28 id_rsa.pub
-rw-r--r--. 1 root root 396 Jul 4 02:29 authorized_keys
[root@DB-master .ssh]# chmod 777 authorized_keys
[root@DB-master .ssh]# cat authorized_keys
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDGAGBmHPP2Q4s2hU5eF0drPDB9dwssQqZqmfTIfqIqo0M
/sESJ7lRXN3jc7fZ2oW2GqExRcZVNUhBBpNAd1UL7w3yH+aKlkGeuBILmm+Bh2aErCisC
/Hhut5c69D6LF1nTCMCTZlgWYK+Z8v4Jik4XB4A9ZvxkSUfU70pQv9F4F5UWar0lIhuJd3HsHhS
A3KYolmdhjVYpNMVsisBseiGErIGn48qux133pirGROq23Dg0Oy9HB7o+qKSRLFrGVjVHZaob0J
NNYhwyvsIsjIQz4FF
/l8mbwSJ8PGUNFEavQLxWXb+WxEzJvCKhVzfAitHhi43TgTIET9PZjdEISVGF root@DB-
master
[root@DB-master .ssh]#

将所有的 id_rsa.pub 整合到一个authorized_keys 并scp到每台设备的 /root/.ssh/下
[root@DB-monitor .ssh]# cat id_rsa.pub >>
authorized_keys
[root@DB-monitor .ssh]# cat authorized_keys
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDGAGBmHPP2Q4s2hU5eF0drPDB9dwssQqZqmfTIfqIqo0M
/sESJ7lRXN3jc7fZ2oW2GqExRcZVNUhBBpNAd1UL7w3yH+aKlkGeuBILmm+Bh2aErCisC
/Hhut5c69D6LF1nTCMCTZlgWYK+Z8v4Jik4XB4A9ZvxkSUfU70pQv9F4F5UWar0lIhuJd3HsHhS
A3KYolmdhjVYpNMVsisBseiGErIGn48qux133pirGROq23Dg0Oy9HB7o+qKSRLFrGVjVHZaob0J
NNYhwyvsIsjIQz4FF
/l8mbwSJ8PGUNFEavQLxWXb+WxEzJvCKhVzfAitHhi43TgTIET9PZjdEISVGF root@DB-
master
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDdu70
/kq46gNRLYKTXJoBBPzkgqZWdu45VOM8c9BN9PeZdA1A67H1Pod6Keo7J9WuYdBPGij5E0AHwLd
/9Dnt/6LUrL2MhxmRONzvUf5AHTZZRBTTmryJAQx9B
/EZrDgzmp0MFA7UKVbk+bwqgeQP4sSjhfWKrt5s/yqZjerC7mzkgwg8S
/FQvFiXQOTWblv2AtzmfAW5wP4NuM0VMfHjjRvsO3El+RUFKgnBb5ilEZAGEXAobVmXiRLJyxKH
2TbnjOpfBDbvcz70CDKdtRk2P3qkvcvHX4jXnb4OQgzSFVTCoO0GaJd3nYcMPj9c4GDZRXw
/V3snNFZltD3rHbJ9l root@DB-slave1
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDG74GPwVhJrHLWQIs8fMCHtFRQI24JQgIqtyKBL2qTU+v
7895D1eQlenKV/mE1BcDF2qiTuxdhZoyi9qxbNxzfYviTqQDLTcz+y1jSc6/KUqUBC
/v6guwOMOlHNJtJ2JwwfLeZI0v+eazCOpgEZFjW31V9s0uuZjrwM1D7MZwZAyATt3qLgYkyDYW9
xyR4lMniBL+B7CCwdGtQaYnga1oY3QccbPZQmMAffwoZ7/Iqx0A2op+80n2lHDUgcHxEaYPg+D
/xbzkJBhoFb+MuuqLUWshqUgErj9hYlzGQlhkAfCd+i4vvIPOxHVN+gZI8GAotPXodmeGiIbihM
LCtUCvt root@DB-slave2
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCblLp0MawXXK8YM83vsPScVfN3c6Rm+9dsI
/eLcSmkKB1aiiMeT+gbRdz81RTCvcqjFdl+6AGcpRYd67+SAxlVdtMe0bfrZuSgBxRarpsCkywB
6TjW3BZFfvQCy7TSghBHFVP5Lro3oahovtOzuP4M73GcG4/pqaOIsnEa9
/JlH0pZtORGHfmmcMv7tOG+Rue65gwKFpjgaZEd4VMwTj4+w4FRpr8YiQWqcRqhU
/baiOZ2dLarygMu1HWk9QOiMZ5pjlV5isHauT7C2v2IR24owBHESou8oXd0MjiNun7
/OHVCh9BTOG0eT6S2TfXLZXYGAIxhcGHB66+mZXsXlN85 root@DB-monitor
[root@DB-monitor .ssh]#
[root@DB-monitor .ssh]#
[root@DB-monitor .ssh]#
[root@DB-monitor .ssh]# scp authorized_keys [email protected]:/root/.
ssh/
[root@DB-monitor .ssh]# scp authorized_keys [email protected]:/root/.
ssh/
[root@DB-monitor .ssh]# scp authorized_keys [email protected]:/root/.
ssh/
[root@DB-monitor .ssh]# ssh [email protected]
Last login: Wed Jul 4 02:36:23 2018 from 10.0.5.7
[root@DB-master ~]# logout
Connection to 10.0.5.8 closed.
[root@DB-monitor .ssh]# ssh [email protected]
Last failed login: Wed Jul 4 02:38:04 UTC 2018 from 112.85.42.144 on ssh:
notty
There were 7 failed login attempts since the last successful login.
Last login: Wed Jul 4 02:36:52 2018 from 10.0.5.8
[root@DB-slave1 ~]# logout
Connection to 10.0.5.9 closed.

[root@DB-monitor .ssh]# ssh [email protected]
Last failed login: Wed Jul 4 02:38:08 UTC 2018 from 112.85.42.144 on ssh:
notty
There were 8 failed login attempts since the last successful login.
Last login: Wed Jul 4 02:36:57 2018 from 10.0.5.8
[root@DB-slave2 ~]# logout
Connection to 10.0.5.10 closed.
[root@DB-monitor .ssh]#
MYSQL-master设备的my.cnf配置
[mysqld]
basedir = /usr/local/mysql
port = 3306
socket = /tmp/mysql.sock
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/mysql.pid
log-error = /usr/local/mysql/data/mysql.err
server-id = 1
auto_increment_offset = 1
auto_increment_increment = 1
log-bin = mysql-bin
replicate-ignore-db = mysql
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
MYSQL-slave1 配置(备主)

[mysqld]
basedir = /usr/local/mysql
port = 3306
socket = /tmp/mysql.sock
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/mysql.pid
log-error = /usr/local/mysql/data/mysql.err
server-id = 2
auto_increment_offset = 2
auto_increment_increment = 2
log-bin = mysql-bin
replicate-ignore-db = mysql
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
MYSQL-slave2设备配置
[mysqld]
basedir = /usr/local/mysql
port = 3306
socket = /tmp/mysql.sock
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/mysql.pid
log-error = /usr/local/mysql/data/mysql.err
server-id = 3
auto_increment_offset = 3
auto_increment_increment = 3
#log-bin = mysql-bin
replicate-ignore-db = mysql
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
初始化mysql