MySQL5.6replicate容灾方案

上传人:M****1 文档编号:493462980 上传时间:2022-12-05 格式:DOCX 页数:11 大小:121KB
返回 下载 相关 举报
MySQL5.6replicate容灾方案_第1页
第1页 / 共11页
MySQL5.6replicate容灾方案_第2页
第2页 / 共11页
MySQL5.6replicate容灾方案_第3页
第3页 / 共11页
MySQL5.6replicate容灾方案_第4页
第4页 / 共11页
MySQL5.6replicate容灾方案_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《MySQL5.6replicate容灾方案》由会员分享,可在线阅读,更多相关《MySQL5.6replicate容灾方案(11页珍藏版)》请在金锄头文库上搜索。

1、MySQL 5.6 replicate容灾方案目 录1 文档介绍41.1 文档目的41.2 文档范围41.3 读者对象41.4 作业内容和范围41.5 术语与缩写解释42 MYSQL REPLICATE概述52.1 MySQL replicate原理52.2 MySQL replicate架构63 MYSQL REPLICATE安装配置73.1 安装MySQL73.2 配置MySQL replicate73.3 优化MySQL replicate84 MYSQL REPLICATE测试94.1测试主备数据一致性94.2 测试主备数据延迟95 常见问题处理115.1 MySQL replicat

2、e数据同步问题115.2 MySQL权限问题115.3 redo日志问题115.4 sock位置问题121 文档介绍1.1 文档目的1.2 文档范围1.3 读者对象1.4 作业内容和范围1.5 术语与缩写解释2 MySQL replicate概述2.1 MySQL replicate原理 说明: MySQL作为常用生产数据库中的一种,容灾及高可用方面设计是必须考虑的。而MySQL replicate是容灾、负载均衡、读写分离、高可用性等技术的基础,不仅使用广泛且易于扩展,是一项成熟的技术。成功的商业案例如:replicate+MHA;replicate+corbar;replicate+MMM

3、等。本章节主要介绍MySQL replicate原理及架构为安装配置replicate做技术储备。1、MySQL replicate复制常见用途:1)数据容灾:复制是备份的扩展方案,但不能直接取代备份;2)负载均衡:通过复制可以将读操作分布到多个服务器上;3)高可用性:能避免单点故障,一个包含复制的良好设计系统能够显著缩短宕机时间;4)MySQL升级:复制也是作为常用升级测试的解决方案。2、MySQL replicate复制原理:复制原理图1) 在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志中。MySQL会按事务提交的顺序而非每条语句执行的顺序来记录二进制日志。在记录二

4、进制日志后,主库会告诉存储引擎可以提交事务了。2) 备库将主库的二进制日志复制到本地中继日志中。备库会启动一个IO线程,IO线程跟主库建立一个普通的客户端连接,然后再主库上启动一个特殊的二进制(binlog dump)线程,这个二进制转储线程会读取主库上二进制日志中的事件。它不会对事件进行轮询。如果该线程追赶上了主库,它将进入睡眠状态,知道主库发送信号通知其有新的事件产生时才会被唤醒,备库IO线程会将接受到的事件记录到中继日志中。3) 备库启动SQL线程从中继日志中读取事件并在备库执行,从而实现备库数据的更新。当SQL线程追赶上IO线程时,中继日志通常已经在系统缓存中,所以中继日志开销很低。S

5、QL线程执行的事件也可以通过配置选项来决定是否写入其自己的二进制日志中。2.2 MySQL replicate架构1、一主多备在有少量写和大量读时,这种配置非常有用。可以把读分摊到多个备库上,直到备库给主库造成了太大的负担,或者主备之间的带宽成为瓶颈为止。尽管这是非常简单的拓扑结构,但它非常灵活,能满足多种需求。它的用途:1)为不同的角色使用不同的备库(例如添加不同的索引或使用不同的存储引擎)2)把一台备库当作待用的主库,除了复制没有其他数据传输。3)将一台备库放到远程数据中心,用作灾难恢复4)延迟一个或多个备库,以备灾难恢复5)使用其中一个备库,作为备份、培训、开发或者测试使用服务器。2、主

6、动-主动模式下主-主复制主-主复制也叫双向复制包含两台服务器,每一个都配置成对方的主库和备库。一个可能的应用场景是两个处于不同地理位置的办公室,并且都需要一份可写的数据拷贝。这种配置最大的问题是如何解决冲突,两个可写的互主服务器导致的问题非常多。通常发生在两台服务器同时修改一行记录,或同时在两台服务器上向一个包含auto_increment列的表里插入数据。总体来说,允许向两个服务器上写入所带来的麻烦远远大于其带来的好处。3、主动-被动模式下主-主复制这种的主要区别在于其中一台服务器是只读的被动服务器。这种方式使得反复切换主动和被动服务器非常方便,因为服务器的配置是对称的。这使得故障转移和故障

