拓谱图
规划与要求
主机名称
操作系统
开启的模式
IP地址
Master-51
Centos7.2
开半同步复制
192.168.4.51
slave-52
Centos7.2
开半同步复制
192.168.4.52
slave-53
Centos7.2
开半同步复制
192.168.4.53
slave-54
Centos7.2
没有需求
192.168.4.54
slave-55
Centos7.2
没有需求
192.168.4.55
slave-56-Manager
Centos7.2
管理主机
192.168.4.56
要求:
一、配置所有数据节点主机之间可以互相以ssh密钥对方式认证登陆
二、配置manager56主机 无密码ssh登录 所有数据节点主机
三、配置主从同步
实施与部署环境
1.所有环境配置主机名和IP
2.所有机器实现无密码登入
3.所有机器安装perl包
4.slave-56安装机器的管理包
master51配置
1.修改51的配置文件
vim /etc/my.cnf
[mysqld]
plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1
server_id=51
log-bin=master51
binlog-format="mixed"
2.重起查看日志文件是否开启
[root@Master-51 ~]# systemctl restart mysqld
[root@Master-51 ~]# ls /var/lib/mysql/master51.*
3.清理日志
mysql> set global relay_log_purge=off;
show master status;
4.授权slave用户访问
5..查看master状态
mysql> show master status;
备用master52/53的配置
1.修改配置文件
vim /etc/my.cnf
[mysqld]
plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1
server_id=52/53
log-bin=master52/53
binlog-format="mixed"
2.重起并且查看日志是否生成
[root@slave-52 ~]# systemctl restart mysqld
[root@slave-52 ~]# ls /var/lib/mysql/master52.*
3.开启主从同步
mysql> set global relay_log_purge=off;
mysql> change master to
-> master_host="master的IP",
-> master_user="授权的用户",
-> master_password="授权的密码",
-> master_log_file="主的日志名称",
-> master_log_pos=偏移量;
4.开启slave
start slave;
5.查看是否主从同步成功
mysql -uroot -p123456 -e "show slave status\G" | grep -i YES
备用master54/55的配置
1.修改配置文件
vim /ect/my.cnf
server_id=54/55
2.开启主从同步
mysql> set global relay_log_purge=off;
mysql> change master to
-> master_host="master的IP",
-> master_user="授权的用户",
-> master_password="授权的密码",
-> master_log_file="主的日志名称",
-> master_log_pos=偏移量;
mysql> start slave;
mysql> show slave\G;
统一安装以下的包slave-51~55
yum -y install perl-* perl-DBD-mysql perl-DBI mha4mysql-node-0.56-0.el6.noarch.rpm
grant all on *.* to 'root'@'%' identified by '123456'; #slave--51上授权
manage-56配置
yum -y install perl-DBD-mysql perl-DBI mha4mysql-node-0.56-0.el6.noarch.rpm
yum -y install perl-ExtUtils-* perl-CPAN-*
tar -zxf mha4mysql-manager-0.56.tar.gz
cd mha4mysql-manager-0.56
make && make install
新的命令
作用
masterha_check_ssh
检查MHA的SSH配置状况
masterha_check_repl
检查MySQL复制状况
masterha_manger
启动MHA
masterha_check_status
检测MHA运行状态
masterha_master_monitor
检测master是否宕机
管理节点的配置
cp mha4mysql-manager-0.56/bin/* /usr/local/bin/
mkdir /etc/mha_manager/
cp samples/conf/app1.cnf /etc/mha_manager/ #配置文件
cp mha4mysql-manager-0.56/samples/scripts/master_ip_failover /usr/local/bin/ #配置VIP的脚本
编辑配置文件
[root@mysql-master]# vim /etc/mha_manager/app1.cnf
manager_workdir=/etc/mha_manager #工作的目录
manager_log=/etc/mha_manager/manager.log #日志文件的存放位置
master_ip_failover_script=/usr/local/bin/master_ip_failover #自动failover时候的切换脚本
ssh_user=root
ssh_port=22
repl_user=repluser #主从同步用户名
repl_password=123456 #主从同步密码
user=root #连接数据库服务器用户名
password=123456 #密码
[server1]
hostname=192.168.4.51
port=3306 #端口写可不写,默认监控3306
[server2]
hostname=192.168.4.52
candidate_master=1 #设置为候选的master
[server3]
hostname=192.168.4.53
candidate_master=1
[server4]
hostname=192.168.4.54
no_master=1 #不竞选master
[server5]
hostname=192.168.4.55
no_master=1
测试MHA的连通性
[root@mysql-master]# masterha_check_ssh --conf=/etc/mha_manager/app1.cnf 测试集群的连通
[info] Reading server configuration from /etc/mha_manager/app1.cnf..
[info] Starting SSH connection tests..
[info] All SSH connection tests passed successfully. #所有的都成功
配置集群的高可用
1.主库上手动部署VIP地址 192.168.4.100
[root@mysql-master]# ifconfig eth0:1 192.168.4.100/24 #在eth0上绑定地址
[root@mysql-master]# ifconfig eth0:1
eth0:1: flags=4163 mtu 1500
inet 192.168.4.100 netmask 255.255.255.0 broadcast 192.168.4.255
ether 52:54:00:43:7c:39 txqueuelen 1000 (Ethernet)
2.修改perl的脚本文件
vim /usr/local/bin/master_ip_failover
my vip = '192.168.4.100/24'; # 虚拟的IP地址 mykey = "1";
my ssh_start_vip = "/sbin/ifconfig eth0:key vip"; myssh_stop_vip = "/sbin/ifconfig eth0:$key down";
3.启动服务测试
masterha_manager --conf=/etc/mha_manager/app1.cnf --remove_dead_master_conf --ingnore_last_failover