第17章 复制

官方文档地址:Chapter 17 Replication


17.1 Configuring Replication
17.2 Replication Implementation
17.3 Replication Security
17.4 Replication Solutions
17.5 Replication Notes and Tips

复制可以将来自一个 MySQL 数据库服务器(称为源)的数据复制到一个或多个 MySQL 数据库服务器(称为副本)。默认情况下复制是异步的;副本不需要一直保持连接来接收来自源的更新。根据配置的不同,您可以复制数据库中的所有数据库、选定的数据库,甚至是选定的表。

MySQL 中复制的优点包括:

  • 扩展解决方案——将负载分散到多个副本中以提高性能。在这种环境中,所有的写入和更新都必须在源服务器上进行,读取可能发生在一个或多个副本上。该模型可以提高写操作的性能(因为源是专门用于更新的),同时不断增加副本数量可以显著提高读取的速度。
  • 数据安全性——因为副本可以暂停复制进程,所以可以在副本上运行备份服务,而不会破坏相应的源数据。
  • 分析——可以在源上创建实时数据,而对信息的分析可以在副本上进行,而不会影响源的性能。
  • 远程数据分发——您可以使用复制创建数据的本地副本,供远程站点使用,而无需直接对源进行访问。

有关如何在此类场景中使用复制的信息,请参见 17.4 复制解决方案

MySQL 8.0 支持不同的复制方式。传统的方法是基于从源的二进制日志复制事件,并要求在源和副本之间同步日志文件和其中的位置。新的基于全局事务标识符(GTIDs)的方法是事务性的,因此不需要处理日志文件或这些文件中的位置,这大大简化了许多常见的复制任务。只要在源上提交的所有事务也都应用在了副本上,使用 GTIDs 的复制就可以保证源和副本之间的一致性。关于 GTIDs 和基于 GTIDs 的 MySQL 复制的更多信息,参见 17.1.3 带有全局事务标识符的复制

MySQL 中的复制支持不同类型的同步。原始的同步类型是单向的异步复制,其中一个服务器充当源,而另一个或多个服务器充当副本。这与 NDB Cluster 的同步复制形成了鲜明对比(见 第23章 MySQL NDB Cluster 8.0)。在 MySQL 8.0 中,除了内置的异步复制外,还支持半同步复制。对于半同步复制,在返回到执行事务的会话之前,直到至少有一个副本承认它已经接收到事务并记录了事务的事件,才会在源上执行提交操作;参见 17.4.10 半同步复制。MySQL 8.0 也支持延迟复制,这样副本就会故意比源延迟至少指定的时间;参见 17.4.11 延迟复制。对于需要同步复制的场景,请使用 NDB Cluster(见 第23章 MySQL NDB Cluster 8.0)。

有许多解决方案可以用于设置服务器之间的复制,最佳的使用方法取决于数据的存在和您正在使用的引擎类型。有关可用选项的更多信息,请参见 17.1.2 设置基于二进制日志文件位置的复制

复制格式有两种核心类型:基于语句的复制(SBR),它复制整个 SQL 语句;基于行复制(RBR),它只复制更改过的行。您还可以使用第三种类型,基于混合复制(MBR)。有关不同复制格式的更多信息,请参见 17.2.1 复制格式

复制是通过许多不同的选项和变量来控制的。有关更多信息,请参见 17.1.6 复制和二进制日志记录选项和变量。可以将附加的安全措施应用到复制拓扑中,如 17.3 复制安全 所述。

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

有关在复制过程中如何处理不同数据类型和语句的注释和提示,包括复制特性、版本兼容性、升级、潜在问题及其解决方案的详细信息,请参见 17.5 复制注释和提示。关于 MySQL 复制的一些问题,请参见 A.14 MySQL 8.0 常见问题:复制

关于复制实现的详细信息,复制是如何工作的,二进制日志的过程和内容,后台线程以及用来决定如何记录和复制语句的规则,请参见 17.2 复制实现

猜你喜欢

转载自blog.csdn.net/wb1046329430/article/details/114940682
今日推荐