# 数据库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. 配置环境变量 复制环境变量模板并根据需要修改: ```bash # Linux/Mac cp .env.database.template .env.database # Windows copy .env.database.template .env.database ``` 编辑 `.env.database` 文件,修改数据库密码等配置。 ### 2. 启动数据库 ```bash # Linux/Mac ./database-manager.sh start # Windows database-manager.bat start ``` ### 3. 检查状态 ```bash # 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`: 导入数据库表结构 ## 管理脚本使用 ### 基本操作 ```bash # 启动数据库 ./database-manager.sh start # 停止数据库 ./database-manager.sh stop # 重启数据库 ./database-manager.sh restart # 查看状态 ./database-manager.sh status ``` ### 日志查看 ```bash # 查看最近100行日志 ./database-manager.sh logs # 查看最近50行日志 ./database-manager.sh logs 50 # 实时跟踪日志 ./database-manager.sh logs ``` ### 数据库连接 ```bash # 进入数据库容器 ./database-manager.sh exec # 直接连接MySQL ./database-manager.sh connect ``` ### 备份和恢复 ```bash # 备份数据库 ./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` ## 性能优化 ### 内存配置 根据服务器配置调整内存限制: ```bash # 开发环境 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的依赖配置,确保数据库在其他服务之前启动。