• 数据库实现级联复制


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

    实现原理简单如下

     步骤解析:

    需要在中间的从服务器上进行配置,实现中间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

      

    一如IT深似海,从此妹子是路人; 只要学不死,就往死里学;
  • 相关阅读:
    IPC之util.h源码解读
    新麦装机问题汇
    AngularJS2+调用原有的js脚本(AngularJS脚本跟本地原有脚本之间的关系)
    K60平台智能车开发工作随手记
    苹果手机上下载的文件在哪里?
    Mac电脑C语言开发的入门帖
    Python2中文处理纪要
    比特币核心概念及算法
    将dylib库嵌入macOS应用的方法
    那些令人惊艳的TensorFlow扩展包和社区贡献模型
  • 原文地址:https://www.cnblogs.com/ldlx/p/14438238.html
Copyright © 2020-2023  润新知