美文网首页
MySQL并行复制

MySQL并行复制

作者: 爱钓鱼的码农 | 来源:发表于2020-08-24 15:28 被阅读0次

    传统复制:

    image.png

    多线程模型:

    image.png

    分发事务疑问

    1、事务能不能按照轮询的方式分发给各个 worker,也就是第一个事务分给 worker_1,第二个事务发给 worker_2 ?
          事务被分发给 worker 以后,不同的 worker 就独立执行了。但是,由于 CPU 的调度策略,很可能第二个事务最终比第一个事务先执行。而如果这时候刚好这两个事务更新的是同一行,也就意味着同一行上的两个事务,在主库和备库上的执行顺序相反,会导致主备不一致的问题。
    2、同一个事务的多个更新语句,能不能分给不同的 worker 来执行呢?
          一个事务更新了表 t1 和表 t2 中的各一行,如果这两条更新语句被分到不同 worker 的话,虽然最终的结果是主备一致的,但如果表 t1 执行完成的瞬间,备库上有一个查询,就会看到这个事务“更新了一半的结果”,破坏了事务逻辑的隔离性。
    
    

    事务分发基本要求

    1、不能造成更新覆盖,这就要求更新同一行的两个事务,必须被分发到同一个 worker 中。          
    2、同一个事务不能被拆开,必须放到同一个 worker 中。
    

    MySQL 各版本并行复制策略

    5.6
    官方 MySQL5.6 版本,支持了并行复制,只是支持的粒度是按库并行。这个策略的并行效果,取决于压力模型。如果在主库上有多个 DB,并且各个 DB 的压力均衡,使用这个策略的效果会很好。
    
    5.7
    

    相关文章

      网友评论

          本文标题:MySQL并行复制

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