配置 MySQL 主从复制

配置 MySQL 主从复制

MySQL 的主从复制是异步操作。
MySQL 的主从复制
MySQL 的复制类型分为2种:

  1. 基于 Binary Log 日志的复制
  2. 使用 GTID 完成基于事务的复制

三种 Binary Log 日志格式:

  1. Statement:存储 SQL 语句,存储日志量最小
  2. Row:存储 event 数据,存储日志量大,不能直接进行读取
  3. 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(主)状态
在 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(从)状态
Slave_IO_Running 和 Slave_SQL_Running 都是 Yes,说明主从复制配置成功。

测试主从复制

在 Master 创建一个数据库 db_test:
Master 数据库
此时,查看 Slave 数据库,发现已经自动同步 db_test:
Slave 数据库

参考

  1. MySQL5.7复制功能实战
  2. 基于Docker的Mysql主从复制搭建

猜你喜欢

转载自blog.csdn.net/leifchen90/article/details/93775447