视频教程:运维-主从复制
1. 概述
主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制,从库也可以作为其他从服务器的主库,实现链状复制。 MySQL主从复制的优点主要包含如下三个方面:
- 主库出现问题,可以快速切换到从库提供服务
- 实现读写分离,降低主库的访问压力
- 可以在从库中执行备份,以避免备份期间影响主库服务
2. 原理
MySQL主从复制的原理如下: 从上图来看,复制分为三步:
- Master主库在事务提交时,会把数据变更记录在二进制日志文件(Binlog)中
- 从库读取主库的二进制日志文件(Binlog),写入到从库的中继日志(Relay log)
- Slave重做中继日志当中的事件,将改变反应它自己的数据
3. 搭建
参考:CentOS 7安装MySQL8.0.29步骤或者Win10安装MySQL8.0.29.0步骤准备两台服务器
3.1. 主库配置
-
修改配置文件 CentOS 7修改配置文件/etc/my.cnf vim /etc/my.cnf
server-id=1
Win 10修改C:\ProgramData\MySQL\MySQL Server 8.0\my.ini 文件(Windows上很多变量都已经有了,比如server-id ,建议想修改之前先查找下,没有的变量自己再新增) -
重启MySQL服务 service mysqld restart
-
登录 mysql -u root -p
-
查询二进制日志坐标 show master status;
3.2. 从库配置
- 修改配置文件
/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 status\G;
主要观察Replica_IO_Running 和Replica_SQL_Running 这两行(如果出现问题,可以通过查询日志排查问题,CentOS 7上的日志文件是/var/log/mysqld.log )
3.3. 测试
接着就可以测试增删改了,比如在主服务器上新建一个数据库test ,接着刷新一下从服务器,会发现从服务器上也多了一个数据库test
|