目录
概述和应用场景
概述:让一台服务器与另一台保持同步(数据一致),用于构建高可用、高性能的应用
应用场景:
- 水平扩展,负载均衡
- 主从复制--读写分离
- 容灾恢复
工作流程
- 主
- 数据修改时,写入binlog
- 从
- 用IO线程读取主的binlog,写入从的中继日志relaylog
- SQL线程读取relaylog,重放SQL语句到从数据库上
原理
- 基于语句的复制
- 优点:实现简单
- 缺点:触发器或者存储过程可能出现复制问题
- 基于数据行的复制
- 优点:不必执行SQL,不必加锁(串行执行)
- 缺点:无法判断执行了哪些SQL语句,出现问题时不好Debug
常见问题
- 主从延迟:主从日志偏移量之差 Exec_Master_Log_Pos - Read_Master_Log_Pos
- 大事务切分成小事务
- 禁用从的binlog
- 提高网络带宽
- 主库Binlog损坏:OS缓冲写,可能宕机了漏了一些在内存
- sync_binlog选项,开启后每次提交事务前先将Binlog同步到磁盘
- 主库Binlog丢失:
- Binlog备份与恢复 FLUSH LOGS,mysqlbinlog
- 从库RelayLog损坏:
relay_log_recovery=1 放弃所有未执行的relay log,并且重新从master获取日志
- 从库RelayLog丢失:
- 重新配置复制,reset slave,change master
学习自
- MySQL技术内幕:InnoDB存储引擎
- 高性能MySQL
- 一些博客。。抱歉,没记下来