美文网首页
数据库主从复制

数据库主从复制

作者: 华木公子 | 来源:发表于2019-08-11 14:26 被阅读0次

    一 通过binlog的方式来同步

    二 从库binlog入库的是单线程(5.6版本前)

    从库从主库同步binlog日志,写入relay日志,然后写入数据库,是单线程的。
    在5.6版本之后,可以配置多线程IO读取。但写都是单线程的。

    三 主从会延迟

    从库写要比主库慢一点,当主库1000次/秒的写速度时,从库要比主库慢 几十毫秒。
    如果主库达到了 4000次/秒,可能快撑不住了,此时从库会慢上几秒。

    四 数据丢失问题

    • 现象:当数据写入binlog还没有同步到从库时,主库挂了,从库切换为主,则未同步的数据就会丢失。
    • 处理方案:mysql半同步机制。mysql提供了 semi sync 设置,打开这个设置,则一个数据写入binlog,并且在从库中也写入了数据库后,才返回ack,提示数据写入完成。

    四 数据同步延迟问题

    • 现象:从库同步数据要比主库速度要慢一点点。
    • 处理方案:mysql并行复制机制。从库会开启多个线程对relay日志进行不同库的读取,然后写入不同的从库中。并行读写,提高效率(意义不大,提升很小,因为是按照库级别而不是表级别)。

    五 数据时效性问题

    因为数据主从同步会出现延迟,可能10ms,20ms,30ms。那么对于时效性要求非常高的,比如一写入要求马上读取出来的数据,建议还是直接从主库上直接读取(数据库中间件可以设置直连主库),一般不建议这样操作。
    1 从库读取binlog开启多线程IO写到relay日志
    2 从库开启并行复制从relay日志分库加载数据
    3 代码编写尽量不要一写入就立刻查询
    4 如果真的非常需要马上一写入就查询,可以开启中间件直连主库读,但不建议,违背主从复制
    5 进行分库分表,降低主库压力,提高同步效率

    相关文章

      网友评论

          本文标题:数据库主从复制

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