一、搭建两台虚拟机
master 1 :192.168.23.129,
master 2 :192.168.23.130,
分别安装好Mysql
具体请看前两篇文章。
centos 7mysql安装
centos 7配置keepalived
二、安装keepalived
三、配置主主复制
主主复制即在两台MySQL主机内都可以变更数据,而且另外一台主机也会做出相应的变更。聪明的你也许已经想到该怎么实现了。对,就是将两个主从复制有机合并起来就好了。只不过在配置的时候我们需要注意一些问题,例如,主键重复,server-id不能重复等等。
1、配置文件
--192.168.95.129
vim /etc/my.cnf
server-id=1 #任意自然数n,只要保证两台MySQL主机不重复就可以了。
log-bin=mysql-bin #开启二进制日志
relay-log=slave-relay-bin
auto_increment_increment=2 #步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=1 #起始值。一般填第n台主MySQL。此时为第一台主MySQL
--192.168.23.130
vim /etc/my.cnf
server-id=2
log-bin=mysql-bin
relay-log=slave-relay-bin
auto_increment_increment=2
auto_increment_offet=2
配置好后重启MySQL
2、开始构建主主复制
因为主主复制是两个主从复制组合一起,所以就从主从复制接着配置。
第一步:
在192.168.23.129中创建一个192.168.23.130主机中可以登录的MySQL用户
用户:root
密码:root
注意,密码默认不允许这么简单,需要手动进行修改
# 修改密码安全策略为低
set global validate_password_policy=LOW;
#修改密码长度为4
set global validate_password_length=4;
在安装mysql环境时,已经将root设为允许所有外来访问,因为这一步可以省略
# 给root赋权,允许远程登录
grant replication slave on *.* to ‘root’@’192.168.23.129’ identified by ‘root’;
# 刷新权限
flush privileges;
第二步:
在192.168.95.12查看二进制日志名和位置
show master status;
第三步:
告知二进制文件名与位置
在192.168.95.11中执行:
change master TO
master_HOST=’192.168.95.12’,
master_user=’mysql11’,
master_password=’mysql11’,
master_log_file=’mysql-bin.000084’,
master_log_pos=107;
完成主主复制配置
3、测试主主复制
#两个主机分别开启
start slave;
show slave status\G #查看主从复制是否配置成功
问题解决
-
当我们配置好MySQL主主同步时,是可以实现主主同步,但是重启机器后或者其他原因导致MySQL无法同步了。
-
如果是Slave_SQL_Running:no:
stop slave; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; start slave; show slave status\G
-
如果是slave_io_running:no
# Master_Log_File没有对应,记录下该命令下的两个值 show master status\G slave stop; # 进行修改 CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026', MASTER_LOG_POS=0; slave start; show slave status\G
-
-
复制虚拟机导致的UUID问题
# 首先要查找到mysql的安装地址 show variables like 'datadir'; # 然后通过mysql生成一个uuid进行记录等会用于修改 select uuid() # 然后进入datadir目录 cd /var/lib/mysql/ # 修改server-uuid vim auto.cnf #重启mysql service restart mysqld