暂无图片
分享
golfer
2019-03-19
5.7开启无损半同步参数前缀是否需要loose

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

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

收藏
分享
3条回答
默认
最新
golfer

换个方式问吧,就是参数前面加loose有啥用啊

暂无图片 评论
暂无图片 有用 0
lastwinner

这个问题比较容易搜到,我摘录一段给你参考:


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

   



暂无图片 评论
暂无图片 有用 0
章芋文
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