视频教程:运维-主从复制
- 1. 概述
- 2. 原理
- 3. 搭建
- 3.1. 主库配置
- 3.2. 从库配置
- 3.3. 测试
主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。
MySQL支持一台主库同时向多台从库进行复制,从库也可以作为其他从服务器的主库,实现链状复制。
MySQL主从复制的优点主要包含如下三个方面:
- 主库出现问题,可以快速切换到从库提供服务
- 实现读写分离,降低主库的访问压力
- 可以在从库中执行备份,以避免备份期间影响主库服务
MySQL主从复制的原理如下:
从上图来看,复制分为三步:
- Master主库在事务提交时,会把数据变更记录在二进制日志文件(Binlog)中
- 从库读取主库的二进制日志文件(Binlog),写入到从库的中继日志(Relay log)
- Slave重做中继日志当中的事件,将改变反应它自己的数据
参考:CentOS 7安装MySQL8.0.29步骤或者Win10安装MySQL8.0.29.0步骤准备两台服务器
3.1. 主库配置-
修改配置文件
CentOS 7修改配置文件/etc/my.cnfvim /etc/my.cnf
# MySQL的服务器ID,保证整个集群环境中唯一,取值范围为1到2^32-1,默认为1 server-id=1 # 是否只读,1代表只读,0代表读写 # read-only=0 # 忽略的数据库,指不需要同步的数据库 # binlog-ignore-db=mysql # 指定同步的数据库 # binlog-do-db=db01
Win 10修改C:ProgramDataMySQLMySQL Server 8.0my.ini文件(Windows上很多变量都已经有了,比如server-id,建议想修改之前先查找下,没有的变量自己再新增)
-
重启MySQL服务
service mysqld restart
-
登录
mysql -u root -p
-
查询二进制日志坐标
show master status;
- 修改配置文件/etc/my.cnf
vim /etc/my.cnf
server-id=2 read-only=0
- 重启MySQL服务
service mysqld restart
- 登录
mysql -u root -p
- 设置主库的配置
CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.1.1.20',SOURCE_USER='root',SOURCE_PASSWORD='Aa.123123',SOURCE_LOG_FILE='binlog.000003',SOURCE_LOG_POS=157;
- 开启同步操作
start replica;
- 查看主从同步状态
show replica statusG;
主要观察Replica_IO_Running和Replica_SQL_Running这两行(如果出现问题,可以通过查询日志排查问题,CentOS 7上的日志文件是/var/log/mysqld.log)
接着就可以测试增删改了,比如在主服务器上新建一个数据库test,接着刷新一下从服务器,会发现从服务器上也多了一个数据库test



