主从同步,也称为主从复制,是MySQL提供的一种高可用解决方案,用于保证主从数据的一致性。解决方案。
在生产环境中,会出现很多不可控的因素,比如数据库服务挂掉了。为了保证应用的高可用,数据库也必须高可用。
因此,在生产环境中,会采用主从同步的方式。当应用规模较小时,一般采用一主一备的方式。
除了上面提到的数据库服务挂了可以快速切换到备库避免应用不可用之外,使用主备同步还有以下好处:
提高数据库的读取并发度。大多数应用程序的读取多于写入。他们采用主从同步方案。当使用规模增大时,可以扩展从库以提高读取能力。
备份,主备同步可以获得实时完整的备份数据库。
快速恢复,当主库出错时(比如误删表),可以通过备库快速恢复数据。对于数据恢复速度容忍度很低的大型应用,通过配置一个与主库数据快照相隔半小时的备库,当主库误删表时,备库和binlog可以用来恢复数据。为了快速恢复,请等待半小时。
讲完了什么是主备同步以及它的好处,我们再来看看主备同步是如何实现的。
我们先了解一下主备同步的原理。接下来我们通过一条update语句来介绍一下主备库是如何同步的。
上图是在节点A上执行更新语句,然后同步到节点B的完整流程图。具体步骤为:
主从同步的工作原理其实就是全量备份加二进制日志备份的恢复。不同的是,这个二进制日志的恢复操作基本上是实时的。
备库通过两个线程实现同步:
从上面的流程可以看出,主备同步的关键是binlog。 binlog的相关内容在之前的文章中也有介绍过。感兴趣的朋友可以点击查看。
M-S结构,两个节点,一为主库,一备库,两个节点不允许交换角色。
状态1下,客户端直接访问节点A进行读写,节点B是A的备库。它只同步A的更新并在本地执行。这使得节点 B 和 A 的数据保持相同。
需要切换时,切换到状态2。此时客户端对节点B进行读写,节点A为B的备库。
双M结构,两个节点,一主一备,两个节点可以互换角色。
undefined