Files
aitsc/腾讯云数据库部署说明.md
2025-10-10 23:39:54 +08:00

326 lines
6.9 KiB
Markdown
Raw 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.
# 🚀 腾讯云数据库优化历史功能部署说明
## 📋 概述
本文档提供了在腾讯云数据库上部署优化历史功能的完整指南,包括数据库表创建、配置验证和功能测试。
## 🛠️ 部署脚本说明
### 1. 脚本文件列表
| 文件名 | 功能描述 | 使用场景 |
|--------|----------|----------|
| `check_tencent_db.py` | 数据库连接检查 | 部署前验证 |
| `deploy_tencent_simple.py` | 简化部署脚本 | 快速部署 |
| `deploy_history_to_tencent.py` | 完整部署脚本 | 详细部署 |
| `quick_deploy_history.sh` | 一键部署脚本 | 自动化部署 |
### 2. 部署流程
#### 2.1 预检查(推荐)
```bash
# 检查数据库连接和权限
python3 check_tencent_db.py
```
#### 2.2 快速部署
```bash
# 方式1: 直接运行Python脚本
python3 deploy_tencent_simple.py
# 方式2: 使用一键部署脚本
./quick_deploy_history.sh
```
#### 2.3 完整部署
```bash
# 使用完整部署脚本(包含触发器、存储过程等)
python3 deploy_history_to_tencent.py
```
## 🔧 配置说明
### 1. 数据库配置
所有脚本使用以下腾讯云数据库配置:
```python
DB_CONFIG = {
'host': 'gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com',
'port': 24936,
'user': 'root',
'password': '!Rjb12191',
'database': 'pro_db',
'charset': 'utf8mb4'
}
```
### 2. 创建的表结构
#### 2.1 历史记录表 (prompt_history)
```sql
CREATE TABLE prompt_history (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
wx_user_id INT,
original_input TEXT NOT NULL,
generated_prompt TEXT NOT NULL,
template_id INT,
template_name VARCHAR(100),
generation_time INT,
satisfaction_rating TINYINT,
tags JSON,
is_favorite BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
```
#### 2.2 标签表 (history_tags)
```sql
CREATE TABLE history_tags (
id INT PRIMARY KEY AUTO_INCREMENT,
history_id INT NOT NULL,
tag_name VARCHAR(50) NOT NULL,
tag_type VARCHAR(20) DEFAULT 'custom',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
#### 2.3 统计表 (user_statistics)
```sql
CREATE TABLE user_statistics (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT UNIQUE NOT NULL,
total_generations INT DEFAULT 0,
favorite_count INT DEFAULT 0,
avg_rating DECIMAL(3,2) DEFAULT 0.00,
last_generation_at TIMESTAMP NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
```
## 🚀 快速开始
### 1. 环境准备
```bash
# 确保Python3已安装
python3 --version
# 安装依赖
pip install pymysql
# 给脚本添加执行权限
chmod +x *.py *.sh
```
### 2. 执行部署
```bash
# 步骤1: 检查数据库连接
python3 check_tencent_db.py
# 步骤2: 执行部署
python3 deploy_tencent_simple.py
# 步骤3: 重启应用
pkill -f gunicorn
gunicorn -c gunicorn.conf.py src.flask_prompt_master:app
# 步骤4: 测试功能
python3 test_history_feature.py
```
### 3. 验证部署
```bash
# 访问历史页面
curl http://localhost:5002/history
# 测试API接口
curl http://localhost:5002/api/history
```
## 📊 部署结果验证
### 1. 数据库验证
```sql
-- 检查表是否创建
SHOW TABLES LIKE '%history%';
-- 查看表结构
DESCRIBE prompt_history;
DESCRIBE history_tags;
DESCRIBE user_statistics;
-- 检查示例数据
SELECT COUNT(*) FROM prompt_history;
SELECT * FROM prompt_history LIMIT 5;
```
### 2. 应用验证
```bash
# 检查应用日志
tail -f logs/app.log
# 测试API响应
curl -X GET "http://localhost:5002/api/history" -H "Content-Type: application/json"
```
### 3. 功能验证
```bash
# 运行完整测试
python3 test_history_feature.py
# 检查特定功能
curl -X GET "http://localhost:5002/api/history/statistics"
```
## 🔧 故障排除
### 1. 常见问题
#### 1.1 连接失败
```
❌ 数据库连接失败: (2003, "Can't connect to MySQL server")
```
**解决方案:**
- 检查网络连接
- 验证数据库地址和端口
- 确认防火墙设置
#### 1.2 权限不足
```
❌ 创建表失败: (1142, "CREATE command denied to user")
```
**解决方案:**
- 检查用户权限
- 联系数据库管理员授权
#### 1.3 表已存在
```
⚠️ 表 prompt_history 已存在
```
**解决方案:**
- 脚本会自动跳过已存在的表
- 如需重新创建,先删除现有表
### 2. 日志查看
```bash
# 查看部署日志
python3 deploy_tencent_simple.py 2>&1 | tee deploy.log
# 查看应用日志
tail -f logs/app.log | grep -i history
```
### 3. 回滚操作
```sql
-- 删除历史相关表(谨慎操作)
DROP TABLE IF EXISTS history_tags;
DROP TABLE IF EXISTS user_statistics;
DROP TABLE IF EXISTS prompt_history;
```
## 📈 性能优化
### 1. 数据库优化
```sql
-- 添加复合索引
CREATE INDEX idx_user_created_at ON prompt_history(user_id, created_at);
CREATE INDEX idx_favorite_rating ON prompt_history(is_favorite, satisfaction_rating);
-- 分析表使用情况
ANALYZE TABLE prompt_history;
ANALYZE TABLE history_tags;
ANALYZE TABLE user_statistics;
```
### 2. 应用优化
```python
# 在配置中添加连接池设置
SQLALCHEMY_ENGINE_OPTIONS = {
'pool_pre_ping': True,
'pool_recycle': 300,
'pool_size': 10,
'max_overflow': 20
}
```
## 🔄 维护操作
### 1. 数据清理
```sql
-- 清理30天前的数据
DELETE FROM prompt_history
WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY);
-- 更新统计信息
UPDATE user_statistics SET
total_generations = (SELECT COUNT(*) FROM prompt_history WHERE user_id = user_statistics.user_id),
favorite_count = (SELECT COUNT(*) FROM prompt_history WHERE user_id = user_statistics.user_id AND is_favorite = TRUE);
```
### 2. 数据备份
```bash
# 备份历史数据
mysqldump -h gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com -P 24936 -u root -p pro_db prompt_history history_tags user_statistics > history_backup.sql
```
### 3. 监控脚本
```bash
# 创建监控脚本
cat > monitor_history.sh << 'EOF'
#!/bin/bash
echo "历史记录统计:"
mysql -h gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com -P 24936 -u root -p pro_db -e "
SELECT
COUNT(*) as total_records,
COUNT(DISTINCT user_id) as unique_users,
AVG(satisfaction_rating) as avg_rating
FROM prompt_history;
"
EOF
chmod +x monitor_history.sh
```
## 🎉 部署完成
部署成功后,您将拥有以下功能:
### ✅ 核心功能
- 📝 历史记录管理
- 🔍 智能搜索筛选
- ⭐ 收藏评分系统
- 📊 统计分析
- 📤 数据导出
### ✅ 访问地址
- **历史页面**: http://localhost:5002/history
- **API接口**: http://localhost:5002/api/history
- **统计接口**: http://localhost:5002/api/history/statistics
### ✅ 测试验证
- 运行测试脚本验证功能
- 检查数据库表结构
- 验证API接口响应
---
*部署完成时间2025年1月*
*功能版本v1.0*
*维护人员:系统管理员*