文章目录
配置 MySQL 主从复制
MySQL 的主从复制是异步操作。
MySQL 的复制类型分为2种:
- 基于 Binary Log 日志的复制
- 使用 GTID 完成基于事务的复制
三种 Binary Log 日志格式:
- Statement:存储 SQL 语句,存储日志量最小
- Row:存储 event 数据,存储日志量大,不能直接进行读取
- Mixed:介于 Row 和 Statement 之间,对于不确定的操作使用 Row 记录
基于日志的复制
测试环境
两台装有 CentOS7 的虚拟机 ,其中 MySQL 版本为 5.7.25
Master(主)IP 为 192.168.33.101
Slave(从)IP 为 192.168.33.102
配置 Master(主)
使用 vim /etc/my.cnf
编辑 my.cnf,添加如下配置:
[mysqld]
server-id=1
log-bin=master-bin
配置完成之后,需要使用 systemctl restart mysqld.service
重启服务
使用命令 show master status
查看 Master(主)状态:
在 Master 数据库创建数据同步用户,授予用户 slave 权限 REPLICATION SLAVE,用于在主从库之间同步数据。
CREATE USER 'slave'@'192.168.33.102' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.33.102';
FLUSH PRIVILEGES;
配置 Slave(从)
同配置 Master 一样在 my.cnf 文件中添加如下配置:
[mysqld]
server-id=2
relay-log=slave-relay-bin
配置完成之后,需要使用 systemctl restart mysqld.service
重启 mysql 服务使配置生效。
连接 Master(主)和 Slave(从)
在 Slave(从)数据库中连接 Master(主):
change master to master_host='192.168.33.101', master_user='slave', master_password='123456', master_port=3306, master_log_file='master-bin.000001', master_log_pos=775;
参数:
- master_host :Master 地址
- master_port:Master 端口号
- master_user:用于主从同步的用户
- master_password:用于主从同步的用户密码
- master_log_file:指定日志文件
- master_log_pos:指定日志文件的开始读位置
启动主从同步 start slave;
查看 Slave(从)状态:
Slave_IO_Running 和 Slave_SQL_Running 都是 Yes,说明主从复制配置成功。
测试主从复制
在 Master 创建一个数据库 db_test:
此时,查看 Slave 数据库,发现已经自动同步 db_test: