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