首页 > 数据库技术 > 详细

数据库实现级联复制

时间:2021-02-23 23:35:57      阅读:64      评论:0      收藏:0      [点我收藏+]

级联复制:即指的是按正常情况下,所有的从节点都是从主节点上同步数据,但是这回增大主节点的压力;故级联复制就是为了解决该情况的。多个从节中其中的一个从节点从主节点上同步数据,而后在于该子节点在于其他子节点进行同步数据。

实现原理简单如下

技术分享图片

 

 步骤解析:

需要在中间的从服务器上进行配置,实现中间slave节点能将master的二进制日志能在本机进行数据库更新,并且也同时更新本地的二进制日志,从而实现级联复制。

实现步骤大概:环境准备,主节点配置,中间节点配置,slave2节点配置

详细步骤如下:

一.安装环境:

  这里用centos8,mysql8.0,一主两从架构。

主节点ip 10.0.0.110;slave1(中间节点)ip:10.0.0.112;slave2节点ip:10.0.0.114

并且关闭防火墙以及selinux(setenforce 0[临时关闭],systemctl disable --now firewalld)

为了便于区分,修改主机名为master ,slave1,slave2(hostname master|slave1|slave2)

 

二.主节点配置

编辑文件(/etc/my.conf.d/mysql-server.conf),设定全局唯一标识的id

[root@master ~]#vim /etc/my.conf.d/mysql-server.conf

server_id=110   
技术分享图片

 

[root@master ~]#systemctl enable --now mysqld           #启动mysql

#登录mysql,mysql安装后默认的账户为root,密码为空.

创建一个用于备份的账号并且授权(repluser@‘10.0.0.%’   密码为123456)

[root@master ~]#mysql 

mysql>create user repluser@‘10.0.0.%’ identified by ‘123456’;

mysql>grant replication slave on *.* to  repluser@‘10.0.0.%’;

 

#查看二进制日志位置

mysql>mysql>show master logs;

 技术分享图片

 

#创建备份并且将该备份文件复制到中间节点上(slave1)
[root@master ~]#mysqldump -uroot --single-transaction --master-data=1 -F -A > all.sql

[root@master ~]#scp  allsql 10.0.0.112:

[root@master ~]#scp  allsql 10.0.0.114:

 

 

三.中间节点(slave1)配置

[root@slave1 ~]#vim /etc/my.cnf.d/mysql-server.cnf

server_id=112

read_only

log_bin            #开启二进制日志功能,但是默认已开启。可省

log_slave_updates=off         #级联复制的关键选项,但是在centos8系统中默认以及开起,为了方便看到效果,先将其关闭

技术分享图片

 

[root@slave1 ~]#systemctl enable --now mysqld           #启动mysql

#还原数据,但是需要在all.sql文件中的change master to 位置添加如下几行(该记号的格式可以通过获取帮助获得help change master to)

[root@slave1 ~]#vim all.sql

chang master to

MASTER_HOST=‘10.0.0.112‘,
MASTER_USER=‘ldl1‘,
MASTER_PASSWORD=‘123456‘,
MASTER_PORT=3306,

...

技术分享图片

 

 

#还原数据时,如果不希望该操作记录在日志中,可将该功能暂时关闭。

[root@slave1 ~]#mysql

mysql>set sql_log_bin=off;    #关闭二进制日志功能

mysql>source  /root/all.sql

mysql>show master logs;   #记录二进制位置,给第三个节点使用

 

mysql>set sql_log_bin=on;

mysql>start slave;    #启动线程

mysql>show slave status\G;     #查看线程开启情况以及是否有报错

技术分享图片

 

 

 四.从节点(slave2)配置

[root@slave2 ~]#vim /etc/my.cnf.d/mysql-server.cnf

server_id=114

read_only

log_bin            #开启二进制日志功能,但是默认已开启。可省

技术分享图片

 

 

[root@slave2 ~]#systemctl enable --now mysqld           #启动mysql

[root@slave2 ~]#vim all.sql

change master to
MASTER_HOST=‘中间节点的ip‘,
MASTER_USER=‘repluser‘,
MASTER_PASSWORD=‘123456‘,
MASTER_PORT=3306,
MASTER_LOG_FILE=‘中间节点的二进制日志文件‘,
MASTER_LOG_POS=中间节点的二进制文件位置;

[root@slave2 ~]#mysql < all.sql

[root@slave2 ~]#mysql -e ‘start slave‘

 

五.测试

在主节点上创建一个数据库db1

在中间节点查看是否生成

然后再从节点slave2查看。

 

如果为再slave2上未查看到db1数据库,则修改中间节点的配置文件后重新新的服务。在做同样操作的测试

[root@slave1 ~]#vim /etc/my.cnf.d/mysql-server.cnf

log_slave_updates=on

 

 

 

技术分享图片

 

 

  

 

数据库实现级联复制

原文:https://www.cnblogs.com/ldlx/p/14438238.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!