Mysql 复制架构
数据库复制的其实就是数据的同步,Mysql数据库基于binary log日志进行数据
增量同步,binary log 日志记录了所有对Mysql数据库的修改操作。
查看:
show binlog_events in 'binlog.000001'
或者:
mysqlbinlog -vv 'binlog.000001'
如下图所展示:
- Master 服务器将数据变更产生的二进制日志通过Dump线程发送给Slave服务器。
- slave服务器的I/O线程负责接收日志数据,保存为中继日志。
- slave服务器的worker线程负责执行中继日志,完成在slave服务器回放Master的日志。
操作步骤:
- 创建复制的账号,赋权。
- 从Master服务器上通过mysqldump工具拷贝全量数据。
- 通过命令change master to 搭建复制关系。
- 通过命令show slave status 观察复制状态。
建议配置:
gtid_mode = on
enforce_gtid_consistency = 1
binlog_gtid_simple_recovery = 1
relay_log_recovery = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
可以保证无论是Master还是Slave宕机恢复后,数据一致。
Mysql复制分类:
- 异步复制,Master和Slave 相互不依赖,性能最好,用在数据不太重要,容易丢失,比如日志监控场景。
- 多源复制,多个Master复制到一台Slave上,便于做统计。
- 延迟复制,Slave延迟回放收到的二进制日志,防止Master上误操作被同步到Slave上:
- 半同步复制: Master在事务提交的过程中,至少N个Slave已经接收到了二进制日志,确保Master宕机时候,
至少N台Slave的数据是完整的,用于核心业务场景。
CHANGE MASTER TO master_delay = 3600
网友评论