mysql-主从复制原理与实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2016-04-14weixin:dragonflyyi•为何要做MySQL主从复制?•MySQL主从复制的原理是什么?•MySQL二进制日志的形式有哪些?•MySQL主从复制有哪些形态?•MySQL主从复制如何来实现?•如何验证主从数据的质量?•遇到的相关问题与解决方案?•相关参考资料主要议题•备份数据(DataBackup)•负载均衡(LoadBalance)•数据分发(DataDistribution)•高可用和数据容错(HighAvailabilityandFailover)只是简单的对数据进行备份,降低数据丢失的风险,有事也用于报表等对数据时效性要求相对较低的场合。主要用于MySQL集群,解决单点故障或者故障切换;降低单台服务的负载,使得访问均衡或者读写分离.主要用于多数据中心的,数据分发与同步为什么要做MySQL主从复制MySQL自带的健康监控和检测,(根据配置的时间间隔)可以检测主库是否正常工作,一旦发现主库宕机或者无法工作,就会选择到最好的一个备库上.•主要基于MySQL二进制日志•主要包括三个进程(2个I/O进程,1个SQL进程)1.Master将数据变化记录到二进制日志中2.Slave将Master的二进制日志,拷贝到Slave的中继日志中3.Slave将中继日志中的事件再做一次,将数据变化,反应到自身(Slave)数据库MySQL的日志分类为:二进制日志、中继日志、错误日志、查询日志、慢查询日志、事务日志MySQL主从复制的原理•基于行的复制(Row-BasedReplication)在主服务器上执行的SQL语句,(将语句写入二进制日志),在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。把改变的内容(数据本身)复制过去,而不是把命令在从服务器上执行一遍.从mysql5.0开始支持默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。MySQL二进制日志的复制类型•基于语句的复制(Statement-BasedReplication)•混合型的复制(Mix-BasedReplication)•主从类型(Master-Slave)•主主类型(Master-Master)•级联类型(Master-Slave-Slave)MySQL复制的常用拓扑结构•安装MySQL服务器分别安装两台MySQL服务器:(MySQL版本最好一致)192.168.0.1(Master)192.168.0.2(Slave)•创建备份账户并授权(在Master上)grantreplicationslaveon*.*to‘copyer'@'%'identifiedby'12345';/*用户名:copyer;密码:12345*/MySQL主从复制的步骤•修改主从的配置•修改Master的配置信息[mysqld]#设置服务器IDserver-id=1#设置需要写日志的数据库binlog-do-db=test#设置不需要写日志的数据库binlog-ignore-db=mysql#日志基于行模式binlog_format=row#二进制日志文件存放位置log-bin=d:/log/mysql/mysql_log_bind:/log/mysql/mysql_log_bin.000001d:/log/mysql/mysql_log_bin.000002d:/log/mysql/mysql_log_bin.000003d:/log/mysql/mysql_log_bin.000004d:/log/mysql/mysql_log_bin.000005d:/log/mysql/mysql_log_bin.000006d:/log/mysql/mysql_log_bin.000007d:/log/mysql/mysql_log_bin.index•修改Slave的配置信息[mysqld]#设置服务器IDserver-id=2#设置需要写日志的数据库replicate-do-db=test#设置不需要写日志的数据库replicate-ignore-db=mysql#开启slave的二进制日志log_slave_updates=1#日志基于行模式binlog_format=row#二进制日志文件存放位置log-bin=d:/log/mysql/mysql_log_binMySQL主从复制的步骤MySQL主从复制的步骤•启动Master并查看状况•关联Slave(在Slave操作)•启动主从复制(在Slave操作)在启动复制前后,可以执行showslave命令查询相关参数Slave_IO_Running=YesSlave_SQL_Running=Yes参数非常多,具体的可以参考MySQL官方文档A.事务的语句先缓存到事务缓存,直到提交指令,才写入binlogB.事务是串行写入binlog,依赖于事务发生的次序MySQL事务与binlog日志的关系MySQL主从复制的状况监测•主从状况监测主要参数》Slave_IO_RunningIO线程是否打开:YES/NO/NULL》Slave_SQL_RunningSQL线程是否运行:YES/NO/NULL》Seconds_Behind_Master落后主库的时间(秒)•可能导致主从延时的因素》主从时钟是否一致》网络通信是否存在延时》是否和日志类型,数据过大有关》从库性能,有没有开启binlog》从库查询是否优化(解决慢查询)MySQL主从数据一致性检测•pt-table-checksum工具检测》检测数据的散列值是否一致》对表数据进行分块检测(以避免导致从库的延时)》必须是居于语句的日志模式才能检测(计算散列的函数需要在从库上重做)》检测要求表、表结构相同(否则检测行为将终止)安全选项:–check-replication-filters是否检查复制过滤规则–check-slave-tables检查是否所有从库都有被检查的表和列–chunk-size-limit每个chunk最大不能超过这个大小,超过就忽略它限速选项:–check-interval多久检查一次主从延迟、主库负载是否达到上限–check-slave-lag是否只检查这个从库的延迟–max-lag最大延迟,超过这个就等待–max-load最大负载,超过这个就等待过滤选项:–databases只检查某些库–tables只检查某些表•••••••推荐书籍:•《高可用MySQL(第2版)》MySQL主从复制参考文献

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功