MySQL配置主从复制
一,概述
主从复制是指将主数据库的DDL和 DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。
MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。

二,原理

从上图来看,主从复制分成三步:
- Master主库在事务提交时,会把数据变更记录在二进制日志BinLog中
- 从库读取主库的二进制日志文件BinLog,写入到从库的中继日志Relay log
- slave重做中继日志中的事件,将改变反应它自己的数据
三,搭建
3.1 环境准备

3.2 主库配置
-
修改配置文件
/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 -
重启MySQL服务
systemctl restart mysqld -
登录MySQL,创建远程连接的账号,并赋予主从复制权限
#创建 slave 用户,并设置密码,该用户可以在任意主机连接该MySQL服务 create user 'slave'@'%' identified with mysql_native_password By '123456'; #为 slave用户配置主从复制权限 grant replication slave on *.* to 'slave'@'%'; -
通过指令,查看二进制日志的坐标
show master status;字段含义:
file:从哪个日志文件开始推送日志文件position:从哪个位置开始推送日志binlog_ignore_db:指定不需要同步的数据库
3.3 从库配置
-
修改配置文件
/etc/my.cnf# mysql服务id,保证整个集群环境中唯一,取值范围:1~2的32次方-1,默认为1 server-id=2 #是否只读,1代表只读,0代表读写 read-only=1 -
重启MySQL服务
systemctl restart mysqld -
登录mysql,配置主库配置
CHANGE REPLICATION SOURCE TO SOURCE_HOST='master的ip地址',SOURCE_USER='上述配置的用户',SOURCE_PASSWORD='密码',SOURCE_LOG_FILE='上述的file名',SOURCE_LOG_POS='上述的postition';上述是8.0.23中的语法,如果mysql是8.0.23之前的版本,执行如下SQL
CHANGE MASTER TO MASTER_HOST='MASTER的ip地址',MASTER_USER='上述的用户名',MASTER_PASSWORD='密码',MASTER_LOG_FILE='log文件',MASTER_LOG_POS=上述的postition;参数名 含义 8.0.23之前 SOURCE_HOST 主库ip地址 MASTER_HOST SOURCE_USER 连接主库的用户名 MASTER_USER SOURCE_PASSWORD 连接主库的密码 MASTER_PASSWORD SOURCE_LOG_FILE binlog日志文件名 MASTER_LOG_FILE SOURCE_LOG_POS binlog日志文件位置 MASTER_LOG_POS -
开启同步操作
start replica; #8.0.22之后 start slave; #8.0.22之前 -
查看主从同步状态
show replica status; #8.0.22之后 show slave status; #8.0.22之前只要如下是yes代表成功


浙公网安备 33010602011771号