Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  Replication

第19章 复制

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

MySQL 中复制的优点包括:

  • 扩展解决方案 - 将负载分配到多个副本,以提高性能。在这种环境中,所有写入和更新都必须在源服务器上进行。读取操作可以在一个或多个副本上进行。这可以提高写入性能(因为源服务器专门用于更新),同时大大提高读取速度在多个副本之间。

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

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

  • 远程数据分布 - 您可以使用复制来创建远程站点的本地数据副本,而不需要永久访问源服务器。

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

MySQL 8.4 支持不同的复制方法。传统方法基于从源服务器的二进制日志中复制事件,并且需要在源和副本之间同步日志文件和位置。基于全局事务标识符(GTIDs)的方法是事务性的,因此不需要与日志文件或这些文件中的位置进行工作,这大大简化了许多常见的复制任务。使用 GTIDs 进行复制可以确保源和副本的一致性,只要所有在源上提交的事务也在副本上应用。有关 GTIDs 和 MySQL 中的 GTID 基于复制的信息,请见第19.1.3节,“使用全局事务标识符进行复制”。有关使用二进制日志文件位置进行复制的信息,请见第19.1节,“配置复制”

MySQL 支持多种同步方式。原始的同步方式是一种异步同步,一个服务器作为源服务器,而一个或多个其他服务器作为副本服务器。这与 NDB 集群(见第 25 章,MySQL NDB 集群 8.4)中的同步方式不同。在 MySQL 8.4 中,半同步同步也被支持,除了内置的异步同步。使用半同步同步时,源服务器在事务提交前将阻塞,直到至少一个副本服务器确认它已经接收和记录了事务的事件;见第 19.4.10 章,“半同步同步”。MySQL 8.4 还支持延迟同步,使得副本服务器至少延迟指定的时间;见第 19.4.11 章,“延迟同步”。对于需要同步同步的场景,使用 NDB 集群(见第 25 章,MySQL NDB 集群 8.4)。

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

同步格式有两种核心类型:语句基于同步(SBR),将整个 SQL 语句复制,和行基于同步(RBR),只复制更改的行。您还可以使用第三种变体,混合基于同步(MBR)。有关不同同步格式的更多信息,见第 19.2.1 章,“同步格式”

同步是通过多种不同的选项和变量控制的。有关更多信息,见第 19.1.6 章,“同步和二进制日志选项和变量”。同步拓扑结构中还可以应用额外的安全措施,见第 19.3 章,“同步安全”

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

关于数据类型和语句在复制过程中的处理方法、复制功能、版本兼容性、升级和潜在问题的解决方法,请查看第19.5节,“复制笔记和提示”。对于新用户对MySQL复制的常见问题,请查看第A.14节,“MySQL 8.4 FAQ: 复制”

关于复制的实现细节、复制的工作过程、二进制日志的内容和结构、背景线程和用于确定语句记录和复制的规则,请查看第19.2节,“复制实现”