本节描述基于二进制日志文件位置方法的 MySQL 服务器之间的复制,其中作为源(数据库更改发生的地方)运行的 MySQL 实例将更新和更改作为“事件”写入二进制日志。二进制日志中的信息根据记录的数据库变化以不同的日志格式存储。副本配置为从源读取二进制日志,并在副本的本地数据库上执行二进制日志中的事件。
每个副本都会收到二进制日志全部内容的副本。副本负责决定应该执行二进制日志中的哪些语句。除非您另外指定,否则源的二进制日志中的所有事件都在副本上执行。如果需要,您可以将副本配置为仅处理适用于特定数据库或表的事件。
重要的
您不能将源配置为仅记录某些事件。
每个副本都保留二进制日志坐标的记录:它从源读取和处理的文件名和文件中的位置。这意味着多个副本可以连接到源并执行同一二进制日志的不同部分。由于副本控制此过程,因此可以在不影响源操作的情况下将各个副本连接到服务器或从服务器断开连接。此外,因为每个副本都记录了二进制日志中的当前位置,所以副本可能会断开连接、重新连接然后恢复处理。
源和每个副本必须配置有唯一 ID(使用server_id
系统变量)。此外,每个副本都必须配置有关源的主机名、日志文件名和该文件中的位置的信息。这些细节可以在 MySQL 会话中使用副本上的CHANGE
REPLICATION SOURCE TO
语句(来自 MySQL 8.0.23)或
CHANGE MASTER TO
语句(MySQL 8.0.23 之前)进行控制。详细信息存储在副本的连接元数据存储库中(请参阅
第 17.2.4 节,“中继日志和复制元数据存储库”)。