Chapter 17 Replication 复制
Table of Contents
17.1 Replication Configuration
17.2 Replication Implementation
17.3 Replication Solutions
17.4 Replication Notes and Tips
复制让数据从MySQL 数据库(master) 被复制到一个或者而多个MySQL 数据库实例(slaves).
复制默认是异步的,因此slaves 不需要被永久性的连接来接收从master的更新。
这意味着 更新可以发生通过远程连接 甚至临时的或者间歇性的连接
比如拨号服务,依赖配置,你可以复制所有的数据库,选择的数据库,甚至选择的表在一个数据库里。
Advantages of replication in MySQL include:
MySQL复制的优点包括:
1. 扩展解决方案-- 分散负载在多个slaves来改善性能。
在这种情况下,所有的写和更新必须发生在master server上。Reads,然而,
可能发生在一个或者多个slaves上。
这种模型可以改善写的性能(因为master是专注于写),
大量增加读速度随着slaves的增加。
2. 数据安全性--因为数据是复制到slave, slave可以暂停复制过程,
可以在slave上备份 而不影响相应的master的数据
3.分析-- 活的数据可以创建在master上, 数据的分析可以发生在slave上不影响master的性能。
4.远程数据发布 --如果一个分支机构需要有一份主数据的拷贝来进行工作。
你可以使用复制来创建一个本地的数据拷贝 对于他们的使用,而不需要永久的访问master
复制在MySQL 功能支持单向,异步复制,在其中一个server 作为master,
而一个或者多个其他servers表现为slaves.
与此形成鲜明对比,同步复制是MySQL 集群的特定
在MySQL 5.6,一个接口道半同步复制是被支持的 除了内置的异步复制。
在半同步复制, 一个提交执行在master 上会被堵塞在至少一个slave 确认已经收到和记录了事务的evnets
才返回。
半同步复制,MySQL 5.6也支持延迟复制 比如一个slave server 故意延迟在master后至少一个指定的时间。
有大量的解决方案来设置复制在2个servers之间, 但是最好的方式是使用取决于存在的数据
和 你使用的存储引擎。
有两个核心的复制格式,基于语句的复制(SBR),会复制整个语句,
基于行的复制,只有复制改变的行。
你也可以使用第三者, Mixed 混合型复制
MySQL 5.6.5 和后来的支持事务复制基于global transaction identifiers (GTIDs).
当使用这种类型的复制,它不需要直接和log files工作或者那些日志的positions,
会极大的简化很多常见的复制任务。
因为复制使用GTIDs是整个事务,master和slave 是一致的只有所有的事务在master上提交
也会应用于slave.
复制是通过一些不同的选项和变量来控制的,
那些控制复制的核心操作,超时,和数据库和过滤可以应用于数据库和表
你可以使用复制来解决一些不同的问题, 包含性能问题,支持备份不同的数据库,
并作为减轻系统故障的解决方案