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

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. 主库创建复制账号

这里更新一下可能出现的问题,过程报错:ERROR 2061 (HY000): Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection,表明 root 用户当前使用的 caching_sha2_password 认证插件要求安全连接(caching_sha2_password 插件默认要求连接使用 SSL/TLS 加密),我们可以进入数据库更改root用户的认证插件绕开生成SSL证书:
sudo docker exec -it mysql-master bash, mysql -uroot -proot -h127.0.0.1,
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'proot'; FLUSH PRIVILEGES;

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;"
  1. 配置从库复制

    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;"
    
  2. 验证主从状态

    # 检查主库状态
    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连接
    

相关文章:

  • linux 部署Jumpserver(堡垒机)
  • 音视频(二)ffmpeg编译及推流
  • yum repolist all全部禁用了 怎么办
  • 【Ragflow】6. Ragflow-plus重磅更新:增加用户后台管理系统
  • IIC协议以及STM32IIC的特性和架构
  • Redis-05.Redis常用命令-哈希操作命令
  • 流影---开源网络流量分析平台(三)(管理引擎部署)
  • Redis:事务
  • 2025前端八股文终极指南:从高频考点到降维打击的面试突围战
  • Nginx — Nginx版本升级
  • 美甲预约管理系统基于Spring Boot SSM
  • 如何高效解决 Java 内存泄漏问题方法论
  • (学习总结31)Linux 进程地址空间与进程控制
  • 电子电气架构 --- EEA演进与芯片架构转移
  • vue前端代码作业——待办事项
  • [CSAPP] 9.8 内存映射 | 虚拟内存 | 页表 | 物理内存 | 写时拷贝机制
  • 使用 Frida Stalker 反 OLLVM 算法还原
  • 代码随想录算法训练营第三十二天 | 509.斐波那契数 70.爬楼梯 746.使用最小花费爬楼梯
  • 基于YOLO11的违禁物品检测分析系统
  • 【sgThumbPreviewTip】自定义组件:缩略图预览组件,移入缩略图等待1秒后出现浮动气泡框显示更大的缩略图或预览播放视频
  • 资源库网站开发/东莞网站建设制作
  • 陕西省建设协会岗位证查询网站/nba录像回放
  • 哪个网站上可以做初中数学题/优化电脑的软件有哪些
  • 学敏网站建设/营销策划方案内容
  • h5可以做网站吗/seo推广有哪些方式
  • 济南冰河世纪网站建设/青岛seo杭州厂商