一主两从一管理,一共四台设备
MHA的作用是做master的高可用,当主节点MySQL故障时,会将和主节点数据最接近的一个从节点提升为主节点,同时如果其他从节点有更新的数据也会同步到此“准主节点”上。如果在主节点有数据已经提交但是所有的从节点还未完成复制,则从节点提升为主节点后只能将此数据回退,没有别的办法。
准备事项:
1、同步时间
1
|
ntpdate 172.18.0.1 |
2、配置主机域名,在主节点即node1上操作
1
2
3
4
5
6
7
8
|
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无密钥验证
1
2
3
4
5
6
|
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、配置主从复制集群
1
2
3
4
5
6
7
8
9
|
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
#主节点也要配置中继日志,因为主节点故障再恢复时就会称为从节点
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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
|
开启服务
1
|
systemctl start mariadb.service |
2、在主节点授权复制账号
1
|
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser' @ '192.168.1.%' IDENTIFIED BY 'centos' ;
|
主节点授权管理设备的管理账号
1
|
GRANT ALL ON *.* TO 'mhaadmin' @ '192.168.1.%' IDENTIFIED BY 'centos' ;
|
写入磁盘
1
|
FLUSH PRIVILEGES; |
3、在从节点配置
1
2
3
4
5
|
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包
1
2
|
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包
1
|
yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm
|
6、在manager上配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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、检查配置并启动服务
1
2
3
4
5
6
|
检查 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、测试
此时模拟主节点故障
1
2
3
|
SHOW MASTER STATUS; SHOW SLAVE STATUS; #在从节点查看从节点信息,此时有一个从节点已经升级为主节点 |
9、修复原主节点
1
2
3
4
5
6
7
8
9
10
11
|
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上检查复制功能
1
2
3
4
5
|
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
1
2
3
|
nohup masterha_manager --conf= /etc/masterha/app1 .cnf &> /data/masterha/app1/manager .log &
#在后台执行,并剥离与当前终端的关系 #当主节点再次down掉,此程序会自动结束同时主从节点自动切换。然后我们还要再次手动开启MHA |
至此实验结束
本文转自 a_pan 51CTO博客,原文链接:http://blog.51cto.com/panpangao/1981848