当前位置: 首页 > news >正文

Docker MySQL的主从同步 数据备份 数据同步 配置文件

创建主库

docker run \
  --name=mysql_1 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -p 3306:3306 \
  -v mysql_main_data:/var/lib/mysql \
  --restart unless-stopped \
  -d \
  mysql:8.0

进入容器内部

docker exec -it mysql_1 bash

查找配置文件

 find / -name my.cnf

复制出主机

docker cp mysql_1:/etc/my.cnf /opt/local/mysql/main

修改配置文件

[mysqld]
server-id = 1  # 主库的 server-id, 确保主从不同
expire_logs_days = 10  # 设置二进制日志过期时间
max_binlog_size = 100M  # 二进制日志的最大文件大小
# 允许从库连接主库时进行复制操作
bind-address = 0.0.0.0 # 允许所有地址连接,确保从库可以连接到主库

复制回容器

 docker cp /opt/local/mysql/main/my.cnf mysql_1:/etc/my.cnf

创建用户(主从同步)

-- 创建名为 'replication_user' 的新用户,允许从任意主机连接,并设置密码为 'password'
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';

-- 授予该用户 REPLICATION SLAVE 权限,允许其读取主服务器的二进制日志
-- 该权限对于配置主从复制是必需的
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';

-- 刷新权限表,使得新用户和权限立即生效
FLUSH PRIVILEGES;

获取主库的二进制日志文件和位置

SHOW MASTER STATUS;

在这里插入图片描述

创建从库

docker run \
  --name=mysql_2 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -p 3307:3306 \
  -v mysql_slave_data:/var/lib/mysql \
  --restart unless-stopped \
  -d \
  mysql:8.0

进入容器内部

docker exec -it mysql_2 bash

查找配置文件

 find / -name my.cnf

复制出主机

docker cp mysql_2:/etc/my.cnf /opt/local/mysql/slave

修改配置文件

[mysqld]
server-id = 2  # 从库的 server-id,确保唯一

复制回容器

 docker cp /opt/local/mysql/slave/my.cnf mysql_2:/etc/my.cnf

配置完成

重启两台服务器

docker restart mysql_1
docker restart mysql_2

从库指定主库

在这里插入图片描述
根据主库的日志文件配置同步

CHANGE MASTER TO
  MASTER_HOST = '172.23.4.128',          # 主库的 IP 地址
  MASTER_USER = 'replication_user',   # 主库上创建的复制用户
  MASTER_PORT=3306,   #端口
  MASTER_PASSWORD = 'password',       # 复制用户的密码
  MASTER_LOG_FILE = 'binlog.000004',  # 主库的二进制日志文件名
  MASTER_LOG_POS = 874;               # 主库的二进制日志位置

启动从库复制进程

START SLAVE;

检查从库复制状态

SHOW SLAVE STATUS

在这里插入图片描述
Slave_IO_Running:指示从服务器是否成功从主服务器读取二进制日志。
Slave_SQL_Running:指示从服务器是否成功应用二进制日志中的事件。

这样就完成了主从同步,主库的任何操作都会被同步到从库

相关文章:

  • 新疆建设厅招投标网站小程序推广50个方法
  • 怎么做58同城网站吗色盲测试图片60张
  • 企业免费网站系统下载地址上海网络推广需要多少
  • 个人网站介绍百度站长统计工具
  • 为中国移动做网站的公司叫什么百度收录方法
  • 自己做网站送外卖中国女排联赛排名
  • C++学习之ORACLE①
  • 基于flask+vue框架的助贫公益募捐管理系统1i6pi(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • BUUCTF-web刷题篇(18)
  • Python设计模式-单例模式
  • 【华为战报】2025年3月 考试战报!
  • 消息队列(IPC技术)
  • 需求获取全攻略
  • PostGIS 常用处理空间函数
  • 文章记单词 | 第26篇(六级)
  • MySQL行列转换
  • 数据泄露与防范
  • C++进阶——C++11_右值引用和移动语义_可变参数模板_类的新功能
  • window部署虚拟机VirtualBox来部署flink
  • 网络机顶盒怎么连接WiFi-机顶盒连接wifi攻略,轻松畅享网络视听
  • 我为女儿开发了一个游戏网站
  • gerrit配置及使用git-lfs
  • c++11新内容补充
  • c++类和对象——this指针
  • Vue Router(2)
  • Spring AI开发MCP Server和MCP Client