【问题标题】:Does MYSQL replication work in real time?MYSQL 复制是否实时工作?
【发布时间】:2012-09-05 07:41:57
【问题描述】:

我是 MYSQL 复制的新手。我知道如何设置它(感谢许多书籍和其他在线资源),但是我需要了解它在底层的真正工作原理。

我的问题是,它可以实时工作吗?还是master和slave的变化之间有差距。

所以场景是:一条记录​​被插入到master中,它是立即插入到slave中然后插入完成,还是插入到master中并且插入完成,然后将更改复制到slave?

我问的原因是因为我知道 MS Sequel Server 上存在差异。 在 Sequel Server 上有一个称为镜像的概念,其中首先在主服务器上执行查询,然后在从服务器上执行,然后完成。还有一种复制,即在主服务器上执行查询,然后将消息发布到从服务器(通常非常快,但不一定是实时的),从服务器(订阅这些消息)执行相同的查询。

【问题讨论】:

标签: mysql replication


【解决方案1】:

默认情况下,MySQL 复制不能实时工作。它可以接近实时,但您不能指望数据在从节点上。这是因为默认情况下,复制是异步复制。有一些新技术旨在实现真正的同步复制,例如 Galera。 MySQL 也有一些新的复制方法,例如半同步,您可能想了解一下。还有一些人已经 fork mysql 并且不仅对其进行了优化,而且还在 Galera 中为您工作。

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

http://codership.com/content/using-galera-cluster - 同步复制引擎

http://www.percona.com/software/percona-xtradb-cluster - Percona 的 Galera 实现

https://mariadb.com/kb/en/what-is-mariadb-galera-cluster/ MariaDB 的实现 Galera。

【讨论】:

    【解决方案2】:

    MySQL 有不同的基于日志的复制机制。这里是MySQL official docs的部分:

    MySQL 中服务器之间的复制基于二进制日志记录 机制。作为主服务器运行的 MySQL 实例(源 数据库更改)将更新和更改作为“事件”写入 二进制日志。二进制日志中的信息存储在不同的 根据正在记录的数据库更改记录格式。 从站被配置为从主站读取二进制日志并 在slave的本地数据库上执行二进制日志中的事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-21
      • 1970-01-01
      • 2018-06-11
      • 2014-01-09
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多