Table of Contents
17.1 Replication Configuration
17.2 Replication Implementation
17.3 Replication Solutions
17.4 Replication Notes and Tips
复制使数据可以从一台MySQL数据库服务器(主服务器)复制到一台或多台MySQL数据库服务器(从服务器)。默认情况下,复制是异步的,因此从属服务器不需要永久连接就可以从主服务器接收更新。这意味着更新可以通过长距离连接进行,甚至可以通过临时或间歇连接(例如拨号服务)进行。根据配置,您可以复制数据库中的所有数据库,选定的数据库甚至选定的表。
有关MySQL复制新手经常问的一些问题的答案,请参见第A.14节“ MySQL 5.6 FAQ:复制”。
MySQL中复制的优点包括:
横向扩展解决方案-在多个从站之间分配负载以提高性能。在这种环境下,所有写入和更新都必须在主服务器上进行。但是,读取可能发生在一个或多个从属上。该模型可以提高写入性能(因为主机专用于更新),同时可以在越来越多的从机上显着提高读取速度。
数据安全性-因为数据被复制到从属服务器,并且从属服务器可以暂停复制过程,所以可以在从属服务器上运行备份服务而不会破坏相应的主数据。
分析-实时数据可以在主数据库上创建,而信息分析可以在从数据库上进行,而不会影响主数据库的性能。
远程数据分发-如果分支机构希望使用您的主要数据副本,则可以使用复制来创建数据的本地副本以供使用,而无需永久访问主数据库。
MySQL中的复制功能支持单向异步复制,其中一台服务器充当主服务器,而一台或多台其他服务器充当从服务器。这与NDB Cluster的特征同步复制相反 (请参阅第18章,MySQL NDB Cluster 7.3和NDB Cluster 7.4)。在MySQL 5.6中,除了内置的异步复制外,还支持半同步复制的接口。对于半同步复制,在返回到执行事务的会话之前,对主控块执行的提交,直到至少一个从属服务器确认已接收并记录了事务处理的事件为止。看到 第17.3.9节“同步同步复制” MySQL 5.6还支持延迟复制,以便从属服务器故意落后于主服务器至少指定的时间。请参见 第17.3.10节“延迟复制”。对于需要同步复制的方案 ,请使用NDB Cluster(请参见第18章,MySQL NDB Cluster 7.3和NDB Cluster 7.4)。
有许多解决方案可用于设置两个服务器之间的复制,但是最佳的使用方法取决于数据的存在和所使用的引擎类型。有关可用选项的更多信息,请参见 第17.1.1节“如何设置复制”。
复制格式有两种核心类型:基于语句的复制(SBR),它复制整个SQL语句;和基于行的复制(RBR),它仅复制更改的行。您也可以使用第三种混合混合复制(MBR)。有关不同复制格式的更多信息,请参见 第17.1.2节“复制格式”。在MySQL 5.6中,基于语句的格式是默认格式。
MySQL 5.6.5及更高版本支持基于全局事务标识符 (GTID)的事务复制 。使用这种类型的复制时,不必直接使用日志文件或这些文件中的位置,这大大简化了许多常见的复制任务。因为使用GTID进行复制完全是事务性的,所以只要在主服务器上提交的所有事务也都已应用到从服务器上,就可以保证主服务器和从服务器之间的一致性。有关GTID和基于GTID的复制的更多信息,请参见 第17.1.3节“使用全局事务标识符进行复制”。
复制是通过许多不同的选项和变量来控制的。这些控制复制,超时以及可应用于数据库和表的数据库和筛选器的核心操作。有关可用选项的更多信息,请参见第17.1.4节“复制和二进制日志记录选项和变量”。
您可以使用复制来解决许多不同的问题,包括性能问题,支持不同数据库的备份以及作为减轻系统故障的大型解决方案的一部分。有关如何解决这些问题的信息,请参见 第17.3节“复制解决方案”。
有关在复制过程中如何处理不同数据类型和语句的注释和技巧,包括复制功能,版本兼容性,升级,问题及其解决方案(包括FAQ)的详细信息,请参见 第17.4节“复制注释和技巧”。
有关复制的实现,复制的工作方式,二进制日志的过程和内容,后台线程以及用于决定如何记录和复制语句的规则的详细信息,请参见 第17.2节“复制实现”。




