Master 节点,负责所有的「写请求」
Slave 节点,负责大部分的「读请求」;
MySQL 的主从复制:异步单线程。
实现的具体逻辑方法:
Master上 1 个IO线程,负责向Slave传输 binary log(binlog)
Slave上 2 个线程:IO 线程和执行SQL的线程,其中:
IO线程:将获取的日志信息,追加到relay log上;
执行SQL的线程:检测到relay log中内容有更新,则在Slave上执行sql;
- 复制类型分为两类,一种是记录主数据库的操作sql,然后在从数据库执行;另一种是将主数据库中数据的变动记录为set语句,用set命令对从数据库进行行的更新;
- 主从同步出错时,有两种方法解决
解决方法一:跳过一步错误,继续进行同步
msyql> stop slave;
msyql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
msyql> start slave;
方法二:重做主从
msyql> stop slave;
#查看主服务器上当前的 bin-log 日志名和偏移量
msyql> show master status;
#然后到从服务器上执行手动同步
4.对主数据库的操作要注意
- 不要用系统命令复制或删除表数据文件,要用sql命令进行数据修改与表修改、创建或者删除,不然会影响从数据库,造成主从失败;
5.Mysql主从复制常见故障及解决方法
http://www.10tiao.com/html/706/201603/403220961/1.html
6.查看主从延迟的方法
- 主从延时时间:Master 执行成功,到 Slave 执行成功,时间差
- show slave status,通过比较SQL THREAD接受events时间的时间戳与IO THREAD执行事件events时间戳的差值--秒数,来确定slave落后于master多少
- 使用pt-heartbeat工具
http://f.dataguru.cn/thread-461916-1-1.html
7.同步复制 - 主数据库数据写入完毕之后,在从数据库也将数据写入之后,主数据库才会向客户端返回数据写入成功
异步复制 - 主数据库写入之后,从数据库随后更新,只要求数据最终一致,允许延迟存在
8.主从延迟的影响 - 主从数据不一致,灾备系统失效,负载均衡失效,降低系统性能
9.常见的主从延迟原因:
Master 上,大事务,耗时长:优化业务,拆分为小事务
Master 上,SQL 执行速度慢:优化索引,提升索引区分度(事务内部有查询操作)
Master 上,批量 DML 操作:建议延迟至业务低峰期操作
Master 上,多线程写入频繁, Slave 单线程速度跟不上:提升 Slave 硬件性能、借助中间件,改善主从复制的单线程模式
原文地址:http://blog.51cto.com/13569831/2117745
时间: 2024-10-02 05:58:34