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