双主双从部署
环境
四台mysql服务器master-1,master-2,slave-1,slave-2.
配置
M–M
master-1
vim /etc/my.cnf
[validate_password=off]
log-bin=my1log
server-id=1
gtid_mode=ON //开启gtid
enforce_gtid_consistency=1
重新启动数据库服务
systemctl restart mysqld
创建授权账户
grant all on *.* to 'slave'@'%' identified by 'password';
master-2
log-bin=my2log
server-id =2
gtid_mode=ON
enforce_gtid_consistency=1
重新启动数据库服务
systemctl restart mysqld
创建授权账户
grant all on *.* to 'slave'@'%' identified by 'password';
查找配置文件
> help change master to
找到相关信息
按要求编辑
>edit
change master to
master_host='master1',
master_user='授权用户',
master_password='授权密码',
master_auto_position=1;
编辑完成后启动slave
>start slave;
>show slave status\G
看到如上图效果,说明配置成功!
注意,相同的操作再master-1里也要操作一遍
按要求编辑
>edit
change master to
master_host='master2',
master_user='授权用户',
master_password='授权密码',
master_auto_position=1;
编辑完成后启动slave
>start slave;
>show slave status\G
看到如上图的效果,说明双主配置已经配置成功!
S–S
首先备份master-1
的所有数据
mysqldump -u root -p'password' -A > /all.sql //在master-1中操作
将备份的数据分别导入到slave-1
和 slave-2
中
source /all.sql
或
mysql -uroot -p'password' <all.sql
slave-1
修改配置文件
vim /etc/my.cof slave1和slave2做相同的操作
validate_password=off
log-bin = my3log
server-id = 3
gtid_mode=ON
enforce_gtid_consistency=1
relay_log_info_repository = TABLE
master_info_repository = TABLE
relay_log_recovery = on
当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性
重新启动数据库服务
systemctl restart mysqld
登录数据库
链接master-1
>help change master to
>edit
CHANGE MASTER TO
MASTER_HOST='master-1',
MASTER_USER='slave',
MASTER_PASSWORD='password',
MASTER_AUTO_POSITION=1 FOR CHANNEL 'master-1';
>start slave;
>show slave status;
如果有如上图效果,说明配置成功
链接master-2
>edit
CHANGE MASTER TO
MASTER_HOST='master-2',
MASTER_USER='slave',
MASTER_PASSWORD='password',
MASTER_AUTO_POSITION=1 FOR CHANNEL 'master-2';
>start slave;
>show slave status;
slave-2 (与slave-1相同的操作)
注意:
- server-id要有不同的值
- 如果是克隆的数据库,要注意UUID,
- 在修改配置文件时,要注意空格
- 导入数据时,看看slave的配置文件是否干净,