暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

5.7开启无损半同步参数前缀是否需要loose

原创 问题归档 2019-03-26
3147

问题描述

5.7版本,半同步默认是after_sync模式,也就是无损模式;那是不是意味着开启半同步的参数loose_rpl_semi_sync_master_enabled和

rpl_semi_sync_master_enabled是一样的效果,有没有loose前缀都是一样的?

专家解答

MySQL的三种复制方式

asynchronous 异步复制

fully synchronous 全同步复制

Semisynchronous 半同步复制


asynchronous replication

原理:在异步复制中,master写数据到binlog且sync,slave request binlog后写入relay-log并flush disk
优点:复制的性能最好
缺点:master挂掉后,slave可能会丢失事务
代表:MySQL原生的复制


fully synchronous replication

原理:在全同步复制中,master写数据到binlog且sync,所有slave request binlog后写入relay-log并flush disk,并且回放完日志且commit
优点:数据不会丢失
缺点:会阻塞master session,性能太差,非常依赖网络
代表:MySQL-Cluster


semisynchronous replication

普通的半同步复制

原理: 在半同步复制中,master写数据到binlog且sync,且commit,然后一直等待ACK。当至少一个slave request bilog后写入到relay-log并flush disk,就返回ack(不需要回放完日志)
优点:会有数据丢失风险(低)
缺点:会阻塞master session,性能差,非常依赖网络,
代表:after commit, 原生的半同步
重点:由于master是在三段提交的最后commit阶段完成后才等待,所以master的其他session是可以看到这个提交事务的,所以这时候master上的数据和slave不一致,master crash后,slave数据丢失


增强版的半同步复制(lossless replication)

原理: 在半同步复制中,master写数据到binlog且sync,然后一直等待ACK. 当至少一个slave request bilog后写入到relay-log并flush disk,就返回ack(不需要回放完日志)
优点:数据零丢失(前提是让其一直是lossless replication),性能好
缺点:会阻塞master session,非常依赖网络
代表:after sync, 原生的半同步
重点:由于master是在三段提交的第二阶段sync binlog完成后才等待, 所以master的其他session是看不见这个提交事务的,所以这时候master上的数据和slave一致,master crash后,slave没有丢失数据


重要参数

参数    comment    默认值     推荐值    是否动态

rpl_semi_sync_master_wait_for_slave_count    至少有N个slave接收到日志    1    1    dynamic    

rpl_semi_sync_master_wait_point    等待的point    AFTER_SYNC    AFTER_SYNC    dynamic    

rpl_semi_sync_master_timeout    切换复制的timeout    10000(10s)    1000(1s)    dynamic    

rpl_semi_sync_master_enabled    是否开启半同步    OFF    ON    dynamic    

rpl_semi_sync_slave_enabled    是否开启半同步    OFF    ON    dynamic    


如何开启lossless replication

########semi sync replication settings########

plugin_dir=/usr/local/mysql/lib/plugin

plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"

loose_rpl_semi_sync_master_enabled = 1

loose_rpl_semi_sync_slave_enabled = 1

loose_rpl_semi_sync_master_timeout = 1000

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论