当前位置: 首页 > 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连接
    

http://www.mrgr.cn/news/96524.html

相关文章:

  • AutoDIR: Automatic All-in-One Image Restoration with Latent Diffusion 论文阅读 ECCV
  • UE5 学习笔记 FPS游戏制作30 显示击杀信息 水平框 UI模板(预制体)
  • .js项目编译成.exe程序(交叉编译全过程整理)
  • Docker使用ubuntu
  • 浅析车规芯片软错误防护加固的重要性
  • 设计模式之适配器模式(二):STL适配器
  • 房贷计算器
  • 验证码通过“Canvas 绘制”与“Base64 图片”渲染两种不同的实现方式显示
  • C++ 继承:面向对象编程的核心概念(二)
  • Dust3r、Mast3r、Fast3r
  • docker-compose部署prometheus+grafana+node_exporter+alertmanager规则+邮件告警
  • 逆向--ARM64汇编
  • QFlightInstruments飞行仪表控件库
  • iptables学习记录
  • 拓展知识六:MetInfo6.0.0目录遍历漏洞原理分析
  • WEB安全--RCE--RCE的危险函数
  • 【第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组】C语言代码
  • 红宝书第十九讲:详解JavaScript的Fetch API与Ajax请求
  • 搭建私人对外git空间
  • QListView开发入门