Docker快速部署MySQL和Redis指南

Jun 11, 2025·
Orochi
Orochi
· 2 min read

Docker数据库服务部署指南

1. MySQL容器部署

1.1 基础部署

# 拉取MySQL官方镜像
docker pull mysql:8.0

# 创建数据持久化目录
mkdir -p /data/mysql/data
mkdir -p /data/mysql/conf
mkdir -p /data/mysql/logs

# 运行MySQL容器
docker run -d \
  --name mysql8 \
  -p 3306:3306 \
  -v /data/mysql/data:/var/lib/mysql \
  -v /data/mysql/conf:/etc/mysql/conf.d \
  -v /data/mysql/logs:/var/log/mysql \
  -e MYSQL_ROOT_PASSWORD=your_password \
  -e MYSQL_DATABASE=your_db \
  --restart unless-stopped \
  mysql:8.0

1.2 MySQL配置优化

创建 /data/mysql/conf/my.cnf

[mysqld]
# 字符集配置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

# 连接数设置
max_connections=1000
max_connect_errors=1000

# 缓冲区设置
innodb_buffer_pool_size=1G
innodb_log_buffer_size=16M

# 日志设置
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow.log
long_query_time=2

2. Redis容器部署

2.1 基础部署

# 拉取Redis官方镜像
docker pull redis:6.2

# 创建数据和配置目录
mkdir -p /data/redis/data
mkdir -p /data/redis/conf

# 创建Redis配置文件
cat > /data/redis/conf/redis.conf << EOF
requirepass your_password
appendonly yes
maxmemory 512mb
maxmemory-policy allkeys-lru
EOF

# 运行Redis容器
docker run -d \
  --name redis6 \
  -p 6379:6379 \
  -v /data/redis/data:/data \
  -v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
  --restart unless-stopped \
  redis:6.2 redis-server /etc/redis/redis.conf

3. Docker Compose部署

创建 docker-compose.yml

version: '3.8'

services:
  mysql:
    image: mysql:8.0
    container_name: mysql8
    ports:
      - "3306:3306"
    volumes:
      - /data/mysql/data:/var/lib/mysql
      - /data/mysql/conf:/etc/mysql/conf.d
      - /data/mysql/logs:/var/log/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=your_password
      - MYSQL_DATABASE=your_db
    restart: unless-stopped
    networks:
      - backend

  redis:
    image: redis:6.2
    container_name: redis6
    ports:
      - "6379:6379"
    volumes:
      - /data/redis/data:/data
      - /data/redis/conf/redis.conf:/etc/redis/redis.conf
    command: redis-server /etc/redis/redis.conf
    restart: unless-stopped
    networks:
      - backend

networks:
  backend:
    driver: bridge

启动服务:

docker-compose up -d

4. 性能优化建议

4.1 MySQL优化

  1. 内存配置

    • 根据服务器内存调整buffer_pool_size
    • 优化查询缓存设置
    • 合理设置连接数
  2. 存储优化

    • 使用合适的存储引擎
    • 优化表结构
    • 定期维护索引

4.2 Redis优化

  1. 内存管理

    • 设置合理的maxmemory
    • 选择适当的淘汰策略
    • 开启持久化机制
  2. 网络优化

    • 启用keepalive
    • 调整tcp-backlog
    • 优化连接池设置

5. 监控与维护

5.1 容器监控

# 查看容器状态
docker stats mysql8 redis6

# 查看容器日志
docker logs -f mysql8
docker logs -f redis6

5.2 数据备份

# MySQL备份
docker exec mysql8 mysqldump -u root -p your_db > backup.sql

# Redis备份
docker exec redis6 redis-cli SAVE

6. 常见问题解决

  1. 连接问题
# 检查容器网络
docker network inspect backend

# 测试MySQL连接
docker exec -it mysql8 mysql -u root -p

# 测试Redis连接
docker exec -it redis6 redis-cli
  1. 性能问题
# 查看MySQL进程
docker exec mysql8 mysqladmin processlist

# 查看Redis内存使用
docker exec redis6 redis-cli info memory
  1. 日志查看
# MySQL错误日志
docker exec mysql8 tail -f /var/log/mysql/error.log

# Redis日志
docker logs redis6
Orochi
Authors
充满活力和热情的软件从业者
在不同的公司和项目中工作过,担任过各种职务,做过各类项目(如企业站点、内部中台、边缘设备服务、客户端开发、大模型训练、大模型适配和任务调度等等),广泛的视野和经验.