MYSQL实现级联复制

 什么是级联复制?

简单理解就是 A->B->C , B 是 A 的从,C 是 B 的从。多用于主从的替换,就是 A 下马了,B,C 顶上。

C是后来新增的,A上需要做完全备份

 

环境介绍:

Blog-MySQL-1:master         IP:10.0.0.205     

Blog-MySQL-1: slave-1             IP:10.0.0.214

MySQL-2:slave-2                    IP:10.0.0.216

三台机器由上至下分别是:主,从,新创建的 mysql 服务器,没有任何配置

mstar配置:

vim /etc/my.cnf
[mysqld]
server-id=205
log-bin

systemctl restart mariadb.server

MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name | File_size |
+--------------------+-----------+
| mariadb-bin.000001 | 264 |
+--------------------+-----------+
5 rows in set (0.00 sec)

MariaDB [(none)]> grant replication slave on *.* to replication identified by '123456';

mysqldump -A -F --single-transaction --master-data=1 > /data/all.sql  #完全备份,给C使用

scp /data/all.sql root@10.0.0.216:/data

 

slave-1配置:

vim /etc/my.cnf
[mysqld]
server-id=214
log-bin
read-only
log_slave_updates    #该选项告诉从服务器将其SQL线程执行的更新记入到从服务器自己的二进制日志

systemctl restart mariadb.server

MariaDB [(none)]> show master logs;

+--------------------+-----------+
| Log_name | File_size |
+--------------------+-----------+
|  mariadb-bin.000001  | 713 |
+--------------------+-----------+
1 row in set (0.00 sec)

MariaDB [(none)]>

CHANGE MASTER TO
MASTER_HOST='10.0.0.205',
MASTER_USER='repluser',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000001',
MASTER_LOG_POS=264,
MASTER_CONNECT_RETRY=10;

start slave;

 

slave-2配置:

vim /etc/my.cnf
[mysqld]
server-id=216
read-only

systemctl restart mariadb.server

vim /data/all.sql #修改all.sql中的CHANGE MASTER TO信息为slave-1的
CHANGE MASTER TO
MASTER_HOST='10.0.0.214',
MASTER_USER='repluser',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000001',
MASTER_LOG_POS=713,
MASTER_CONNECT_RETRY=10;

MariaDB [(none)]> set sql_log_bin=0;   #临时关闭二进制日志

MariaDB [(none)]> source /data/all.sql  #导入master的备份

MariaDB [(none)]> set sql_log_bin=1;   #开启二进制日志

start slave;

 

posted @ 2020-09-04 17:25  金金金丶  阅读(240)  评论(0)    收藏  举报