anxin-ruoyi/docker/database
2026-01-08 20:47:24 +08:00
..
init feat: 调整部署脚本 2026-01-08 20:47:24 +08:00
.gitkeep
database-manager.bat
database-manager.sh
docker-compose.database.yml feat: 调整部署脚本 2026-01-08 20:47:24 +08:00
README.md

数据库Docker配置

本目录包含MySQL数据库的Docker容器化配置文件和管理脚本。

目录结构

database/
├── init/                           # 数据库初始化脚本目录
│   ├── 01-init-database.sql       # 数据库和用户初始化
│   └── 02-schema.sql               # 数据库表结构
├── data/                           # 数据存储目录(运行时创建)
│   ├── mysql/                      # MySQL数据文件
│   └── logs/                       # MySQL日志文件
├── backup/                         # 数据库备份目录(运行时创建)
├── docker-compose.database.yml     # 数据库服务Docker Compose配置
├── .env.database.template          # 环境变量配置模板
├── database-manager.sh             # 数据库管理脚本Linux/Mac
├── database-manager.bat            # 数据库管理脚本Windows
└── README.md                       # 本文件

快速开始

1. 配置环境变量

复制环境变量模板并根据需要修改:

# Linux/Mac
cp .env.database.template .env.database

# Windows
copy .env.database.template .env.database

编辑 .env.database 文件,修改数据库密码等配置。

2. 启动数据库

# Linux/Mac
./database-manager.sh start

# Windows
database-manager.bat start

3. 检查状态

# Linux/Mac
./database-manager.sh status

# Windows
database-manager.bat status

配置说明

环境变量配置

主要的环境变量配置项:

变量名 默认值 说明
DB_HOST anxin-mysql 数据库主机名
DB_PORT 3306 数据库端口
DB_NAME anxin 数据库名称
DB_USER anxin 应用数据库用户
DB_PASSWORD anxin123 应用数据库密码
MYSQL_ROOT_PASSWORD root123 MySQL root密码
DATABASE_MEMORY_LIMIT 512M 内存限制
DATABASE_CPU_LIMIT 0.5 CPU限制

MySQL配置

MySQL配置文件位于 ../configs/my.cnf.template,包含以下优化:

  • 字符集utf8mb4
  • 时区Asia/Shanghai
  • 连接数200
  • InnoDB缓冲池128M
  • 慢查询日志:启用

数据持久化

数据持久化通过Docker卷实现

  • mysql-data: 数据库数据文件,挂载到 ./data/mysql
  • mysql-logs: 数据库日志文件,挂载到 ./data/logs/mysql

初始化脚本

初始化脚本按文件名字母顺序执行:

  1. 01-init-database.sql: 创建数据库和用户
  2. 02-schema.sql: 导入数据库表结构

管理脚本使用

基本操作

# 启动数据库
./database-manager.sh start

# 停止数据库
./database-manager.sh stop

# 重启数据库
./database-manager.sh restart

# 查看状态
./database-manager.sh status

日志查看

# 查看最近100行日志
./database-manager.sh logs

# 查看最近50行日志
./database-manager.sh logs 50

# 实时跟踪日志
./database-manager.sh logs

数据库连接

# 进入数据库容器
./database-manager.sh exec

# 直接连接MySQL
./database-manager.sh connect

备份和恢复

# 备份数据库
./database-manager.sh backup

# 恢复数据库
./database-manager.sh restore backup/anxin_20250104_120000.sql

网络配置

数据库容器运行在自定义网络 anxin-network 中:

  • 网络类型bridge
  • 子网172.20.0.0/16
  • 网关172.20.0.1

安全配置

密码安全

  • 生产环境请修改默认密码
  • 使用强密码策略
  • 定期更换密码

网络安全

  • 数据库端口仅在需要时暴露到宿主机
  • 使用内部网络进行容器间通信
  • 启用防火墙规则

文件权限

  • 数据目录权限755
  • 配置文件权限644
  • 脚本文件权限755

故障排除

常见问题

  1. 容器启动失败

    • 检查端口是否被占用
    • 检查数据目录权限
    • 查看容器日志
  2. 数据库连接失败

    • 检查网络配置
    • 验证用户名密码
    • 确认数据库已完全启动
  3. 初始化脚本执行失败

    • 检查SQL语法
    • 查看初始化日志
    • 验证文件权限

日志位置

  • 容器日志:docker-compose logs
  • MySQL错误日志./data/logs/mysql/error.log
  • MySQL慢查询日志./data/logs/mysql/slow.log

性能优化

内存配置

根据服务器配置调整内存限制:

# 开发环境
DATABASE_MEMORY_LIMIT=512M

# 测试环境
DATABASE_MEMORY_LIMIT=1024M

# 生产环境
DATABASE_MEMORY_LIMIT=2048M

InnoDB优化

主要的InnoDB配置项

  • innodb_buffer_pool_size: 缓冲池大小
  • innodb_log_file_size: 日志文件大小
  • innodb_flush_log_at_trx_commit: 事务提交策略

监控和维护

健康检查

容器配置了健康检查:

  • 检查间隔30秒
  • 超时时间20秒
  • 重试次数10次
  • 启动等待60秒

定期维护

建议的维护任务:

  • 定期备份数据库
  • 监控磁盘使用情况
  • 检查慢查询日志
  • 更新安全补丁

集成说明

本数据库配置可以与以下组件集成:

  • 后端Spring Boot应用
  • 前端Vue3应用
  • 监控系统
  • 备份系统

通过Docker Compose的依赖配置确保数据库在其他服务之前启动。