总字符数: 2.45K

代码: 1.20K, 文本: 0.48K

预计阅读时间: 7 分钟

我的测试环境是mysql+ Mariadb数据库,我这里拿2台服务器来做测试 提示:两台服务器的数据库版本要相同 修改配置文件(默认是my.cnf)

注意:下面所提到的参数全部都是在[mysqld]节点下添加

像主从同步一样,在这个文件的[mysqld]节点下添加参数,两台服务器都要添加,注意server-id不要相同

1
2
3
4
5
#A服务器 
server-id=1
log-bin=mysql-bin
auto_increment_offset = 1#表示该数据库的自增ID从1开始 auto_increment_increment = 2#设置为服务器的总数量,比如我们这里用2台服务器做测试,那么就设置为2.这里设置为2,表示的是每次自增时增长2,即该台数据库的自增ID的顺序为:1,3,4,7,9......
log-slave-updates = true
1
2
3
4
5
6
#B服务器 
server-id=2
log-bin=mysql-bin
auto_increment_offset = 2#表示该数据库的自增ID从1开始
auto_increment_increment = 2#设置为服务器的总数量,比如我们这里用2台服务器做测试,那么就设置为2.这里设置为2,表示的是每次自增时增长2,即该台数据库的自增ID的顺序为:1,3,4,7,9......
log-slave-updates = true

  修改后的配置文件如下图:

接下来就简单了,跟主从同步的操作基本上一致了,首先是添加用来同步用的账号密码.在A、B两台服务器上添加相同的账号密码

1
2
3
mysql -uroot -p123456 
grant replicatiON slave on *.* to repl@'%' identified by '123456';
exit

  添加完毕账号后,重启数据库服务systemctl restart mysqld 重启完毕后,重新登录两台服务器的数据库,查看日志文件的信息并记录File和Position信息

1
2
mysql -uroot -p123456 
show master status;

 

因为测试两个服务器都是全新安装的数据库,所以这些信息都是一样的.接下来在配置同步服务,首先在A服务器配置

1
2
3
4
#A服务器 
change master to master_host='B服务器的IP',master_port=3306,master_user='B服务器的数据库账号repl',master_password='B服务器的数据库密码123456',master_log_file='mysql-bin.000001',master_log_pos=313;
log_file就是主服务器File的值,这里要填写B服务器查询出来的值
master_log_pos就是主服务器Position的值,这里要填写B服务器查询出来的值

 

1
2
3
4
--B服务器
change master to master_host='A服务器的IP',master_port=3306,master_user='A服务器的数据库账号repl',master_password='A服务器的数据库密码123456',master_log_file='mysql-bin.000001',master_log_pos=313;
-- log_file就是主服务器File的值,这里要填写A服务器查询出来的值
-- master_log_pos就是主服务器Position的值,这里要填写A服务器查询出来的值

然后在A、B服务器上执行start slave;开启同步在执行show slave status\G;查看同步状态

当看到以下两个参数是YES就说明配置已经生效

1
2
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

  剩下的自己可以创建个数据库测试一下