什么是级联复制?
简单理解就是 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=205log-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=214log-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=216read-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;