Docker中配置Mysql主从备份

Mysql配置主从备份


一、Docker中实现跨服务器主从备份

在 Docker 中配置 MySQL 主从备份主要通过 MySQL 主从复制实现

二、配置步骤

1.配置主库

复制代码
# 进入mysql主库容器
docker exec -it mysql-master bash

# 连接mysql
mysql -127.0.0.1 ip -P 3306 -uroot -p 'password'

# 创建用于从库连接的用户
CREATE USER 'replica_user'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;

# 检查二进制日志状态(记录File和Position)
SHOW MASTER STATUS;

2.配置从库

复制代码
# 进入mysql主库容器
docker exec -it mysql-slave bash

# 连接mysql
mysql -127.0.0.1 ip -P 3306 -uroot -p 'password'

-- 配置从库连接到主库
CHANGE MASTER TO
  MASTER_HOST='mysql-master',
  MASTER_PORT=3306,
  MASTER_USER='replica_user',
  MASTER_PASSWORD='replica_password',
  MASTER_LOG_FILE='binlog.000003',
  MASTER_LOG_POS=932570,
  GET_MASTER_PUBLIC_KEY=1;

-- 启动从库复制
START SLAVE;

# 查看状态
SHOW SLAVE STATUS\G;

# 检查复制状态:确认以下两项为 Yes,表示复制成功
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes

3.遇到问题

Fatal error: The replica I/O thread stops because source and replica

have equal MySQL server ids; these ids must be different for

replication to work (or the --replicate-same-server-id option must be

used on replica but this does not always make sense; please check the

manual before using it).

  • 主库与从库的id重复了,可以修改主库或者从库的id(mysql默认配置server-id=1)
    • 修改从数据库配置文件

mysqld

server-id=2

log-bin=mysql-bin

binlog-format=row

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

  • 重启mysql容器
复制代码
docker restart mysql-slave

- 使用配置遇到提醒

mysql: Warning World-writable config file '/etc/mysql/my.cnf' is ignored.

这个警告 mysql: Warning World-writable config file '/etc/mysql/my.cnf' is ignored. 通常表示 MySQL 配置文件 /etc/mysql/my.cnf 的权限设置不安全。MySQL 出于安全原因,会忽略权限设置为 "world-writable"(任何人都可写)的配置文件。

  • 进入容器修改权限
复制代码
docker exec -it mysql-server bash
chmod 644 /etc/mysql/my.cnf

3.其它使用到的命令

  • 删除主从配置

    停止从库的复制线程

    STOP SLAVE;

    清除主从复制配置

    RESET SLAVE ALL;

相关推荐
TTATTC6 分钟前
状态机驱动长事务,还是 DAG 编排高并发?高可靠业务流程引擎的双核架构设计
docker·开源
殷忆枫20 分钟前
告别依赖地狱!在 Ubuntu 上用 Docker 极速部署 Home Assistant 与 MQTT,并接入 Siri 与嵌入式 C 终端
linux·ubuntu·docker
不像程序员的程序媛1 小时前
导出mysql数据结构
数据库·mysql
鱼很腾apoc2 小时前
【MySQL】第4期 用户管理与 C 语言连接编程详解
linux·服务器·c语言·mysql·connector/c
千桐科技2 小时前
qModel算法模型平台功能解析:从源码到 Docker 镜像,部署能自动完成哪些工作?
运维·docker·容器·qmodel
郭萌6963 小时前
多商户平台的分销佣金:为什么同一笔订单,换个时间跑会算出另一个人
mysql·php
库库的数据库笔记3 小时前
金融核心交易系统的数据库国产信创改造该如何做?
大数据·数据库·分布式·mysql·oracle·金融·数据库架构
Linux实战笔记3 小时前
MySQL 索引失效的三种典型场景与 EXPLAIN 分析
mysql·索引失效·explain·执行计划·sql 调优
这个DBA有点耶3 小时前
连接数没满,应用却连不上数据库——TCP backlog溢出与somaxconn的隐藏限制
数据库·mysql·代码规范
江湖有缘4 小时前
Docker实战 | 使用Docker部署Imagor Studio图片编辑工具
java·docker·eureka