MYSQL复制是否实时工作?

时间:2012-09-05 07:41:57

标签: mysql replication

我是MYSQL复制的新手。我知道如何设置它(感谢许多书籍和其他在线资源)但是,我需要了解它在低级别上是如何工作的。

我的问题是,它是否实时有效?或者主人和奴隶的变化之间是否存在差距。

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

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

2 个答案:

答案 0 :(得分:2)

默认情况下,MySQL复制不能实时运行。它可以接近实时,但您不能指望从属节点上的数据。这是因为默认情况下,复制是异步复制。有一些新技术旨在实现真正的同步复制,例如Galera。 MySQL还有一些新的复制方法,比如半同步,你可能想要查看它们。还有一些人分叉了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。

答案 1 :(得分:1)

MySQL具有基于日志的不同复制机制。以下是MySQL official docs的一部分:

  

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