7、恢复很容易。它也可以让你在不关闭服务器的情况下执行维护、优化表、升级操作系统或其他任务。设置主动-被动的主-主拓扑结构在某种意义上类似于创建一个热备份,但是可以使用这个“备份”来提高性能,例如,用它来执行读操作、备份、“离线”维护以及升级等。真正的热备份做不了这些事情。然后,不会得到比单台服务器更好的写性能。4、主库、分发主库以及备库当备库足够多时,会对主库造成很大负载。每个备库会再主库上创建一个线程,并执行binlog dump命令。该命令会读取二进制日志文件中的数据并将其发送到备库。每个备库都会重复这样的工作,它们不会共享binlog dump的资源。因此,如果需要多个备库,一个好办法是从

8、主库移出负载并使用分发主库。分发主库事实上也是一个备库,它的唯一目的就是提前和提供主库的二进制日志。多个备库连接到分发主库,这使原来的主库拜托了负担。为了避免在分发主库上做实际的查询,可以将它的表修改为blackhole存储引擎。3 MySQL replicate安装配置3.1 安装MySQL省略3.2 配置MySQL replicate说明:配置复制的基本步骤总共三步:1、 在每台服务器上创建复制账号;2、 配置主库和备库;3、 通知备库连接到主库并从主库复制数据。1、 创建复制账号(主备库都创建):mysqlgrant replication slave,replication clien

9、t on *.* to repl192.168.0.% identified by password;2、 配置主库和备库主库配置参数:log_bin = /var/lib/mysql/mysql-binserver_id = 10binlog_format=ROW备库配置参数:lob_bin = mysql-binserver_id = 20relay_log = /var/lib/mysql/mysql-relay-binlog_slave_updates = 1read_only = 13、启动复制备库执行mysqlchange master to master_host=server1

10、,master_user=repl,master_password=11,master_log_file=mysql-bin.000001,master_log_pos=0;4、主备库查看复制状态:主库状态检查:mysqlshow master status;备库状态检查:mysqlshow slave statusG;3.3 优化MySQL replicate说明:有许多参数来控制复制,其中一些会对数据安全和性能产生影响。为降低问题发生概率,下面配置参数建议设置。1、主库优化参数设置:sync_binlog=1innodb_flush_log_at_trx_commit=1expire_lo

11、gs_days=8参数详解:sync_binlog:开启此选项MySQL每次在提交事务前会将二进制日志同步到磁盘上,保证不丢失事件;innodb_flush_log_at_trx_commit:每次提交及刷新日志,和sync_binlog配合设置保证主库布丢失事件;expire_logs_days:设置binlog保留时间,避免因binlog过快增长撑暴磁盘。2、备库优化参数设置:expire_logs_days=8binlog_format=ROWskip_slave_startsync_master_info= 1000sync_relay_log_info= 1000参数详解:expir

12、e_logs_days:设置binlog保留时间,避免因binlog过快增长撑暴磁盘;binlog_format:设置复制模式;skip_slave_start:关闭slave自动开启复制;sync_master_info:同步master.info文件的方式;sync_relay_log_info:同步relay-log.info文件的方式。4 MySQL replicate测试4.1测试主备数据一致性说明:检查主备数据一致性应该是一个日常工作,特别是当使用备库来做备份时尤为重要,而MySQL本身是没有工具来检查主备数据一致性的。所以我推荐使用percona toolkit工具集里的pt-t

13、able-checksum来检测。它的原理是在主库中对数据进行校验并将结果插入到一个表中,通过复制传递到备库后在备库也进行校验一遍。然后和主库的校验结果比较是否一致。1、安装percona toolkt工具集主备库都需要安装#Yum y install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL# rpm -Uvh percona-toolkit-2.2.1-2.noarch.rpm2、创建检查数据一致性账号Mysqlgrant select,process,super,replication slave on *.*

14、to checksumsIP identified by password;Mysqlgrant create,alter,drop,select,insert,update,delete on csrep.* to checksumsIP;Mysqlflush privileges; 3、检查数据一致性状态在主库执行# pt-table-checksum h=172.16.65.15,u=checksums,p=123,P=3306 -d csrep -nocheck-replication-filters -replicate=csrep.checksums -no-check-binlo

15、g-format参数详解:-nocheck-replication-filters :不检查复制过滤器,建议启用。后面可以用-databases来指定需要检查的数据库-no-check-binlog-format : 不检查复制的binlog模式,要是binlog模式是ROW,则会报错-replicate= :把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中-databases= :指定需要被检查的数据库,多个则用逗号隔开-tables= :指定需要被检查的表,多个用逗号隔开4、修复主备数据不一致数据-在备库执行# pt-table-sync -print -sync-to-master h=172.16.65.19 -d csrep -t data11 P=3306,u=checksums,p=123

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号