| .. | ||
| init | ||
| .gitkeep | ||
| database-manager.bat | ||
| database-manager.sh | ||
| docker-compose.database.yml | ||
| 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
初始化脚本
初始化脚本按文件名字母顺序执行:
01-init-database.sql: 创建数据库和用户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
故障排除
常见问题
-
容器启动失败
- 检查端口是否被占用
- 检查数据目录权限
- 查看容器日志
-
数据库连接失败
- 检查网络配置
- 验证用户名密码
- 确认数据库已完全启动
-
初始化脚本执行失败
- 检查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的依赖配置,确保数据库在其他服务之前启动。