• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 位置: MySQL 8 中文手册

    MySQL 复制数据

    复制使数据可以从一台MySQL数据库服务器(主服务器)复制到一台或多台MySQL数据库服务器(从服务器)。默认情况下,复制是异步的;从站不需要永久连接就可以接收来自主站的更新。根据配置,您可以复制数据库中的所有数据库,选定的数据库甚至选定的表。

    MySQL中复制的优点包括:

    • 横向扩展解决方案-在多个从站之间分配负载以提高性能。在这种环境下,所有写入和更新都必须在主服务器上进行。但是,读取可能发生在一个或多个从属上。该模型可以提高写入性能(因为主机专用于更新),同时可以在越来越多的从机上显着提高读取速度。
    • 数据安全性-因为数据被复制到从属服务器,并且从属服务器可以暂停复制过程,所以可以在从属服务器上运行备份服务而不会破坏相应的主数据。
    • 分析-实时数据可以在主数据库上创建,而信息分析可以在从数据库上进行,而不会影响主数据库的性能。
    • 远程数据分发-您可以使用复制来创建数据的本地副本以供远程站点使用,而无需永久访问主数据库。

    有关在这种情况下如何使用复制的信息,请参见“复制解决方案”。

    MySQL 8.0支持不同的复制方法。传统方法基于复制主机二进制日志中的事件,并且要求日志文件及其中的位置在主机和从机之间同步。基于全局事务标识符(GTID)的较新方法是事务性的,因此不需要使用日志文件或这些文件中的位置,从而大大简化了许多常见的复制任务。使用GTID进行复制可以确保主服务器和从服务器之间的一致性,只要在主服务器上提交的所有事务也都已应用于从服务器上。有关MySQL中GTID和基于GTID的复制的更多信息,请参见“使用全局事务标识符进行复制”。有关使用基于二进制日志文件位置的复制的信息,请参见“配置复制”。

    MySQL中的复制支持不同类型的同步。同步的原始类型是单向异步复制,其中一台服务器充当主服务器,而一台或多台其他服务器充当从服务器。这与NDB Cluster的特性同步复制相反(请参阅MySQL NDB Cluster 8.0)。在MySQL 8.0中,除了内置的异步复制外,还支持半同步复制。对于半同步复制,在返回到执行事务的会话之前,在主块上执行提交,直到至少一个从属确认它已接收并记录了该事务的事件为止。看到“同步复制”。MySQL 8.0还支持延迟复制,以便从属服务器故意落后于主服务器至少指定时间。请参见“延迟复制”。对于需要同步复制的方案,请使用NDB Cluster(请参阅MySQL NDB Cluster 8.0)。

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

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

    复制是通过许多不同的选项和变量来控制的。有关更多信息,请参见“复制和二进制日志记录选项和变量”。可以将其他安全措施应用于复制拓扑,如“复制安全性”所述。

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

    有关在复制过程中如何处理不同数据类型和语句的注释和技巧,包括复制功能,版本兼容性,升级以及潜在问题及其解决方案的详细信息,请参见“复制注释和技巧”。有关MySQL复制新手经常问的一些问题的答案,请参见第A.14节“ MySQL 8.0 FAQ:复制”。

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