docker 配置 MySQL 主从数据库

docker compose up -d

docker ps

进入主库

docker exec -it mysql-master mysql --default-character-set=utf8mb4 -uroot -p123456

show variables like 'character_set%';

sql 复制代码
CREATE USER 'repl'@'%' IDENTIFIED BY 'repl123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

SHOW MASTER STATUS;

得到:

File:

mysql-bin.000001

Position:

154

把这两个值记下来:

● File

● Position

进入从库:

docker exec -it mysql-slave mysql --default-character-set=utf8mb4 -uroot -p123456

输入密码:

123456

执行:

CHANGE MASTER TO

MASTER_HOST='host.docker.internal',

MASTER_PORT=3307,

MASTER_USER='repl',

MASTER_PASSWORD='repl123456',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=154;

然后启动复制:

START SLAVE;

检查状态:

SHOW SLAVE STATUS\G

重点看这两个字段:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

配置主从成功

文件夹结构:


docker-compose.yml:

yaml 复制代码
version: '3.8'

services:
  mysql-master:
    image: mysql:5.7.25
    container_name: mysql-master
    restart: always
    ports:
      - "3307:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    command:
      - --server-id=1
      - --log-bin=mysql-bin
      - --binlog-format=ROW
      - --default-time-zone=+08:00
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --skip-name-resolve
    volumes:
      - ./master/data:/var/lib/mysql

  mysql-slave:
    image: mysql:5.7.25
    container_name: mysql-slave
    restart: always
    ports:
      - "3308:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    command:
      - --server-id=2
      - --log-bin=mysql-bin
      - --relay-log=mysql-relay-bin
      - --read-only=1
      - --binlog-format=ROW
      - --default-time-zone=+08:00
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --skip-name-resolve
    volumes:
      - ./slave/data:/var/lib/mysql
相关推荐
herinspace9 小时前
管家婆实用贴-如何分离和附加数据库
开发语言·前端·javascript·数据库·语音识别
GL_Rain9 小时前
快速搭建Halo博客 + 崩溃秒恢复方案(Docker极简部署)
运维·docker·容器
步辞10 小时前
Go语言怎么用channel做信号通知_Go语言channel信号模式教程【完整】
jvm·数据库·python
weixin_4249993610 小时前
mysql行级锁失效的原因排查_检查查询条件与执行计划
jvm·数据库·python
Polar__Star11 小时前
uni-app怎么实现App端一键换肤 uni-app全局样式动态切换【实战】
jvm·数据库·python
无巧不成书021811 小时前
2026最新Next-AI-Draw-io全攻略:AI驱动专业图表生成,Docker/Node.js本地部署零踩坑指南
人工智能·docker·node.js·next-ai-draw-io
南境十里·墨染春水11 小时前
linux学习进展 进程间通讯——共享内存
linux·数据库·学习
LinuxGeek102411 小时前
Kylin-Server-V11、openEuler-22.03和openEuler-24.03的MySQL 9.7.0版本正式发布
大数据·mysql·kylin
斯维赤12 小时前
Python学习超简单第八弹:连接Mysql数据库
数据库·python·学习
Chuer_12 小时前
讲透财务Agent核心概念,深度拆解财务Agent应用趋势
大数据·数据库·安全·数据分析·甘特图