你的位置:首页 > 软件开发 > 数据库 > [MySQL Reference Manual] 18 复制

[MySQL Reference Manual] 18 复制

发布时间:2016-05-05 16:00:27
18 复制18 复制... 118.1 复制配置... 318.1.1 基于Binary Log的数据库复制配置... 318.1.2 配置基于Binary log的复制... 318.1.2.1 设置复制master的配置... 318.1.2.2 创建复制要用的用户... 4 ...

[MySQL Reference Manual] 18 复制

18 复制

18 复制... 1

18.1 复制配置... 3

18.1.1 基于Binary Log的数据库复制配置... 3

18.1.2 配置基于Binary log的复制... 3

18.1.2.1 设置复制master的配置... 3

18.1.2.2 创建复制要用的用户... 4

18.1.2.3 获取复制Binary Log坐标... 4

18.1.2.4 选择同步数据快照的方法... 4

18.1.2.5配置Slave. 5

18.1.2.6 为复制环境增加一个slave. 6

18.1.3 基于全局事务标示符的复制... 7

18.1.3.1 GTID概述... 7

18.1.3.2 使用GTID配置复制... 10

18.1.3.3 使用GTID故障转移或者扩展... 11

18.1.3.4 使用GTID复制的限制... 13

18.1.4 多主复制... 14

18.1.4.1 MySQL多主复制概述... 14

18.1.4.2多主复制教程... 14

18.1.4.3 多主复制监控... 15

18.1.4.4 多主复制错误信息... 16

18.1.5 修改在线服务的复制模式... 17

18.1.5.1 复制模型概述... 17

18.1.5.2 在线启动GTID事务... 18

18.1.5.3 在线关闭GTID事务... 19

18.1.5.4 验证复制的匿名事务... 19

18.1.6 复制和Binary log选项和变量... 20

18.1.7 通常的管理任务... 20

18.1.7.1检查复制状态... 20

18.1.7.2 暂停Slave上的复制... 22

18.2 复制的实现... 22

18.2.1 复制格式... 22

18.2.1.1 基于语句和基于行复制的好处和坏处... 23

18.2.1.2 基于行复制的用处... 24

18.2.1.3 确定binary log中安全和非安全语句... 25

18.2.2 复制实现细节... 26

18.2.3 复制渠道... 27

18.2.3.1 单个渠道的命令和选项... 27

18.2.3.2 版本兼容... 28

18.2.3.3 复制渠道启动选项... 28

18.2.3.4 复制渠道命名协定... 28

18.2.4 复制 Relay日志和状态日志... 28

18.2.4.1 Slave Relay Log. 28

18.2.4.2 Slave状态日志... 29

18.2.5 服务如何评估复制过滤规则... 29

18.2.5.1 评估数据库级别复制和bianry log选项... 30

18.2.5.2 评估表复制选项... 31

18.2.5.3 复制规则应用... 33

18.3 复制解决方案... 33

18.3.1 使用复制备份... 33

18.3.1.1 使用mysqldump备份slave. 34

18.3.1.2 备份原生数据... 34

18.3.1.3 标记为只读备份master或者slave. 34

18.3.2 复制Master和Slave不同引擎... 35

18.3.3使用复制的横向扩展... 35

18.3.4 不同的slave复制不同的数据库... 36

18.3.5 提高复制性能... 36

18.3.6 在错误的时候切换Master37

18.3.7 使用安全连接配置复制... 39

18.3.8 半同步复制... 41

18.3.8.1 半同步复制管理接口... 42

18.3.8.2 半同步复制安装和配置... 42

18.3.8.3 半同步复制监控... 43

18.3.9 延迟复制... 44

18.4 复制注意和提示... 44

 

复制是一个MySQL服务master,复制到另外一个服务slave。复制默认是异步的。Slave不需要一直连接到slave获取master的更新。根据配置,你可以复制所有的数据库,或者指定数据库,或者数据库内的几个表。

MySQL复制的有点:

