mysql 级联复制
级联复制的使用场景:
myql主服务器有多个从服务器(2个+),当主服务器因为向多个从服务器,发送更新的二进制日志(过程是串行的),而造成主服务器的压力大时,推荐使用级联复制
级联服务器的特殊设置:
级联服务器,需要开启log_slave_updates 选项,用于将master 中二进制日志的更新写入到到自己的二进制日志中。
正常情况下,一个
slave
节点是不会将其从master
节点同步的数据更新操作记录至自己的二进制日志bin-log
中的。
搭建级联复制
一、master 上的操作
完全备份
root@z1:/dd# mysqldump -A -F --single-transaction --master-data=1 > /dd/all.sql
把完全备份拷贝到级联服务器上
root@z1:/dd# scp /dd/all.sql 192.168.1.102:/data
授权给级联服务器
mysql> grant replication slave on *.* to r1@'192.168.%' identified by '123';
配置
[mysqld]
server-id=1
log-bin=/data/logbin/mysql
二、级联服务器上的操作
修改change master to; 或者导入数据库后,以命令行的方式也行
vim /data/all.sql
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000005',
MASTER_HOST='192.168.1.101',
MASTER_USER='r1',
MASTER_PASSWORD='123',
MASTER_PORT=3306,
MASTER_LOG_POS=327;
导入master的完全备份
root@z2:~# mysql < /data/all.sql
开启slave线程
MariaDB [(none)]> start slave ;
完全备份
root@z2:~# mysqldump -A -F --master-data=1 --single-transaction > /dd/all_bak.sql
把备份发送给slave 节点
root@z2:~# scp /dd/all_bak.sql 192.168.1.103:/data/
root@z2:~# scp /dd/all_bak.sql 192.168.1.104:/data/
刷新权限,这样级联节点就不用为slave节点创建复制账号了
MariaDB [(none)]> flush privileges ;
配置
[mysqld]
server-id=2
log-bin
log_slave_updates
read-only
三、slave 节点上的操作
修改 change master to 的信息
vim /data/all_bak.sql
CHANGE MASTER TO
MASTER_HOST='192.168.1.102',
MASTER_USER='r1',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mysqld-bin.000002', MASTER_LOG_POS=384;
导入数据库
root@z3:~# mysql < /data/all_bak.sql
开启复制线程
MariaDB [(none)]> start slave ;
配置
[mysqld]
server-id=3
read-only
同理4也可以同样配置
四、注意点
``
开启复制线程
MariaDB [(none)]> start slave ;
配置
[mysqld]
server-id=3
read-only
同理4也可以同样配置
四、注意点
只要在master 上授权一次即可,级联节点会复制这个账号信息;但是在级联节点要刷新一下权限