1.数据的迁移:先导库,(将master1中的所有库导入到master2中)
master1上备份: mysqldump -uroot -p123 -A >/opt/mysql.sql
master2上导入: mysql -uroot -p123
2.更改两台master的主配置文件:
log-bin = mysql-bin
binlog_format = mixed
server-id = 1 :此处两台服务器id不能相同
relay-log = relay-bin
relay-log-index = slave-relay-bin.index
auto-increment-increment = 2
auto-increment-offset = 1 :此处有不同,具体可以看最下面的介绍
3.重启两台mysql服务
4.两台master都创建授权用户:
grant replication slave on *.* to rep@'192.168.164.%' identified by '123';
mysql> flush privileges;
5.查看master1的当前binlog状态信息
show master status;
6.在master2上将master1设为自已的主服务器并开启slave功能
mysql> change master to master_host='192.168.164.10',master_user='rep',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=609; 此处master_log_pos参数值填写master1上show master status的值
mysql> start slave;
7.查看master2上从的状态,以下两个值必须为yes,代表从服务器能正常连接主服务器
mysql>show slave status\G;
Slave_SQL_Running:Yes
Slave_IO_Running:Yes
8.查看master2的当前binlog状态信息
show master status;
9.在master1上将master2设为自已的主服务器并开启slave功能
mysql> change master to master_host='192.168.164.20',master_user='rep',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=154; 此处master_log_pos参数值填写master2上show master status的值
mysql> start slave;
10.查看从的状态,以下两个值必须为yes,代表从服务器能正常连接主服务器
mysql>show slave status\G;
Slave_SQL_Running:Yes
Slave_IO_Running:Yes
注意:如果是克隆的虚拟机,需要更改uuid,
删除mysql/data目录下的auto.cnf文件,重启mysql后即可正常进行主主配置操作。
/usr/local/mysql/data/auto.cnf
11.为了解决多台mysql主节点的群集如何主键的冲突:需添加auto_increment_increment,auto_increment_offset ,两个参数的具体含义如下:
auto_increment_increment(自增步长): 以实例中有几台服务器节点,有几台设为几
auto_increment_offset(自增起始值):群集所有节点从1开始,一直添加到服务器节点的个数的数字
比如三台mysql节点:
master1:auto_increment_increment=3
auto_increment_offset=1
Master2:auto_increment_increment=3
auto_increment_offset=2
Master3: auto_increment_increment=3
auto_increment_offset=3
1.安装内核开发包:
yum -y install kernel-devel openssl-devel popt-devel
2.安装keepalived(每台mysql都需安装):
wget https://www.keepalived.org/software/keepalived-2.0.20.tar.gz
3.解压:
tar zxf keepalived-2.0.20.tar.gz
4.配置(会自动生成/etc/init.d/keepalived脚本文件,但还需要手动添加为系统服务):
cd keepalived-2.0.20/
./configure --prefix=/ && make && make install
5.配置keepalived,修改/etc/keepalived/keepalived.conf:
router_id mysql-1 每台不相同
vrrp_instance VI_1 相同实例相同,本实验两台keepalived相同
state BACKUP :做双主时两台都要填BACKUP(可以避免脑裂),主从时主为MASTER,从为BACKUP。()
virtual_router_id 51 :相同的实例需要相同,(主从,主主的两台需相同)同一网络内不同实例必须不同。
priority 100 :优先级,越大越优先(两台不相同)
nopreempt 不抢占,即允许一个priority比较低的节点作为master,即使有priority更高的节点启动
virtual_ipaddress { 192.168.164.100} :设置虚拟ip
virtual_server 192.168.164.100 3306 :设置虚拟服务器及端口(两台keepavlied相同)
lb_kind DR :设置LVS实现负载均衡的机制,有NAT、TUN、DR三个模式可选
protocol TCP ://指定转发协议类型,有TCP和UDP两种
real_server 192.168.164.10 3306 :配置服务节点1,(服务器节点真实ip),两台不同的keepalived服务器i配置不同的本机ip地址
weight 3 ://配置服务节点的权值,越大越高
notify_down /etc/keepalived/bin/mysql.sh 检测到mysql服务down之后,执行脚本(脚本目录需手动创建,脚本内容看文末)
TCP_CHECK {
connect_timeout 3 //连接超时时间
nb_get_retry 3 //重连次数
delay_before_retry 3 //重连间隔时间
connect_port 3306 //健康检查端口
}
具体设置下图:
6.此脚本用来当mysql服务down掉后,自动杀死keepalived服务,实现地址漂移
cat /etc/keepalived/bin/mysql.sh
#!/bin/bash
pkill keepalived
12.至此两台mysql互为主从,mysql主主同步+keepalived高可用 配置成功