docker 部署mysql 5.6集群

docker搭建mysql的集群(一主双从)

1.拉取镜像

bash 复制代码
docker pull mysql:5.6

2.启动master容器

bash 复制代码
docker run -it -d --name mysql_master -p 3306:3306 --ip 192.168.162.100 \
-v /data/mysql_master/mysql:/var/lib/mysql  \
-v /data/mysql_master/conf.d:/etc/mysql/conf.d  \
-e MYSQL_ROOT_PASSWORD=root  -e TZ=Asia/Shanghai --privileged=true mysql:5.6 --lower_case_table_names=1

参数说明:

-p 3306:3306:将容器的3306端口映射到主机的3306端口

-v /data/mysql_master/mysql:/var/lib/mysql:将数据文件夹挂载到主机

-v /data/mysql_master/conf.d:/etc/mysql/conf.d:将配置文件夹挂载到主机

-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码

3.配置master数据库

编辑mysql配置文件

mysqld

pid-file = /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

datadir = /var/lib/mysql

#log-error = /var/log/mysql/error.log

Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

max_connections=1000

数据库字符集

character_set_server = utf8

mysql编号(只可以是数字) 每个节点不一样

server_id = 1

开始binlog日志,规定日志文件名称

log_bin = mysql_bin

开启relaylog日志,规定日志文件名称

relay_log = relay_bin

从库的写操作是否写入binlog日志

log-slave-updates = 1

采用严格的SQL语句模式

sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

4.重新启动master容器

bash 复制代码
docker restart 容器id

5.master数据库中新建同步数据用户

navcat 连接master数据库,新建用户

6.启动salve1容器

docker run -it -d --name mysql_salve1 -p 3307:3306 --ip 192.168.162.100 \

-v /data/mysql_salve1/mysql:/var/lib/mysql \

-v /data/mysql_salve1/conf.d:/etc/mysql/conf.d \

-e MYSQL_ROOT_PASSWORD=root -e TZ=Asia/Shanghai --privileged=true mysql:5.6 --lower_case_table_names=1

7.配置salve1数据库

编辑数据库配置文件

编辑数据库配置文件:

mysqld

pid-file = /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

datadir = /var/lib/mysql

#log-error = /var/log/mysql/error.log

Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

max_connections=1000

数据库字符集

character_set_server = utf8

mysql编号(只可以是数字) 每个节点不一样

server_id = 3

开始binlog日志,规定日志文件名称

log_bin = mysql_bin

开启relaylog日志,规定日志文件名称

relay_log = relay_bin

限制普通账户无法insert、delete、update语句,但是该配置对于管理员账号无效

read-only = 1

采用严格的SQL语句模式

sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

8.重新启动salve1数据库

bash 复制代码
docker restart 容器ID

9.配置salve1数据库

工具连接上salve1数据库,命令行中执行

bash 复制代码
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)

mysql> change master to master_host="172.17.0.2",master_port=3306,master_user='sync',master_password='sync';
Query OK, 0 rows affected (0.02 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status;

master_host :Master的地址,指的是容器的独立ip,可以通过以下命令查看

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id

10.搭建salve2数据库

搭建方式同salve1

相关推荐
南部余额19 分钟前
Canal解决MySQL与Redis数据一致性问题
数据库·redis·mysql·canal·数据·数据同步
大佐不会说日语~20 分钟前
在 Windows 本地用 Docker 部署向量模型(bge-m3)
windows·docker·容器·llm·ollama
xsc-xyc1 小时前
CasaOS + Docker 挂载外接硬盘部署 Jellyfin 私人影院
运维·docker·容器
码云骑士1 小时前
27-Docker部署Django(上)-从2GB到180MB的镜像瘦身实战
docker·容器·django
日取其半万世不竭1 小时前
PostgreSQL 跑在 Docker 里怎么备份?恢复成功才算备份成功
数据库·docker·postgresql
至此流年莫相忘1 小时前
WSL2 下 Docker Desktop 完全配置指南:从安装到极速体验
运维·docker·容器
万能的知了2 小时前
K8s到底需不需要GPU节点?集群资源分配的底层逻辑
云原生·容器·kubernetes
极客先躯2 小时前
高级java每日一道面试题-2026年02月12日-实战篇[Docker]-什么是容器的 Seccomp 配置?如何自定义?
java·运维·分布式·docker·容器·自动化·文件
斯内普吖2 小时前
(开源)高校素拓分管理系统小程序实战指南 基于 Java + SpringBoot + uni-app + Vue + MySQL
java·spring boot·mysql·小程序·uni-app·开源
lazy H3 小时前
Spring Boot 连接 MySQL 失败怎么办?常见报错原因和解决方法总结
spring boot·后端·学习·mysql·spring