高性能MySQL 第十章 复制

复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。一台主库的数据可以同步到多台备库上,备库本身也可以被配置成另外一台服务器的主库。主库和备库之间可以有多重不同的组合方式。

MySQL 支持两种复制方式:

1、基于行的复制

2、基于语句的复制

基于语句的复制(也称为逻辑复制)早在 MySQL3.23 版本中就存在,而基于行的复制方式在 5.1 版本中才被加进来。这两种方式都是通过在主库上记录二进制日志、在备库重放日志的方式来实现异步的数据复制。这意味着,在同一时间点备库上的数据可能与主库存在不一致,并且无法保证主备之间的延迟。一些大的语句可能导致备库产生几秒、几分钟甚至几个小时的延迟。

复制解决的问题:

1、数据分布

MySQL 复制通常不会对带宽造成很大的压力,但在 5.1 版本引入的基于行的复制会比传统的基于语句的复制模式的带宽压力更大。可以随意地停止或开始复制,并在不同的地址位置来分布数据备份,例如不同的数据中心。即使在不稳定的网络环境下,远程复制也可以工作。但如果为了保持很低的复制延迟,最好有一个稳定的、低延迟连接。

2、负载均衡

通过 MySQL 复制可以将读操作分布到多个服务器上,实现对读密集型应用的优化,并且实现很方便,通过简单的代码修改就能实现基本的负载均衡。对于小规模的应用,可以简单地对机器名做硬编码或使用 DNS 轮询(将一个机器指向多个 IP 地址)。当然也可以使用更复杂的方法,例如网络负载均衡这一类的标准负载均衡解决方案,能够很好地将负载分配到不同的 MySQL 服务器上。Linux 虚拟服务器也能很好地工作,第 11 张将详细地讨论负载均衡。

3、备份

对于备份来说,复制是一项很有意义的技术补充,但复制既不是备份也不能够去掉备份。

4、高可用性和故障切换

复制能够帮助应用程序避免 MySQL 单点失败,一个包含复制的设计良好的故障切换系统能够显著地缩短宕机时间。

5、MySQL 升级测试

这种做法比较普遍,使用一个更高版本的 MySQL 作为备库,保证在升级全部实例前,查询能够在备库按照预期执行。

原文地址:https://www.cnblogs.com/stone94/p/12594952.html