mysql 5.7.29 主从同步配置
- [1、安装mysql 5.7.29](#1、安装mysql 5.7.29)
- 2、配置文件确认
-
- [2.1、主库配置文件 /etc/my.cnf](#2.1、主库配置文件 /etc/my.cnf)
- [2.2、从库配置文件 /etc/my.cnf](#2.2、从库配置文件 /etc/my.cnf)
- 3、主库的业务库test同步到从库
- 4、配置主从复制
- 5、验证数据同步
1、安装mysql 5.7.29
链接: 银河麒麟v10 sp3 2403 二进制安装包 安装mysql 5.7.29
| 角色 | IP 地址 | 数据目录 | Server ID | 业务库大小 |
|---|---|---|---|---|
| 主库 (Master) | 192.168.2.11 | /data/mysql | 1 | 有1个业务库test,约 1.36 GB |
| 从库 (Slave) | 192.168.2.12 | /data/mysql | 2 | 待同步 |
前置条件:
1、两台服务器已安装 MySQL 5.7.29,服务已启动。
2、两台服务器网络互通,防火墙已放行 3306 端口。
3、主库上已存在业务数据库 test(约 1.36 GB)。
4、当前没有应用连接主库(确保备份期间无写入)。
2、配置文件确认
2.1、主库配置文件 /etc/my.cnf
在配置文件中添加mysql主从配置相关的配置
vi /etc/my.cnf
在mysqld下面添加如下语句
bash
# master-slave-conf
server_id=1
log-bin=/data/mysql/mysql-bin
log-bin-index=/data/mysql/mysql-bin.index
最终主库配置文件 /etc/my.cnf如下
bash
[client]
socket=/data/mysql/mysql.sock
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# Disable name resolve
skip-name-resolve
max_connections=500
# master-slave-conf
server_id=1
log-bin=/data/mysql/mysql-bin
log-bin-index=/data/mysql/mysql-bin.index
[mysqld_safe]
log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid
重启mysql数据库服务
先停止mysql数据库服务:
bash
cd /usr/local/mysql
bin/mysqladmin --defaults-file=/etc/my.cnf -p shutdown

然后启动mysql数据库服务:
bash
cd /usr/local/mysql
bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

重启后形成了如下文件:
/data/mysql/mysql-bin.000001
/data/mysql/mysql-bin.index

2.2、从库配置文件 /etc/my.cnf
在配置文件中添加mysql主从配置相关的配置
vi /etc/my.cnf
在mysqld下面添加如下语句
bash
# master-slave-conf
server_id=2
relay-log=/data/mysql/relay-bin
relay-log-index=/data/mysql/relay-bin.index
最终从库配置文件 /etc/my.cnf如下
bash
[client]
socket=/data/mysql/mysql.sock
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# Disable name resolve
skip-name-resolve
max_connections=500
# master-slave-conf
server_id=2
relay-log=/data/mysql/relay-bin
relay-log-index=/data/mysql/relay-bin.index
[mysqld_safe]
log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid
重启mysql数据库服务
先停止mysql数据库服务:
bash
cd /usr/local/mysql
bin/mysqladmin --defaults-file=/etc/my.cnf -p shutdown

然后启动mysql数据库服务:
bash
cd /usr/local/mysql
bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

3、主库的业务库test同步到从库
3.1、备份主库业务库test
主库服务器上执行:
bash
mysqldump -u root -p \
--databases test \
--routines \
--triggers \
--set-gtid-purged=OFF \
> /tmp/test_backup.sql

参数说明:
| 参数 | 作用 |
|---|---|
| --databases test | 只备份指定的业务库。 |
| --routines | 备份存储过程和函数(没有也可以加这个参数,加上更完备)。 |
| --triggers | 备份触发器 |
| --set-gtid-purged=OFF | 必须添加,防止备份文件包含 GTID 信息,与我们的非 GTID 复制方案兼容。 |
备份时间预估:
1.36GB 数据量,使用默认参数备份,预计耗时 1-3 分钟。8核16G服务器实测需要1分钟。
备份文件大小约为数据量的 60%-80%,约 800MB - 1.1GB。
查看备份文件

3.2、传输备份文件到从库服务器
把test_backup.sql上传到从库服务器/tmp目录下
3.3、恢复主库业务库test到从库
从库服务器上执行:
bash
mysql -u root -p < /tmp/test_backup.sql

恢复时间预估:1.36GB 数据恢复约需 2-5 分钟,取决于从库磁盘 I/O 性能。8核16G服务器实测需要2分钟。
4、配置主从复制
4.1、主库配置
登录主库 MySQL
bash
mysql -u root -p
sql
SHOW MASTER STATUS;

记录输出的 File 和 Position 值,例如:
File: mysql-bin.000001
Position: 154
4.2、从库配置
4.2.1、从库配置主从连接信息
登录从库 MySQL
bash
mysql -u root -p
配置主从连接信息
sql
CHANGE MASTER TO
MASTER_HOST='192.168.2.11',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='主库root密码',
MASTER_LOG_FILE='mysql-bin.000001', -- 4.1中记录的 File
MASTER_LOG_POS=154; -- 4.1中记录的 Position

CHANGE MASTER TO执行后形成了如下文件:
/data/mysql/relay-bin.000001
/data/mysql/relay-bin.index

查看主从同步状态
sql
show slave status\G


4.2.2、从库启动复制线程
sql
START SLAVE;

查看主从同步状态
sql
show slave status\G
重点关注:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes


5、验证数据同步
在主库的 test 库中插入一条测试数据。
在从库查询,确认数据已同步。