4

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

我的问题是,它可以实时工作吗?或者主从更改之间是否存在差距。

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

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

4

2 回答 2

3

默认情况下,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。

于 2014-03-27T16:43:25.097 回答
2

MySQL具有基于日志的不同复制机制。这是MySQL 官方文档的一部分:

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

于 2012-09-05T07:58:58.283 回答