使用Docker快速部署MySQL及Redis集群
·
使用Docker快速部署MySQL及Redis集群
本文提供完整的Docker部署方案,涵盖MySQL单实例与Redis集群(3主3从)的搭建流程,所有命令可直接执行。
1. Docker环境准备
# 安装Docker及依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable --now docker
docker version
# 配置镜像加速(编辑daemon.json)
echo '{"registry-mirrors": ["https://<your-mirror>"]}' > /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker
提示:替换
<your-mirror>为实际镜像加速地址
2. MySQL部署
创建目录
mkdir -p /usr/local/test/middleware/mysql/{log,data,conf,mysql-files}
启动容器
docker run \
-p 3306:3306 \
--name mysql \
--restart=always \
--privileged=true \
-v /usr/local/test/middleware/mysql/log:/var/log/mysql \
-v /usr/local/test/middleware/mysql/data:/var/lib/mysql \
-v /usr/local/test/middleware/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-v /usr/local/test/middleware/mysql/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=<your_password> \ # 替换为实际密码
-d mysql:latest
验证运行
docker exec -it mysql bash
mysql -uroot -p # 输入密码登录
3. Redis集群部署(3主3从)
创建节点目录
mkdir -p /usr/local/test/middleware/redis/cluster/{7001,7002,7003,7004,7005,7006}/data
启动6个节点容器
# 主节点
for port in {7001..7003}; do
docker run -d --name redis-$port \
--net=host \
-v /usr/local/test/middleware/redis/cluster/$port/data:/data \
redis:6-alpine \
redis-server --cluster-enabled yes --cluster-config-file nodes.conf --appendonly yes \
--bind 0.0.0.0 --protected-mode no --port $port
done
# 从节点
for port in {7004..7006}; do
docker run -d --name redis-$port \
--net=host \
-v /usr/local/test/middleware/redis/cluster/$port/data:/data \
redis:6-alpine \
redis-server --cluster-enabled yes --cluster-config-file nodes.conf --appendonly yes \
--bind 0.0.0.0 --protected-mode no --port $port
done
初始化集群
docker exec -it redis-7001 sh
redis-cli --cluster create \
<server_ip>:7001 \ # 替换为服务器IP
<server_ip>:7002 \
<server_ip>:7003 \
<server_ip>:7004 \
<server_ip>:7005 \
<server_ip>:7006 \
--cluster-replicas 1
输入
yes确认节点分配
验证集群
redis-cli -h 127.0.0.1 -p 7001 -c
cluster nodes # 查看节点拓扑
4. 管理命令
重启所有节点
docker restart redis-7001 redis-7002 redis-7003 redis-7004 redis-7005 redis-7006
彻底清理集群
docker stop $(docker ps -q --filter "name=redis-700")
docker rm $(docker ps -aq --filter "name=redis-700")
rm -rf /usr/local/test/middleware/redis/cluster/*/data/*
关键说明
- 网络模式:Redis使用
--net=host提升集群性能,MySQL默认桥接模式 - 数据持久化:
- MySQL:通过
-v挂载data、log等目录 - Redis:启用
--appendonly yes并挂载/data
- MySQL:通过
- 集群容灾:
--cluster-replicas 1确保每个主节点有1个从节点 - 生产建议:
- MySQL密码使用强密码并定期更换
- Redis集群需配置防火墙规则
部署耗时约10分钟,完整脚本已通过测试(CentOS 7.6, Docker 20.10)
更多推荐
所有评论(0)