搭建步骤
1、环境准备,本例准备了4台服务器
mysql版本:5.8
系统:CentOS 7.4
master1服务器: 172.17.0.2
slave1服务器: 172.17.0.3
master2服务器: 172.17.0.4
slave2服务器: 172.17.0.5
2、在4台服务器上分支安装mysql实例,参考:
3、修改4个mysql的配置
master1的配置(/etc/my.cnf)如下:
#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库
binlog-do-db=test_slave
#设置logbin格式
binlog_format=STATEMENT
# 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates
#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=1
slave1的配置(/etc/my.cnf)如下:
#从服务器唯一ID server-id=2 #启用中继日志 relay-log=mysql-relay
master2的配置(/etc/my.cnf)如下:
#主服务器唯一ID
server-id=3
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库
binlog-do-db=test_slave
#设置logbin格式
binlog_format=STATEMENT
# 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates
#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=2
slave2的配置(/etc/my.cnf)如下:
#从服务器唯一ID server-id=3 #启用中继日志 relay-log=mysql-relay
4、重启4个mysql实例服务
5、查询主节点信息
登录master1的mysql,执行以下命令:show master status;
登录master2的mysql,执行以下命令:show master status;
6、配置双从机
1.登录slave1的mysql,执行以下命令
CHANGE MASTER TO
MASTER_HOST = '172.17.0.2',
MASTER_USER = 'root',
MASTER_PASSWORD = '123456',
MASTER_PORT = 3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=615;
登录slave2的mysql,执行以下命令
CHANGE MASTER TO
MASTER_HOST = '172.17.0.4',
MASTER_USER = 'root',
MASTER_PASSWORD = '123456',
MASTER_PORT = 3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=787;
2)分别启动2个节点的从服务
命令:start slave;
3)查看从服务状态
命令:show slave status\G;
如下:
slave1
slave2
7、两个主机互相复制
1.登录master1的mysql,执行以下命令
CHANGE MASTER TO
MASTER_HOST = '172.17.0.4',
MASTER_USER = 'root',
MASTER_PASSWORD = '123456',
MASTER_PORT = 3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=787;
登录master2的mysql,执行以下命令
CHANGE MASTER TO
MASTER_HOST = '172.17.0.2',
MASTER_USER = 'root',
MASTER_PASSWORD = '123456',
MASTER_PORT = 3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=615;
2.分别启动2个主节点的从服务
命令:start slave;
验证双主双从
1、登录master1,创建数据库 test_slave
CREATE DATABASE test_slave;
2、创建表
CREATE TABLE `test_tbl` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `update_date` date DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、插入数据
INSERT INTO `test_slave`.`test_tbl`(`id`, `title`, `update_date`) VALUES (1, '白色', '2020-07-10');
4、更新数据
UPDATE `test_slave`.`test_tbl` SET `title` = '黑色', `update_date` = '2020-07-10' WHERE `id` = 1;
查看master1、master2 和 slave1、slave2 节点数据是否相同