MySQL 8.0 参考手册 / 第十七章复制 /
16.2 复制实现
复制基于复制源服务器在其二进制日志中跟踪对其数据库的所有更改(更新、删除等)。二进制日志作为从服务器启动那一刻起修改数据库结构或内容(数据)的所有事件的书面记录。通常,SELECT
不记录语句是因为它们既不修改数据库结构也不修改内容。
连接到源的每个副本都请求二进制日志的副本。也就是说,它从源中拉取数据,而不是源将数据推送到副本。副本还执行它接收到的二进制日志中的事件。这具有重复原始更改的效果,就像它们在源上所做的一样。创建表或修改其结构,并根据最初在源上所做的更改插入、删除和更新数据。
因为每个副本都是独立的,所以来自源的二进制日志的更改的重播独立发生在连接到源的每个副本上。此外,因为每个副本仅通过从源请求它来接收二进制日志的副本,副本能够按照自己的节奏读取和更新数据库的副本,并且可以随意启动和停止复制过程而不会影响在源端或副本端更新到最新数据库状态的能力。
有关复制实现细节的更多信息,请参阅 第 16.2.3 节,“复制线程”。
源和副本定期报告它们在复制过程中的状态,以便您可以监控它们。有关所有与复制相关的状态的描述, 请参阅 第 8.14 节,“检查服务器线程(进程)信息” 。
源的二进制日志在处理之前写入副本上的本地中继日志。副本还使用源的二进制日志和副本的中继日志记录有关当前位置的信息。请参阅第 16.2.4 节,“中继日志和复制元数据存储库”。
根据控制事件评估的各种配置选项和变量应用的一组规则在副本上过滤数据库更改。有关如何应用这些规则的详细信息,请参阅 第 16.2.5 节,“服务器如何评估复制过滤规则”。