mysql - rpl_semi_sync_master_wait_point,AFTER_SYNC?

标签 mysql replication

同步后主设备等待从设备确认事务接收。收到确认后,主服务器将事务提交到存储引擎并向客户端返回结果。我想知道从服务器何时提交?

最佳答案

从站只要有时间就会提交,这可能在几毫秒内,但如果从站滞后,也可能会花费大量时间,因为它过载或动力不足,或者因为进程已获得锁在从属设备上导致更新等待锁定。

半同步复制仅通过确保至少一个从属设备已保存(未执行)事务的副本来保证不会丢失事务。

一旦任何从属服务器上的复制IO_THREAD接收到复制事件并将其写入磁盘上的中继日志,并向主服务器确认这一事实,数据就不会受到任何单一故障丢失的影响.

The slave acknowledges receipt of a transaction's events only after the events have been written to its relay log and flushed to disk.

https://dev.mysql.com/doc/refman/5.7/en/replication-semisync.html

从站SQL_THREAD读取IO_THREAD已写入中继日志的事件并将其应用到从站的数据集,但这部分是完全异步的过程这不提供对半同步逻辑的反馈。

如果您需要从属服务器立即同步以读取刚刚写入主服务器的数据的查询,则 native 复制 - 异步(传统)或半同步都无法提供这一点。如果这就是您所需要的,您需要 Galera Replication Provider ,这使得复制真正同步(并使集群中的所有服务器都成为可写的主服务器)。

关于mysql - rpl_semi_sync_master_wait_point,AFTER_SYNC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34604246/

相关文章:

mysql - 这个查询应该怎么写?

elasticsearch - 我应该在elasticsearch的单台机器上使用分片/复制吗?

ruby-on-rails - 使用 Rails 复制到冗余服务器?

sql - 从数据库表的所有 Identity 列中删除 [NOT FOR REPLICATION]

mysql - 如何从 "exists"查询(MYSQL)中取出值?

mysql - 将本体连接到预先存在的数据库

database - SymmetricDS 和“注册

mysql - 添加具有默认值的非空列时,是否在 MySQL 中记录行级 binlog 条目

mysql - 更新表,将每一行从最大值增加 1

mysql - SQL 日期通配符