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
相关推荐
Mahir085 小时前
Redis 与 MySQL 数据同步:一致性保证的完整解决方案
数据库·redis·mysql·缓存·面试·数据一致性
2301_769340675 小时前
如何在 Vuetify 中可靠捕获 Chip 关闭事件(包括键盘触发).txt
jvm·数据库·python
AC赳赳老秦5 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
·醉挽清风·6 小时前
学习笔记—MySQL—库表操作
笔记·学习·mysql
灵犀学长6 小时前
基于 Spring ThreadPoolTaskScheduler + CronTrigger 实现的动态定时任务调度系统
java·数据库·spring
北秋,6 小时前
PostgreSQL(Postgres)数据库基础用法 + 数字型 + 字符型 完整联合注入实战
数据库·postgresql·开源
m0_596749097 小时前
JavaScript中手动实现一个new操作符的底层逻辑
jvm·数据库·python
多加点辣也没关系7 小时前
Redis 的安装(详细教程)
数据库·redis·缓存
数据库小学妹7 小时前
数据库连接池避坑指南:告别“连接超时”与“资源耗尽”,让系统跑得更快!
数据库·redis·sql·mysql·缓存·dba
dishugj8 小时前
HANA 数据库备份与恢复
数据库·oracle