MySQL 中服务器之间的复制是基于二进制日志机制的。作为复制源服务器(数据库更改的源)运行的 MySQL 实例将更新和更改作为“事件”写入二进制日志。二进制日志中的信息根据记录的数据库变化以不同的日志格式存储。副本配置为从源读取二进制日志,并在副本的本地数据库上执行二进制日志中的事件。
您不能将源配置为仅记录某些事件。
在这种情况下 ,来源是“愚蠢的” 。启用二进制日志记录后,所有语句都会记录在二进制日志中。每个副本都会收到二进制日志全部内容的副本。副本负责决定应该执行二进制日志中的哪些语句;您不能将源配置为仅记录某些事件。如果您没有另外指定,则源的二进制日志中的所有事件都在副本上执行。如果需要,您可以将副本配置为仅处理适用于特定数据库或表的事件。
每个副本都保留二进制日志坐标的记录:它从源读取和处理的文件名和文件中的位置。这意味着多个副本可以连接到源并执行同一二进制日志的不同部分。由于副本控制此过程,因此可以在不影响源操作的情况下将各个副本连接到服务器或从服务器断开连接。此外,因为每个副本都记录了二进制日志中的当前位置,所以副本可能会断开连接、重新连接然后恢复处理。
源和每个副本必须配置有唯一 ID(使用server_id
系统变量)。此外,每个副本都必须配置有关源的主机名、日志文件名和该文件中的位置的信息。CHANGE MASTER
TO
可以使用副本上的语句从 MySQL 会话中控制这些细节。详细信息存储在副本的连接元数据存储库中,它可以是文件或表(请参阅第 17.2.2 节,“中继日志和复制元数据存储库”)。
本节介绍复制环境所需的设置和配置,包括创建新复制环境的分步说明。本节的主要组成部分是:
有关设置两个或多个服务器进行复制的指南, 第 17.1.1 节“如何设置复制”处理系统的配置并提供在源和副本之间复制数据的方法。
二进制日志中的事件使用多种格式记录。这些被称为基于语句的复制 (SBR) 或基于行的复制 (RBR)。第三种类型,混合格式复制 (MIXED),自动使用 SBR 或 RBR 复制,以在适当的时候利用 SBR 和 RBR 格式的优势。不同的格式在 第 17.1.2 节,“复制格式”中讨论。
有关适用于复制的不同配置选项和变量的详细信息,请参阅 第 17.1.4 节,“复制和二进制日志记录选项和变量”。
一旦开始,复制过程应该几乎不需要管理或监控。但是,有关您可能想要执行的常见任务的建议,请参阅 第 17.1.5 节,“常见复制管理任务”。