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;

相关推荐
问简8 小时前
docker 镜像相关
运维·docker·容器
Benszen9 小时前
Docker容器化技术实战指南
运维·docker·容器
被摘下的星星10 小时前
MySQL count()函数的用法
数据库·mysql
Hommy8810 小时前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
素玥10 小时前
实训5 python连接mysql数据库
数据库·python·mysql
斯普信云原生组11 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
喵了几个咪12 小时前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人12 小时前
docker compose部署kafka集群搭建
docker·容器·kafka
Chasing__Dreams12 小时前
Mysql--基础知识点--95--为什么避免使用长事务
数据库·mysql
数据知道14 小时前
claw-code 源码分析:OmX `$team` / `$ralph`——把 AI 辅助开发从偶发灵感变成可重复流水线
数据库·人工智能·mysql·ai·claude code·claw code