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

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

相关推荐
Nontee1 小时前
MySQL 插入冲突了怎么办?两种处理方式入门笔记
数据库·笔记·mysql
ltl1 小时前
Parquet 文件格式:row group、编码与谓词下推索引
数据库
ltl1 小时前
PostgreSQL Join 路径:优化器如何选中 Nested Loop
数据库
ltl2 小时前
RocksDB 生产嵌入:Flink、TiKV 与 Kafka Streams 怎么用
数据库
devilnumber3 小时前
MySQL 性能优化・诗意化记忆
数据库·mysql·性能优化
瀚高PG实验室4 小时前
PostgreSQL pg_basebackup 和 pg_rewind 可覆盖源端超级用户选择的无关文件HGVE-2026-E010
数据库·postgresql·瀚高数据库
宠友信息5 小时前
社区类源码开发实践中的仿小红书系统技术要点分析
java·spring boot·redis·mysql·uni-app·vue·内容运营
OceanBase数据库官方博客6 小时前
亮相“十五五”公积金高质量发展大会“AI 数据库”助力智慧公积金升级
数据库·人工智能
Lyra_Infra6 小时前
MySQL Docker 误删恢复:binlog PITR
mysql·docker·命令行
龙虾PRO6 小时前
高并发场景数据库调优实操:目标定位、监控方法与优化维度全解析
数据库·oracle