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