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

Docker实现MySQL主从复制配置【简易版】

Docker实现MySQL主从复制配置

环境准备

  • 安装docker

  • 拉取MySQL 8.0镜像

    docker pull mysql:8.0
    
    #检查
    docker images | grep mysql
    

代码流程

由于Mysql8.0的ssl验证十分繁琐,在创建容器的时候一定要禁掉

  1. 创建自定义网络

    docker network create mysql-replication-net
    
  2. 启动主库容器(禁用SSL)

    docker run -d --name mysql-master \
      --network mysql-replication-net \
      -p 3306:3306 \
      -e MYSQL_ROOT_PASSWORD=root \
      -v $(pwd)/master-data:/var/lib/mysql \
      mysql:8.0 \
      --server-id=1 \
      --log-bin=mysql-bin \
      --binlog-format=ROW \
      --gtid-mode=ON \
      --enforce-gtid-consistency=ON \
      --skip-ssl \
      --require_secure_transport=OFF
    
  3. 启动从库容器(禁用SSL)

    docker run -d --name mysql-slave \
      --network mysql-replication-net \
      -p 3307:3306 \
      -e MYSQL_ROOT_PASSWORD=root \
      -v $(pwd)/slave-data:/var/lib/mysql \
      mysql:8.0 \
      --server-id=2 \
      --log-bin=mysql-bin \
      --binlog-format=ROW \
      --gtid-mode=ON \
      --enforce-gtid-consistency=ON \
      --skip-ssl \
      --require_secure_transport=OFF
    
  4. 主库创建复制账号

    docker exec -it mysql-master mysql -uroot -proot -e \
    "CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'repl';
    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
    FLUSH PRIVILEGES;"
    
  5. 配置从库复制

    docker exec -it mysql-slave mysql -uroot -proot -e \
    "STOP SLAVE;
    RESET SLAVE ALL;
    CHANGE MASTER TO
    MASTER_HOST='mysql-master',
    MASTER_USER='repl',
    MASTER_PASSWORD='repl',
    MASTER_AUTO_POSITION=1,
    MASTER_SSL=0;
    START SLAVE;"
    
  6. 验证主从状态

    # 检查主库状态
    docker exec -it mysql-master mysql -uroot -proot -e "SHOW MASTER STATUS\G"
    
    # 检查从库复制状态
    docker exec -it mysql-slave mysql -uroot -proot -e \
    "SHOW SLAVE STATUS\G" | grep -E 'Slave_IO_Running|Slave_SQL_Running|Last_Error'
    
    # 测试数据同步
    docker exec -it mysql-master mysql -uroot -proot -e \
    "CREATE DATABASE sync_test; USE sync_test; CREATE TABLE test(id INT); INSERT INTO test VALUES(1);"
    
    docker exec -it mysql-slave mysql -uroot -proot -e \
    "USE sync_test; SELECT * FROM test;"
    

关键配置补充

  1. 禁用SSL的核心参数

    --skip-ssl  # 完全禁用SSL功能
    --require_secure_transport=OFF  # 不要求安全连接
    
  2. 认证插件选择

    IDENTIFIED WITH mysql_native_password  # 使用兼容性更好的传统认证
    
  3. 主从连接配置

    MASTER_SSL=0  # 明确禁用SSL连接
    

http://www.kler.cn/a/611826.html

相关文章:

  • 旅游纵览杂志旅游纵览杂志社旅游纵览编辑部2025年第2期目录
  • 微服务与分布式系统
  • Axure设计之中继器表格——拖动列调整位置教程(中继器)
  • python文件保存
  • Nextjs15 - 服务端组件(RSC)与客服端组件
  • SVTAV1热点函数-svt_ext_all_sad_calculation_8x8_16x16_avx2
  • python面试-基础
  • thinkphp8.0\swoole的websocket应用
  • vue配置.eslintrc、.prettierrc详解
  • Android 问真八字-v2.1.7[看八字APP]
  • Netty源码—8.编解码原理二
  • 2025年具有AI招聘管理系统选型及攻略分享
  • Rust从入门到精通之入门篇:8.基本数据结构
  • 快速入手-基于Django-rest-framework的mixins混合类(五)
  • 自然语言处理(NLP)技术的应用面有哪些
  • 如何卸载雷池 WAF
  • 通义Qwen实战(2): vllm框架部署实战
  • Python----数据分析(电影数据分析)
  • 基于springboot+vue的凉州区助农惠农服务平台
  • 在 Ubuntu 上安装 Docker 的完整指南