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

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

相关推荐
冰暮流星3 小时前
mysql之表子查询
数据库·mysql
Full Stack Developme4 小时前
CRM相关库表设计
数据库
步行cgn4 小时前
Spring 注入 Map 集合详解
数据库·python·spring
风跟我说过她4 小时前
SQL 一键转经典 Chen 风格 ER 图:开源 CLI + 在线工具 + Agent Skill
数据库·python·sql·开源·开源软件
这个DBA有点耶5 小时前
MySQL大表DDL锁表锁到崩溃?Online DDL的3个关键参数和实战避坑
数据库·mysql·架构
2302_1115 小时前
java依赖小结
java·运维·数据库
听到微笑6 小时前
Elasticsearch 如何存储与检索海量向量
数据库·elasticsearch
海浪仙人掌6 小时前
速动比率怎么分析?速动比率分析有哪些注意事项?
大数据·数据库·人工智能
企业数字化笔记6 小时前
固定资产历史数据怎么导入系统?Excel模板、字段映射和数据校验
android·java·数据库·后端
还是奇怪6 小时前
OpenAI GPT-5.6 构建指南拆解:创业公司如何用模型选择与 Responses API 降低 Agent 成本
java·数据库·人工智能·gpt