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