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

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

相关推荐
molaoye1 小时前
win10下切换MySQL版本
数据库·mysql
丁引1 小时前
《数据清洗的艺术:如何用20行核心逻辑优雅地删除无标签图片》
前端·数据库·python
雨辰AI1 小时前
K8s 数据库 Secret 加密实战|密码明文漏洞彻底修复,等保密评双合规(金仓 / 达梦双库适配)
数据库·容器·kubernetes
c238562 小时前
MySQL 基础用法(下):查询进阶与核心特性
android·c语言·c++·mysql
XR1234567882 小时前
学校图书馆网络改造,方案谁更优?
网络·数据库·php
梦想的旅途22 小时前
企业微信自动化:自动发送文本、图片、文件
前端·数据库·microsoft
IvorySQL2 小时前
PostgreSQL 日报|复制槽泄漏修复(8 月 6 日)
数据库·postgresql
XWalnut2 小时前
MySQL入门到精通
数据库·mysql
@Mike@2 小时前
07-数据库学习笔记(数据库哈希表)
数据库·哈希算法·散列表