第 16 章复制

目录

复制允许将来自一个 MySQL 数据库服务器(master)的数据复制到一个或多个 MySQL 数据库服务器(从属服务器)。默认情况下,复制是异步的从站不需要永久连接以接收来自 master 的更新。根据 configuration,您可以复制数据库中的所有数据库,所选数据库甚至选定的表。

MySQL 中复制的优点包括:

  • Scale-out 解决方案 - 在多个从站之间分配负载以提高性能。在此环境中,所有写入和更新都必须在 master 服务器上进行。但是,读取可能发生在一个或多个从站上。这个 model 可以改善写入的性能(因为 master 专用于更新),同时显着提高了越来越多的从站的读取速度。

  • 数据安全性 - 因为数据被复制到从站,并且从站可以暂停复制 process,所以可以在从站上运行备份服务而不会破坏相应的 master 数据。

  • 分析 - 可以在 master 上创建实时数据,而信息分析可以在从属设备上进行,而不会影响 master 的 performance。

  • Long-distance 数据分发 - 您可以使用复制为 remote 站点创建数据的本地副本,而无需永久访问 master。

有关如何在此类方案中使用复制的信息,请参阅第 16.3 节,“复制解决方案”

MySQL 5.7 支持不同的复制方法。传统方法基于从 master 的二进制 log 复制 events,并要求 log files 及其中的位置在 master 和 slave 之间同步。基于 global transaction 标识符(GTID)的较新方法是 transactional,因此不需要使用 log files 或这些 files 中的位置,这极大地简化了许多 common 复制任务。使用 GTID 的复制保证 master 和 slave 之间的一致性为 long,因为在 master 上提交的所有 transactions 也已应用于从属。有关 MySQL 中 GTID 和 GTID-based 复制的更多信息,请参阅第 16.1.3 节,“使用 Global Transaction 标识符复制”。有关使用基于二进制 log 文件位置的复制的信息,请参阅第 16.1 节,“配置复制”

MySQL 中的复制支持不同类型的同步。原始类型的同步是 one-way,异步复制,其中一个服务器充当 master,而一个或多个其他服务器充当从属服务器。这与同步复制形成对比,后者是 NDB Cluster 的特征(参见第 21 章,MySQL NDB Cluster 7.5 和 NDB Cluster 7.6)。在 MySQL 5.7 中,除了 built-in 异步复制之外,还支持半同步复制。使用半同步复制,在 master 块上执行提交,然后返回执行 transaction 的 session,直到至少有一个 slave 确认已收到并记录了 transaction 的 events;见第 16.3.9 节,“半同步复制”。 MySQL 5.7 还支持延迟复制,使得从属服务器故意滞后 master 至少指定的 time 时间;见第 16.3.10 节,“延迟复制”。对于需要同步复制的场景,请使用 NDB Cluster(请参阅第 21 章,MySQL NDB Cluster 7.5 和 NDB Cluster 7.6)。

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

有两种核心类型的复制格式:基于语句的复制(SBR),它复制整个 SQL 语句,以及基于行的复制(RBR),它仅复制已更改的行。您还可以使用第三种混合复制(MBR)。有关不同复制格式的详细信息,请参阅第 16.2.1 节,“复制格式”

通过许多不同的选项和变量来控制复制。有关更多信息,请参阅第 16.1.6 节,“复制和二进制 Logging 选项和变量”

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

有关在复制过程中如何处理不同数据类型和语句的说明和提示,包括复制 features,version 兼容性,升级和潜在问题及其解决方案的详细信息,请参阅第 16.4 节,“复制说明和提示”。有关 MySQL Replication 新手经常提出的一些问题的答案,请参阅第 A.13 节,“MySQL 5.7 FAQ:复制”

有关复制的实现,复制的工作原理,二进制 log 的 process 和内容,后台线程以及用于决定如何记录和复制 statements 的规则的详细信息,请参阅第 16.2 节,“复制实现”

Updated at: 9 months ago
Common 数据库服务器层Table of content配置复制