mysql 主从复制
网易数据库 石勇
提纲
- 什么是主从复制
- 主从复制的原理
- 主从复制的用途
- 主从复制的搭建
- 主从复制的问题
什么是主从复制
- 数据拷贝
- 准实时
- 源-主节点;目的-从节点
主从复制的原理
master binary_log (I/O thread relay_log SQL thread)
复制格式
- SBR statement based replication
- RBR Row based replication
- MBR Mixed based replication
show global variable like "binlog_format";
5.7之后 配置文件 默认为binlog_format =ROW
主从复制的用途
- 实时灾备,用于故障切换
- 读写分离,提供查询服务
- 备份,在从节点上备份
- 此外,主从复制的一些模式
- 一主一从
- 主主复制
- 一主多从
- 多主一从
- 联级复制
主从复制的搭建
主从部署必要条件
- 主库开启binlog日志(设置log-bin参数)
- 主从server-id不同
- 从库服务器能连接主库
主从复制的部署 - 备份还原(mysqldump 或 xtrabackup)
- 授权 (grant repliction slave on ".")
- 配置复制,并启动
- 查看主从复制信息
show master status\G
show processlist\G
show slave status
几组log
* master——log_file
* read_master_log_pos
* relay_log_file
* relay_log_pos
主从复制的问题
存在的问题
- 主库宕机,数据可能丢失
- 从库只有一个sql thread ,主库写的压力大,复制很可能延时
半同步复制 semi-sync
并行复制: - 社区版5.6中新增
- 并行复制是指从库多线程 apply binlog
- 库级别并行应用binlog,同一个库数据更改还是串行的(5.7版并行复制基于事务组)
*设置
set global slave_parallel_workers=10; #设置sql线程数为10