使用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/*

关键说明
  1. 网络模式:Redis使用--net=host提升集群性能,MySQL默认桥接模式
  2. 数据持久化
    • MySQL:通过-v挂载datalog等目录
    • Redis:启用--appendonly yes并挂载/data
  3. 集群容灾--cluster-replicas 1确保每个主节点有1个从节点
  4. 生产建议
    • MySQL密码使用强密码并定期更换
    • Redis集群需配置防火墙规则

部署耗时约10分钟,完整脚本已通过测试(CentOS 7.6, Docker 20.10)

更多推荐