mysql 5.7.29 主从同步配置

mysql 5.7.29 主从同步配置

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 库中插入一条测试数据。

在从库查询,确认数据已同步。

相关推荐
姜鱼问生2 小时前
docker exec 排查容器问题:从日志到进程
运维·网络·数据库·docker·容器
狗凯之家源码网2 小时前
AI 步数修改提交系统源码应用场景与落地指南
android·数据库·人工智能·运动步数
穆梓兰煊2 小时前
AI供应链安全不再只是包安全,还涉及模型与数据
前端·数据库
北风toto2 小时前
数据库笔记:Armstrong 公理系统与集合论的深度辨析
数据库·笔记
小蒜学长3 小时前
基于SpringBoot+Vue的租房管理系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·租房管理
一只专注api接口开发的技术猿3 小时前
Open‑Claw 实战|告别页面逆向,快速搭建电商商品监控与数据分析完整方案
大数据·数据库·python·数据挖掘·数据分析
雨落在了我的手上3 小时前
MySQL数据库基础(6):增删改查操作(1)
数据库·mysql
Omics Pro3 小时前
全新可重分析!代谢组质谱专用
数据库·人工智能·算法·机器学习·自然语言处理
ITOM运维行者3 小时前
网络丢包监控怎么做?从六大成因到接口级定位的排查路径
数据库·人工智能·机器学习