基于Docker实现MySQL主从复制
前言 MySQL 的主从复制是实现应用的高性能,高可用的基础。对于数据库读操作较密集的应用,通过使数据库请求负载均衡分配到不同 MySQL 服务器,可有效减轻数据库压力。当遇到 MySQL 单点故障中,也能在短时间内实现故障切换。本文就 MySQL 的内建的复制功能进行阐述。 版本 MySQl : 5.7.17 CentOS : 7.4.1708 Docker : 1.13.1 概述 MySQL 复制数据流程: 主库在数据更新提交事务之前,将事件异步记录到binlog二进制日志文件中,日志记录完成后存储引擎提交本次事务 从库启动一个I/O线程与主库建立连接,用来请求主库中要更新的binlog。这时主库创建的binlog dump线程,这是二进制转储线程,如果有新更新的事件,就通知I/O线程;当该线程转储二进制日志完成,没有新的日志时,该线程进入sleep状态。 从库的I/O线程接收到新的事件日志后,保存到自己的relay log(中继日志)中 从库的SQL线程读取中继日志中的事件,并执行更新保存。 配置主从库 主库 my.cnf 配置 在主库的 my.cnf 中打开二进制日志,并设置服务Id。 log-bin = mysql-bin server-id = 1 注意 server-id 必须是一个唯一的数字,必须主从不一致, 且主从库必须设置项。 从库 my.cnf 配置 log