一主两从一管理,一共四台设备
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