美文网首页
主从复制

主从复制

作者: 寒冰助手 | 来源:发表于2024-07-21 17:07 被阅读0次

    一、概念

    主从复制,是指建立一个和主数据库完全一样的数据库环境(称为从数据库),并将主库的操作行为进行复制的过程:将主数据库的DDL和DML的操作日志同步到从数据库上,然后在从数据库上对这些日志进行重新执行,来保证从数据库和主数据库的数据的一致性。

    二、作用

    1.在复杂的业务操作中,经常会有操作导致锁行甚至锁表的情况。使用主从复制,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运行。
    2.保证数据的热备份,主库宕机后能够及时替换主库,保障业务可用性。
    3.业务量扩大,I/O访问频率增高,单机无法满足,主从复制可以做多库方案,降低磁盘I/O访问的频率,提高单机的I/O性能。

    三、步骤

    1.主库把数据变更作为事件日志记录在二进制日志表(binlog)里面
    2.从库在一定时间内通过I/O线程监测主库binlog数据变更并执行请求
    3.主库通过dump线程(主库为每一个从库单独创建)把binlog内容发送到从库的中继日志(relay log)中
    4.从库开启sql线程,读取中继日志(relay log),并解析成sql语句执行,完成数据更新


    image.png

    四、实现

    1.分别在两台服务器上配置主数据库(master)和从数据库(slave)( 除了不同步的数据库,其他数据库的数据要一致)
    2.连接主从数据库

    change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='test-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;
    参数说明:
    master_host: Master 的IP地址
    master_user: 在 Master 中授权的用于数据同步的用户,就我们之前在主库容器里创建的哪个slave用户
    master_password: 同步数据的用户的密码
    master_port: Master 的数据库的端口号
    master_log_file: 指定 Slave 从哪个日志文件开始复制数据
    master_log_pos: 从哪个 Position 开始读
    master_connect_retry: 当重新建立主从连接时,如果连接失败,重试的时间间隔,单位是秒,默认是60秒。
    

    3.开启主从同步

    mysql > start slave;start slave;
    

    4.在 slave 的 MySQL 终端执行查看主从同步状态

    mysql > start slave;show slave status;
    

    5.主从同步延迟解决方案
    -保证数据库处在最有状态下:优化系统配置(链接层或者存储引擎层):最大连接数、允许错误数、允许超时时间、pool_size、log_size,保证内存、CPU、存储空间的扩容(硬件部分)。
    -业务量不多的情况下,不做读写分离。
    -估算好服务器能够承载的流量上限。达到上限之后,就要采取缓存,限流,降级的方式。

    相关文章

      网友评论

          本文标题:主从复制

          本文链接:https://www.haomeiwen.com/subject/azgshjtx.html