• 实现MySQL主从同步


    什么是mysql主从同步

    当主库(master)的数据发生变化的时候,会实时的同步到从库(slave)。

    主从同步有什么好处

    1. 数据备份
    2. 容错,高可用
    3. 水平扩展数据库的负载能力、
    4. 主数据库出现问题,可以切换到从数据库。
    5. 可以进行数据库层面的读写分离。

    主从同步的原理

    MySQL 主从复制是基于主服务器在二进制日志跟踪所有对数据库的更改。如果要进行复制,必须在主服务器上启用二进制日志。从服务器连接到主服务器并获取主服务器已经记录到日志的数据,从服务器接收从那时发生起的任何更新,并在主机上执行相同的更新。

    从服务器执行备份不会干扰主服务器,在备份过程中主服务器可以继续处理更新。


    配置主库服务器

    打开/etc/my.cnf配置文件,进行如下:

    1. [mysqld]
    2. # log-bin 打开二进制日志功能.                                                                               
    3. # 在复制(replication)配置中,作为master主服务器必须打开此项;如果你需要从你最后的备份中做基于时间点的恢复,你也同样需要二进制日志. 
    4. # [必须]启用二进制日志   
    5. log-bin=/usr/local/bin/lnmp/logs/binlog
    6. # 此值在master和slave上都需要设置.
    7. # 在master-slave架构中,每台机器节点都需要有唯一的server-id,数值位于1到2^32-1之间;如果在双主复制结构中没有设置ID的话就会导致循环同步问题
    8. # 【必须】服务器唯一ID,默认是1
    9. server-id=1
    10. # 需要开启生成二进制日志记录相关配置,配置在需要被复制的服务器上,即:master
    11. # 指定对名称为test_db的数据库记录二进制日志
    12. binlog-do-db = mindoc_db
    13. # 指定不对名称为mysql的数据库记录二进制日志
    14. # binlog-ignore-db = mysql
    15. # 指定不对名称为information_schema的数据库记录二进制日志
    16. # binlog-ignore-db = information_schema
    17. # binlog日志格式,mysql默认采用,如果从服务器slave有别的slave要复制那么该slave也需要这一项 
    18. binlog_format = mixed
    19. # 超过7天的binlog删除 
    20. expire_logs_days = 7

    重启主服务器,查看主库配置状态

    show master status

     获取主数据库此刻数据坐标,用于主从启动后,复制数据的起始位置,获取到这个值后,主数据库就不能再有数据的修改操作。


    配置从库服务器

    打开/etc/my.cnf配置文件,进行如下:

    1. [mysqld]
    2. # 必须配置,且要比主服务器大
    3. server-id=11
    4. # 从库服务器可以不配
    5. # log-bin=/usr/local/bin/lnmp/logs/binlo
    6. # replicate-do-db 需要做复制的数据库,如果复制多个数据库,重复设置这选项即可master上不需要此项,slave上需要 
    7. # 复制名称为test_db的数据库
    8. replicate-do-db = mindoc_db
    9. # replicate-ignore-db 不需要复制的数据库,如果要忽略复制多个数据库,重复设置这个选项即可  
    10. # replicate-ignore-db = mysql #不需要(忽略)复制名称为mysql的数据库   

    执行同步命令

    在从库的客户端执行命令

    1. # 设置主服务器ip,同步账号密码,同步位置
    2. change master to master_host='主库IP' , master_port=3306,  master_user='root',master_password='密码', master_log_file='binlog.000002',master_log_pos=9871;

    说明:

    1. master_log_file:主库文件名
    2. master_log_pos:参数的值与主库保持一致

    在从数据库中设置复制数据的用户、坐标等信息,在执行此操作之前需保证主从数据库现时刻数据一致,因为是从设置的坐标处开始复制。


    开启同步功能

    start slave;

    停止从库slave

    stop slave;

    查看从服务器状态

    show slave status;

    开始启动后,查看从Mysql复制状态,其中Slave_IO_Running、Slave_SQL_Running两项为YES时,表示同步正在进行。


    此时主从库的数据完全一致,如果对主库进行增删改操作,从库会自动同步进行操作。

  • 相关阅读:
    公司如何实现多套环境的自动化测试?
    温湿度阈值联网控制
    Seata的部署与微服务集成
    pnpm install报错 Value of “this“ must be of type URLSearchParams
    最小生成树 Minimum Spanning Tree
    【MQTT】阿里云MQTT C++ 版本 登录三元组计算获取username、password
    艾美捷测序级 II,纯化胰蛋白酶化验程序&文献参考
    【JVM】java的jvm类加载器和类加载子系统
    SpringMVC_执行流程
    课程:如何高效掌控你的时间
  • 原文地址:https://blog.csdn.net/xhaimail/article/details/126575688