MySQL Docker开发环境配置指南

Posted on Tue 19 March 2024 in 开发工具

如何使用Docker启动MySQL开发环境

目录结构

MySQL_Docker/
├── docker-compose.yml    # Docker Compose 配置文件
├── .env                 # 环境变量配置
├── config/
│   └── my.cnf          # MySQL 配置文件
├── data/               # MySQL 数据目录 (挂载)
└── logs/               # MySQL 日志目录 (挂载)

配置文件说明

1. docker-compose.yml 配置要点

version: '3.8'
services:
  mysql:
    image: mysql:8.0
    container_name: mysql-server
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123}
      MYSQL_DATABASE: ${MYSQL_DATABASE:-testdb}
      MYSQL_USER: ${MYSQL_USER:-testuser}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD:-testpass}
    ports:
      - "${MYSQL_PORT:-3306}:3306"
    volumes:
      - ./data:/var/lib/mysql
      - ./logs:/var/log/mysql
      - ./config/my.cnf:/etc/mysql/conf.d/my.cnf

重要配置说明: - restart: unless-stopped - 容器异常退出时自动重启 - environment - 环境变量配置,支持从.env文件读取 - volumes - 数据持久化配置,确保数据安全 - ports - 端口映射,允许外部访问

2. MySQL配置文件 (my.cnf) 要点

[mysqld]
# 基本设置
port = 3306
bind-address = 0.0.0.0
default-storage-engine = InnoDB

# 字符集设置(重要)
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 连接设置
max_connections = 200
max_connect_errors = 10

# 缓冲区设置
innodb_buffer_pool_size = 256M
innodb_log_file_size = 64M
innodb_log_buffer_size = 16M

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

配置注意事项: 1. 字符集必须设置为utf8mb4,以支持完整的Unicode字符集 2. 根据服务器内存调整缓冲区大小 3. 开启慢查询日志便于性能优化 4. MySQL 8.0已不支持查询缓存(query_cache)相关配置

3. 环境变量配置 (.env)

MYSQL_ROOT_PASSWORD=your_root_password
MYSQL_DATABASE=your_database
MYSQL_USER=your_user
MYSQL_PASSWORD=your_password
MYSQL_PORT=3306

安全注意事项: - 生产环境必须修改默认密码 - .env文件不要提交到版本控制系统 - 定期更换密码 - 避免使用弱密码

启动和维护

启动服务

docker-compose up -d

查看服务状态

docker-compose ps

查看日志

# 查看容器日志
docker-compose logs mysql

# 查看错误日志
tail -f logs/error.log

# 查看慢查询日志
tail -f logs/slow.log

停止服务

docker-compose down

常见问题处理

1. 容器无法启动或反复重启

  • 检查数据目录权限
  • 查看错误日志(logs/error.log)
  • 确认配置文件语法正确
  • 验证端口是否被占用

2. 连接失败

  • 确认容器运行状态
  • 检查端口映射
  • 验证用户名密码
  • 检查防火墙设置

3. 性能问题

  • 检查慢查询日志
  • 调整缓冲区大小
  • 优化索引
  • 监控资源使用情况

数据备份建议

1. 使用docker-compose执行备份

docker-compose exec mysql mysqldump -u root -p database_name > backup.sql

2. 自动备份脚本示例

#!/bin/bash
backup_dir="backups"
date_format=$(date +%Y%m%d_%H%M%S)
docker-compose exec -T mysql mysqldump -u root -p database_name > "${backup_dir}/backup_${date_format}.sql"

安全建议

  1. 网络安全
  2. 限制端口访问
  3. 使用专用网络
  4. 启用SSL/TLS加密

  5. 账户安全

  6. 定期更换密码
  7. 限制用户权限
  8. 删除未使用的账户

  9. 数据安全

  10. 定期备份
  11. 加密敏感数据
  12. 监控异常访问

性能优化建议

  1. 硬件资源
  2. 适当分配内存
  3. 使用SSD存储
  4. 监控CPU使用率

  5. 配置优化

  6. 调整缓冲池大小
  7. 优化日志设置
  8. 配置合适的连接数

  9. 查询优化

  10. 建立合适的索引
  11. 优化SQL语句
  12. 定期维护统计信息