Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  Replication

第 19 章 复制

复制使得一个 MySQL 数据库服务器(称为源)中的数据可以被复制到一个或多个 MySQL 数据库服务器(称为副本)。复制默认是异步的;副本不需要永久连接以从源接收更新。根据配置,可以复制所有数据库、选择的数据库或甚至数据库中的选择的表。

MySQL 中复制的优点包括:

  • 扩展解决方案 - 在多个副本中分配负载以提高性能。在这种环境中,所有写入和更新必须在源服务器上进行。读取,然而,可以在一个或多个副本上进行。这模型可以提高写入性能(因为源专门用于更新),同时在越来越多的副本中显著提高读取速度。

  • 数据安全 - 因为副本可以暂停复制过程,因此可以在副本上运行备份服务,而不会损坏相应的源数据。

  • 分析 - 可以在源上创建实时数据,而分析信息可以在副本上进行,而不会影响源的性能。

  • 长距离数据分布 - 可以使用复制在远程站点创建数据的本地副本,而不需要永久访问源。

有关如何在这些场景中使用复制的信息,请参阅 第 19.4 节,“复制解决方案”

MySQL 8.3 支持不同的复制方法。传统方法基于从源的二进制日志中复制事件,并需要在源和副本之间同步日志文件和位置。基于 全局事务标识符(GTIDs)的新方法是事务性的,因此不需要处理日志文件或文件中的位置,这大大简化了许多常见的复制任务。使用 GTIDs 的复制保证了源和副本之间的一致性,只要所有在源上提交的事务也已经在副本上应用了。有关 GTIDs 和 MySQL 中基于 GTIDs 的复制的更多信息,请参阅 第 19.1.3 节,“使用全局事务标识符的复制”。有关使用二进制日志文件位置基于复制的信息,请参阅 第 19.1 节,“配置复制”

MySQL 中的复制支持不同的同步类型。原始的同步类型是一种异步复制,其中一个服务器充当源,而一个或多个其他服务器充当副本。这与 NDB 集群(见 第 25 章,MySQL NDB 集群 8.3)中的同步复制不同。在 MySQL 8.3 中,还支持半同步复制,除了内置的异步复制外。使用半同步复制,源上的提交将在至少一个副本确认已经收到并记录事务事件之前阻塞;见 第 19.4.10 节,“半同步复制”。MySQL 8.3 还支持延迟复制,使副本故意落后于源至少指定的时间;见 第 19.4.11 节,“延迟复制”。对于需要同步复制的场景,请使用 NDB 集群(见 第 25 章,MySQL NDB 集群 8.3)。

有多种解决方案可用于设置服务器之间的复制,最佳方法取决于数据的存在和引擎类型。有关可用选项的更多信息,请参阅 第 19.1.2 节,“设置基于二进制日志文件位置的复制”

有两种核心的复制格式,基于语句的复制(SBR),它复制整个 SQL 语句,以及基于行的复制(RBR),它只复制更改的行。还可以使用第三种变体,混合基于复制(MBR)。有关不同复制格式的更多信息,请参阅 第 19.2.1 节,“复制格式”

复制通过多个不同的选项和变量来控制。有关更多信息,请参阅 第 19.1.6 节,“复制和二进制日志选项和变量”。还可以对复制拓扑结构应用附加的安全措施,如 第 19.3 节,“复制安全”所述。

您可以使用复制来解决多种不同的问题,包括性能、支持不同的数据库备份,以及作为更大解决方案的一部分来缓解系统故障。有关如何解决这些问题的信息,请参阅第 19.4 节,“复制解决方案”

有关不同数据类型和语句在复制过程中的处理、复制功能、版本兼容性、升级和潜在问题及其解决方法的注意事项和提示,请参阅第 19.5 节,“复制注意事项和提示”。对于 MySQL 复制的新手常见问题的答案,请参阅附录 A.14,“MySQL 8.3 FAQ:复制”

有关复制实现的详细信息、复制的工作原理、二进制日志的过程和内容、后台线程以及决定语句如何记录和复制的规则,请参阅第 19.2 节,“复制实现”