目录
一、创建一主两从集群
安装好mysql (rpm包形式)
配置文件
vim /etc/my.cnf
server_id=1 #vm2就改成2递增
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
log_bin=binlog
启动服务
systemctl start mysqld
配置master
cat /var/log/mysqld.log 查看初始密码
修改初始密码等
mysql -p
alter user root@localhost identified by 'Yl20010801+';
grant replication slave on *.* to yyl@'%' identified by 'Yl20010801+';
slave配置:
根据上述更改配置等
change master to master_host='192.168.189.111', master_user='repl', master_password='Yl20010801+', master_auto_position=1;
start slave;
show slave status\G;
vm3节点的配置以此类推
测试:
create database test;
use test;
create table userdb(
> username varchar(25) not null,
> passworf varchar(50) not null);
insert into userdb values ('user1','111');
select * from userdb;
二、MHA部署
vm4上安装管理端软件
cd MHA-7/
yum install -y *.rpm
管理端配置ssh免密
ssh-keygen
ssh-copy-id vm4
把密钥复制到各节点
scp -r .ssh/ vm1:
scp -r .ssh/ vm2:
scp -r .ssh/ vm3:
测试:
复制客户端软件
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm vm1:
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm vm2:
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm vm3:
vm1、2、3上安装客户端软件
yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm
MHA配置
vm4:
mkdir /etc/masterha
vim /etc/masterha/app1.cnf
[server default]
user=root #mysql管理员
password=Yl20010801+ #mysql管理员密码
ssh_user=root #ssh免密用户
repl_user=repl #mysql主从复制用户
repl_password=Yl20010801+
master_binlog_dir=/var/lib/mysql #mysql数据库目录
remote_workdir=/tmp
secondary_check_script= masterha_secondary_check -s 192.168.189.112 -s 192.168.189.113
ping_interval=3
# master_ip_failover_script= /script/masterha/master_ip_failover
# shutdown_script= /script/masterha/power_manager
# report_script= /script/masterha/send_report
# master_ip_online_change_script= /script/masterha/master_ip_online_change
manager_workdir=/etc/masterha/app1
manager_log=/etc/masterha/app1/manager.log
[server1]
hostname=192.168.189.111
candidate_master=1
check_repl_delay=0
[server2]
hostname=192.168.189.112
candidate_master=1
check_repl_delay=0
[server3]
hostname=192.168.189.113
no_master=1
在master上设置mysql 管理员权限,slave节点会自动同步
grant all on *.* to root@'%' identified by 'Yl20010801+';
检测各节点ssh免密连接
masterha_check_ssh --conf=/etc/masterha/app1.cnf
检测主从复制集群状态
masterha_check_repl --conf=/etc/masterha/app1.cnf
三、故障切换
手动切换(master正常)
masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --new_master_host=192.168.189.112 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000
手动切换(master故障)
手动停止master节点上的msql服务
systemctl stop mysqld.service
masterha_master_switch --master_state=dead --conf=/etc/masterha/app1.cnf --dead_master_host=192.168.189.112 --dead_master_port=3306 --new_master_host=192.168.189.111 --new_master_port=3306 --ignore_last_failover
故障节点需要手动修复,重新加入主从集群
systemctl start mysqld.service
change master to master_host='192.168.189.111', master_user='repl', master_password='Yl20010801+', master_auto_position=1;
自动切换
故障切换后会生成lock文件,需要手动删除
cd /etc/masterha/app1/
rm -f app1.failover.complete
在进行自动切换之前,必须保证主从集群正常,一主两从加入故障切换脚本
vim /etc/masterha/app1.cnf
master_ip_failover_script= /usr/local/bin/master_ip_failover
master_ip_online_change_script= /usr/local/bin/master_ip_online_change
需要有可执行权限
cd /usr/local/bin/
chmod +x *
按需修改vip和网卡名称 启动manger程序,并打入后台运行,完成切换任务后进程会自动退出
vim /usr/local/bin/master_ip_failover
vim /usr/local/bin/master_ip_online_change
masterha_manager --conf=/etc/masterha/app1.cnf &
关闭master以后,会自动发起故障切换,mha管理器在完成切换后自动退出程序。查看故障切换日志
systemctl stop mysqld.service