anxin-ruoyi/docker/database/README.md
2026-01-05 01:46:20 +08:00

258 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 数据库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的依赖配置确保数据库在其他服务之前启动。