Mysql主从复制
1、准备服务器
Mysql主从复制,本文以Mysql8.0.28版本为例
MySQL复制过程分成三步:
①MySQL Master将数据变更写入二进制日志( binary log);
②Slave将Master的binary log拷贝到它的中继日志(relay log);
③Slave重做中继日志中的事件,将数据变更反映它自己的数据。
准备两台Mysql数据库服务器,我这里是一台以自己电脑为主服务器,另外开了一台虚拟机为从服务器。Mysql版本都为8.0.28版本。因为都是在同一台服务器上,不用考虑端口开放以及防火墙问题。
数据库 | 服务器IP | 数据库版本 |
Master | 192.168.200.100 | 8.0.28 |
Slave | 192.168.200.101 | 8.0.28 |
2、主库Master配置
2.1、配置my.ini文件
在主库配置文件下加上如下配置保存,然后需要重启一下Mysql服务。
[mysqld]
#主从复制:主库配置 mysqld下
#[必须]启用二进制日志
log-bin=mysql-bin
#[必须]服务器唯一ID(唯一即可)
server-id=100
2.2、创建主库用户
主库创建testslave用户,赋予replication slave,replication client两个服务器权限。
3.3、查看Master主库状态
执行下面SQL,记录下结果中File和Position的值。
#8.0.22版本之后
show replica status;
#8.0.22版本之前
show slave status;
3、从库Slave配置
3.1、配置my.ini文件
在从库配置文件下加上如下配置保存,从库的ID和主库不重复即可。然后需要重启一下Mysql服务。
[mysqld]
# 主从复制:从库配置 mysqld下
server-id=101
3.2、设置主库相关信息
CHANGE MASTER TO MASTER_HOST='192.168.200.100', MASTER_USER='testslave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS= 157,
MASTER_PORT= 3306;
相关参数说明:
(1)MASTER_HOST : 主库IP地址
(2)MASTER_USER : 访问主库进行主从复制的用户名(上面在主库创建的“testslave”账号)
(3)MASTER_PASSWORD :访问主库进行主从复制的用户名(上面在主库创建的“testslave”账号的密码)
(4)MASTER_LOG_FILE : 从哪个日志文件开始同步(上述查询Master状态中展示的有)
(5)MASTER_LOG_POS: 从指定日志文件的哪个位置开始同步(上述查询Master状态中展示的有)
(6)MASTER_PORT :主库数据库端口
3.3、查看Slave从库状态
#8.0.22版本之后
show replica status;
#8.0.22版本之前
show slave status;
通过状态信息中的 Replica_IO_running 和 Replica_SQL_running 可以看出主从同步是否就绪,如果这两个参数全为Yes,表示主从同步已经配置成功。