基于已创建的Docker容器配置MariaDB复制的技术咨询
基于已创建的Docker容器配置MariaDB复制的技术咨询
为了搞明白MariaDB的复制原理,我搭建了三个Docker容器作为测试环境,创建命令如下:
# 节点1(server_id=1) docker run -e TZ=America/Denver --name mariadb1 --network=camino_nw \ -e MARIADB_SERVER_ID=1 -e MARIADB_LOG_BIN=mysql-bin -e MARIADB_LOG_BASENAME=mariadb1 \ -e MARIADB_BINLOG_FORMAT=mixed -p 127.0.0.1:53301:3306 \ -v /home/jcz/Documents/dockerMariadbData1:/var/lib/mysql:z \ -e MARIADB_ROOT_PASSWORD=S3cretPw -d mariadb:latest # 节点2(server_id=2) docker run -e TZ=America/Denver --name mariadb2 --network=camino_nw \ -e MARIADB_SERVER_ID=2 -e MARIADB_LOG_BIN=mysql-bin -e MARIADB_LOG_BASENAME=mariadb2 \ -e MARIADB_BINLOG_FORMAT=mixed -p 127.0.0.1:53302:3306 \ -v /home/jcz/Documents/dockerMariadbData2:/var/lib/mysql:z \ -e MARIADB_ROOT_PASSWORD=S3cretPw -d mariadb:latest # 节点3(server_id=3) docker run -e TZ=America/Denver --name mariadb3 --network=camino_nw \ -e MARIADB_SERVER_ID=3 -e MARIADB_LOG_BIN=mysql-bin -e MARIADB_LOG_BASENAME=mariadb3 \ -e MARIADB_BINLOG_FORMAT=mixed -p 127.0.0.1:53303:3306 \ -v /home/jcz/Documents/dockerMariadbData3:/var/lib/mysql:z \ -e MARIADB_ROOT_PASSWORD=S3cretPw -d mariadb:latest
每个容器的核心配置说明:
- 统一加入自定义网络
camino_nw,确保容器间可直接通信 - 每个节点配置唯一的
server_id(1/2/3),这是MariaDB复制的必填标识 - 开启二进制日志并指定日志基名,设置
mixed格式的binlog以兼顾复制兼容性和性能 - 映射到本地不同端口(53301/53302/53303),方便本地直接访问不同节点
- 挂载本地目录作为数据卷,持久化存储数据库数据
- 统一设置root密码为
S3cretPw
现在我希望基于这三个已创建的容器,完成MariaDB复制集群的配置(比如一主两从或多主复制模式),求具体的配置步骤指导。
备注:内容来源于stack exchange,提问作者Jose Cabrera Zuniga




