万隆的笔记 万隆的笔记
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
  • MySQL

  • 架构原理

  • 索引与优化

  • 事务和锁

  • 集群架构

    • 集群架构设计
    • 主从模式
    • 双主模式
    • 分库分表
    • 分库分表案例
    • Docker搭建MySQL主从架构
    • MySQL Proxy读写分离
    • Docker搭建MySQL双主架构
  • MySQL
  • 集群架构
2022-03-23

Docker搭建MySQL双主架构

# Docker搭建MySQL双主架构

这里演示本地环境使用Docker Compose搭建MySQL双主一从环境。

说明:

  • 这里仅作为实验进行快速搭建,实际生产会有所不同。
  • MySQL主从架构搭建完成的基础上,增加一个主库,实现双写(实际建议单写)
  • 为了测试效果,两个master采用自增主键设置
    • master1,auto_increment_offset=1,auto_increment_increment=2
    • Master2,auto_increment_offset=2,auto_increment_increment=2
  • 关于开启并行复制、relay log等等配置,这里不再赘述。
  • 双主架构其实是增加多一个主库,然后互为slave,配置过程slave与主从基本相似,这里不再赘述,参考主从架构搭建即可。

创建mysql_mm文件夹,docker-compose.yml配置如下:

version: '3.1'
services:
  mysql-master2:
    restart: always
    image: mysql:5.7.28
    container_name: mysql-master2
    ports:
      - 33081:3306
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
      --log-bin=mysqlbinlog
      --binlog-format=ROW
      --server-id=3
      --sync_binlog=1
      --binlog-ignore-db=information_schema
      --binlog-ignore-db=performance_schema
      --binlog-ignore-db=sys
      --binlog_group_commit_sync_delay=1000
      --binlog_group_commit_sync_no_delay_count=100
      --auto_increment_offset=2
      --auto_increment_increment=2
      --relay_log=mysql-relay-bin
      --read_only=1
      --slave_parallel_type=LOGICAL_CLOCK
      --slave_parallel_workers=8
      --relay_log_recovery=1
      --relay_log_info_repository=TABLE
    volumes:
      - /Users/wenwl/docker/mysql_mm/m2conf:/etc/mysql
      - /Users/wenwl/docker/mysql_mm/m2logs:/var/log/mysql 
      - /Users/wenwl/docker/mysql_mm/m2data:/var/lib/mysql
上次更新: 5/30/2023, 11:09:19 PM
最近更新
01
2025
01-15
02
Elasticsearch面试题
07-17
03
Elasticsearch进阶
07-16
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式