1.可以分散负荷到多个slave来提高性能。在这个环节,所有的写必须在master执行,读可以在slave上执行。这个模式可以提高些性能。也提高读性能。

2.数据安全,因为数据被复制到slave,slave可以暂停复制进场,可以执行备份,不会损坏master上的数据。

3.分析,live数据可以在master上创建,分析行为可以在slave上执行,不会影响master。

4.长距离数据分布,你可以使用在本地创建远程数据的副本,不需要访问master。

MySQL 5.7支持不同的复制方法。传荣的方法是基于master的binlog,根据log文件的positions来同步。新的方法是基于全局事务标示(GTIDs)是事务标示因此不需要log文件和位置,简化了很多复制任务。复制使用GTIDs保证了master和slave 的一致性,只要在master上提交的事务也会在slave 上提交。关于使用GTIDs复制具体看: Section 18.1.3, “Replication with Global Transaction Identifiers”

在MySQL中的复制支持不同类型的同步。通常是单路异步的同步,一个服务作为master,多个作为slave。在MySQL5.7,半同步复制也被支持,扩展了异步复制。使用半同步复制,在事务提交回复session之前,保证至少有一个slave接受到通知并且接受并且记录了事务的日志。MySQL也支持延迟复制比如slave至少延迟指定时间的日志。

有2个核心类型的复制,基于语句的复制,语句行的复制。也可以使用混合复制类型。

复制通过一些列的选项和变量控制。

当你使用复制来解决各种不同问题,包括性能,支持不同数据库的备份。和一些列解决方案来缓解系统错误。

18.1 复制配置

18.1.1 基于Binary Log的数据库复制配置

根据数据库的配置,Binary log的格式不同。Slave配置读取master的binary log并且执行。

没个slave复制整个binary log。Slave负责哪个语句要被执行。除非你执行了,否则搜有binary log 都会被执行到slave。你可以配置slave指定只执行那些数据库或者表的binary log。

每个slave都保留了一个binary log 的相关记录,记录已经从master传过来的文件名和文件中的位置。也就是说多个slave 可以连接到master并且执行不同的binary log部分。因为slave控制了这些进程,独立的slave可以连接或者不连接到服务,不会对master操作影响。也是因为每个slave记录了当前Binary log 的位置,可以让slave断开之后重新连接。

Master和每个slave必须配置一个唯一的id,server-id,另外每个slave必须配置关于master的一些信息,具体可以看change master to的参数。

18.1.2 配置基于Binary log的复制

大致步骤如下:

1.在master,启动binary log配置server id。可能需要重启服务。

2.每个slave想要连接的master,必须配置server id,可能需要重启服务。

3.可选,创建一个独立的用户来验证,读取binary log。

4.在创建数据快照或者复制进程之前,在master上需要记录当前binary log 的位置。你需要配置slave这样slave知道从哪里开始执行事件。

5.如果你已经有了数据在master上,想要使用它来同步到slave,你需要创建一个数据快照,并且复制到slave。存储引擎会影响创建快照的方式,当你使用MyISAM你必须停止语句获取READ-LOCK,获取当前的binary log并且导出数据。在允许master继续执行语句之前。如果你没有停止服务导出数据,master 的状态信息就不匹配,导致slave的数据库损坏或者不一致。如果你使用innodb,不需要使用read-lock。

6.配置slave连接到master 的信息比如host,login,binary log文件名和位置。

18.1.2.1 设置复制master的配置

为了配置master使用binarylog文件,你必须启动binary log并且设置server id。如果没有被设置,需要重启服务。

Binary Log必须被启动,因为binary log是传输修改的基础。如果binary log 没有启动,那么就不能配置复制。

在复制组内的每个服务必须配置唯一的server id。这个ID用来表示唯一的服务,必须是1到2^32-1中的一个值。

配置binary log和server id选项,关闭MySQL服务并且修改my.cnf在mysqld的配置下设置log-bin和server-id选项。如果已经存在那个根据需要来修改。例如:

[mysqld]

原标题:[MySQL Reference Manual] 18 复制

关键词:MYSQL

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。