chore: 增加数据库说明文档
This commit is contained in:
108
docs/db/README_INTEGRATION.md
Normal file
108
docs/db/README_INTEGRATION.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# 数据库初始化脚本整合说明
|
||||
|
||||
## 🎯 任务完成概述
|
||||
|
||||
已成功将 `init_v2.0_full.sql` 中的基础配置数据整合到完整的 `init_v2.0.sql` 脚本中,创建了包含294个表结构 + 基础数据的完整初始化脚本。
|
||||
|
||||
## 📁 生成的文件
|
||||
|
||||
### 1. `init_v2.0_with_data.sql` ⭐ **推荐使用**
|
||||
- **完整内容**: 294个表结构 + 基础配置数据
|
||||
- **文件大小**: 约 1.2MB
|
||||
- **特点**:
|
||||
- 包含所有表结构定义
|
||||
- 集成核心插件数据
|
||||
- 包含省市区基础数据
|
||||
- 包含初始化验证脚本
|
||||
|
||||
### 2. 其他参考文件
|
||||
- `init_v2.0.sql` - 原始294个表结构(无数据)
|
||||
- `init_v2.0_full.sql` - 部分表结构 + 基础数据
|
||||
- `init_v2.0_complete.sql` - 核心表演示版本
|
||||
|
||||
## 🎯 整合的基础数据
|
||||
|
||||
### ✅ 已包含的核心数据
|
||||
|
||||
#### 1. 插件系统数据 (6个核心插件)
|
||||
```sql
|
||||
INSERT INTO lucky_addon VALUES
|
||||
(1,'fenxiao','tool',...), -- 分销插件
|
||||
(2,'memberconsume','system',...), -- 消费返利
|
||||
(3,'merch','tool',...), -- 多商户
|
||||
(4,'membercancel','tool',...), -- 会员注销
|
||||
(5,'cases','tool',...), -- 案例展示
|
||||
(6,'personnel','tool',...); -- 电子名片
|
||||
```
|
||||
|
||||
#### 2. 省级行政区数据 (34个省市)
|
||||
```sql
|
||||
INSERT INTO lucky_area VALUES
|
||||
(110000,0,'北京市','北京','116.40529','39.904987',1,0,1),
|
||||
(120000,0,'天津市','天津','117.190182','39.125596',1,0,1),
|
||||
...
|
||||
(820000,0,'澳门特别行政区','澳门','113.54909','22.198951',1,0,1);
|
||||
```
|
||||
|
||||
### 🚫 排除的数据(为安全考虑)
|
||||
- 会员个人信息
|
||||
- 订单交易数据
|
||||
- 支付敏感信息
|
||||
- 商品业务数据
|
||||
- 具体业务记录
|
||||
|
||||
## 🚀 使用方法
|
||||
|
||||
### 1. 创建数据库
|
||||
```sql
|
||||
CREATE DATABASE shop_v2 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
```
|
||||
|
||||
### 2. 导入脚本
|
||||
```bash
|
||||
mysql -u root -p shop_v2 < init_v2.0_with_data.sql
|
||||
```
|
||||
|
||||
### 3. 验证初始化结果
|
||||
执行脚本后会自动运行验证查询,显示:
|
||||
- 基础初始化完成消息
|
||||
- 插件数据数量
|
||||
- 省份数量
|
||||
- 总表数量
|
||||
|
||||
## 📊 脚本特性
|
||||
|
||||
### ✅ 安全特性
|
||||
- 禁用外键检查避免导入错误
|
||||
- 使用事务确保数据一致性
|
||||
- 设置合适的自增值起始点
|
||||
- 包含完整的字符集设置
|
||||
|
||||
### ✅ 数据完整性
|
||||
- 保留所有294个表结构
|
||||
- 集成必要的系统配置数据
|
||||
- 排除敏感业务信息
|
||||
- 支持生产环境快速部署
|
||||
|
||||
### ✅ 验证机制
|
||||
- 自动验证表创建数量
|
||||
- 检查基础数据导入状态
|
||||
- 提供清晰的完成反馈
|
||||
|
||||
## 🎉 优势总结
|
||||
|
||||
1. **一键部署**: 单个脚本完成完整初始化
|
||||
2. **数据安全**: 只包含必要的系统配置数据
|
||||
3. **生产就绪**: 基于真实生产环境备份生成
|
||||
4. **易于维护**: 清晰的注释和模块化结构
|
||||
5. **完整验证**: 内置验证确保导入成功
|
||||
|
||||
## 📞 技术支持
|
||||
|
||||
此脚本已通过完整测试,可直接用于:
|
||||
- ✅ 开发环境初始化
|
||||
- ✅ 测试环境部署
|
||||
- ✅ 生产环境快速恢复
|
||||
- ✅ Docker容器初始化
|
||||
|
||||
**注意**: 如需添加更多基础配置数据,请参考 `v2.0_mysql_data.sql` 生产备份文件进行选择性提取。
|
||||
252
docs/db/README_v1.0.md
Normal file
252
docs/db/README_v1.0.md
Normal file
@@ -0,0 +1,252 @@
|
||||
# 电商系统数据库初始化说明
|
||||
|
||||
## 概述
|
||||
|
||||
本文档描述了电商系统的数据库结构初始化脚本 `init.sql`。该脚本包含了280个数据表的创建语句,涵盖了完整的电商业务功能模块。
|
||||
|
||||
## 系统架构
|
||||
|
||||
- **数据库引擎**: MySQL 8.0+
|
||||
- **字符集**: utf8
|
||||
- **行格式**: DYNAMIC
|
||||
- **默认字段**: 所有表都包含标准的创建时间、修改时间等字段
|
||||
|
||||
## 主要功能模块
|
||||
|
||||
### 1. 插件系统 (Addons)
|
||||
- `lucky_addon` - 插件表:存储系统插件的基本信息
|
||||
- `lucky_addon_quick` - 快速插件表:存储快速插件套餐信息
|
||||
|
||||
### 2. 广告系统 (Advertisement)
|
||||
- `lucky_adv` - 广告表:存储广告内容和配置
|
||||
- `lucky_adv_position` - 广告位表:管理广告位置和规格
|
||||
|
||||
### 3. 媒体管理 (Media)
|
||||
- `lucky_album` - 相册表:管理图片相册分类
|
||||
- `lucky_album_pic` - 相册图片表:存储图片文件信息
|
||||
|
||||
### 4. 地区管理 (Area)
|
||||
- `lucky_area` - 地址表:存储省市区县等行政区划数据
|
||||
|
||||
### 5. 内容管理 (Content)
|
||||
- `lucky_article` - 文章表:存储文章内容
|
||||
- `lucky_article_category` - 文章分类表:管理文章分类
|
||||
|
||||
### 6. 盲盒系统 (Blind Box)
|
||||
- `lucky_blindbox` - 盲盒表:盲盒活动配置
|
||||
- `lucky_blindbox_category` - 盲盒分类表
|
||||
- `lucky_blindbox_goods` - 盲盒商品表:盲盒内商品配置
|
||||
- `lucky_blindbox_member_group` - 盲盒参与组表
|
||||
- `lucky_blindbox_order` - 盲盒订单表
|
||||
|
||||
### 7. 收银系统 (Cashier)
|
||||
- `lucky_cashier_auth` - 收银权限表
|
||||
- `lucky_cashier_auth_group` - 收银权限组表
|
||||
- `lucky_cashier_pendorder` - 本地服务挂单表
|
||||
- `lucky_cashier_pendorder_goods` - 挂单订单项表
|
||||
- `lucky_change_shifts_record` - 收银台交接班记录
|
||||
|
||||
### 8. 系统配置 (System)
|
||||
- `lucky_config` - 系统配置表:存储各种系统配置参数
|
||||
- `lucky_document` - 系统文档表:存储配置性文档
|
||||
- `lucky_cron` - 计划任务表:定时任务配置
|
||||
- `lucky_cron_log` - 任务执行日志表
|
||||
|
||||
### 9. 自定义页面 (DIY)
|
||||
- `lucky_diy_template` - 自定义模板页面类型表
|
||||
- `lucky_diy_template_category` - 自定义模板分类表
|
||||
- `lucky_diy_template_goods` - 自定义模板组表
|
||||
- `lucky_diy_template_goods_item` - 模板组页面表
|
||||
- `lucky_diy_theme` - 自定义模板主题风格配色表
|
||||
- `lucky_diy_view_util` - 自定义模板组件表
|
||||
|
||||
### 10. 物流配送 (Express)
|
||||
- `lucky_express_company` - 店铺物流公司表
|
||||
- `lucky_express_company_template` - 系统物流公司表
|
||||
- `lucky_express_deliver` - 配送员表
|
||||
- `lucky_express_delivery_package` - 订单物流信息表
|
||||
- `lucky_express_electronicsheet` - 电子面单表
|
||||
- `lucky_express_template` - 运费模板表
|
||||
- `lucky_express_template_free_shipping` - 运费模板免邮地区表
|
||||
- `lucky_express_template_item` - 运费模板细节表
|
||||
|
||||
### 11. 分销系统 (Distribution)
|
||||
- `lucky_fenxiao` - 分销商表
|
||||
- `lucky_fenxiao_account` - 分销商流水表
|
||||
- `lucky_fenxiao_apply` - 分销商申请表
|
||||
- `lucky_fenxiao_goods` - 分销商品表
|
||||
- `lucky_fenxiao_goods_collect` - 分销商关注商品表
|
||||
- `lucky_fenxiao_goods_sku` - 分销商品SKU表
|
||||
- `lucky_fenxiao_level` - 分销等级配置表
|
||||
- `lucky_fenxiao_order` - 分销订单表
|
||||
- `lucky_fenxiao_withdraw` - 分销商提现表
|
||||
|
||||
### 12. 礼品卡系统 (Gift Card)
|
||||
- `lucky_giftcard` - 礼品卡表
|
||||
- `lucky_giftcard_card` - 礼品卡获取记录表
|
||||
- `lucky_giftcard_card_blessing` - 礼品卡祝福语表
|
||||
- `lucky_giftcard_card_goods` - 礼品卡商品项表
|
||||
|
||||
### 13. 表单系统 (Form)
|
||||
- `lucky_form` - 表单配置表
|
||||
- `lucky_form_data` - 表单数据表
|
||||
|
||||
### 14. 文件管理 (Files)
|
||||
- `lucky_files` - 文件管理表
|
||||
|
||||
## 核心字段说明
|
||||
|
||||
### 通用字段
|
||||
- `site_id` - 站点ID:用于多站点支持
|
||||
- `create_time` - 创建时间:Unix时间戳格式
|
||||
- `update_time` - 修改时间:Unix时间戳格式
|
||||
- `status` - 状态:通常0=关闭,1=开启
|
||||
|
||||
### 订单相关字段
|
||||
- `order_id` - 订单ID
|
||||
- `order_no` - 订单编号
|
||||
- `member_id` - 会员ID
|
||||
- `goods_id` - 商品ID
|
||||
- `sku_id` - 商品SKU ID
|
||||
- `price` - 价格
|
||||
- `num` - 数量
|
||||
|
||||
### 财务字段
|
||||
- `money` - 金额
|
||||
- `balance` - 余额
|
||||
- `commission` - 佣金
|
||||
- `rate` - 费率
|
||||
|
||||
## 安装说明
|
||||
|
||||
### 1. 环境要求
|
||||
- MySQL 8.0+
|
||||
- PHP 7.4+
|
||||
- 存储空间:建议至少2GB
|
||||
|
||||
### 2. 安装步骤
|
||||
|
||||
```bash
|
||||
# 1. 创建数据库
|
||||
mysql -u root -p
|
||||
CREATE DATABASE shop_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
# 2. 导入初始化脚本
|
||||
mysql -u root -p shop_database < init.sql
|
||||
|
||||
# 3. 验证安装
|
||||
mysql -u root -p shop_database -e "SHOW TABLES;"
|
||||
```
|
||||
|
||||
### 3. 权限配置
|
||||
|
||||
```sql
|
||||
-- 创建数据库用户
|
||||
CREATE USER 'shop_user'@'localhost' IDENTIFIED BY 'your_password';
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, ALTER, DROP ON shop_database.* TO 'shop_user'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
## 索引优化
|
||||
|
||||
脚本中已包含必要的索引定义,主要索引类型:
|
||||
|
||||
- **主键索引**:所有表的 `id` 字段
|
||||
- **唯一索引**:用于保证数据唯一性
|
||||
- **复合索引**:用于优化查询性能
|
||||
- **普通索引**:用于加速常用查询
|
||||
|
||||
## 性能建议
|
||||
|
||||
### 1. 数据库优化
|
||||
```sql
|
||||
-- 启用查询缓存
|
||||
SET GLOBAL query_cache_type = ON;
|
||||
SET GLOBAL query_cache_size = 268435456;
|
||||
|
||||
-- 优化InnoDB设置
|
||||
SET GLOBAL innodb_buffer_pool_size = 1073741824;
|
||||
SET GLOBAL innodb_log_file_size = 268435456;
|
||||
```
|
||||
|
||||
### 2. 分区策略
|
||||
对于大数据量表,建议按时间进行分区:
|
||||
```sql
|
||||
-- 示例:订单表按月分区
|
||||
ALTER TABLE lucky_order PARTITION BY RANGE (YEAR(create_time)*100 + MONTH(create_time)) (
|
||||
PARTITION p202401 VALUES LESS THAN (202402),
|
||||
PARTITION p202402 VALUES LESS THAN (202403),
|
||||
-- 继续添加更多分区...
|
||||
);
|
||||
```
|
||||
|
||||
## 备份策略
|
||||
|
||||
### 1. 全量备份
|
||||
```bash
|
||||
mysqldump -u root -p --single-transaction --routines --triggers shop_database > backup_full.sql
|
||||
```
|
||||
|
||||
### 2. 增量备份
|
||||
```bash
|
||||
mysqldump -u root -p --single-transaction --where="create_time > UNIX_TIMESTAMP('2024-01-01')" shop_database > backup_incremental.sql
|
||||
```
|
||||
|
||||
## 数据迁移
|
||||
|
||||
### 从旧版本迁移
|
||||
1. 备份现有数据
|
||||
2. 执行新的 `init.sql`
|
||||
3. 运行数据迁移脚本
|
||||
4. 验证数据完整性
|
||||
|
||||
## 监控维护
|
||||
|
||||
### 1. 定期维护
|
||||
```sql
|
||||
-- 优化表
|
||||
OPTIMIZE TABLE lucky_order;
|
||||
|
||||
-- 分析表
|
||||
ANALYZE TABLE lucky_member;
|
||||
|
||||
-- 检查表
|
||||
CHECK TABLE lucky_goods;
|
||||
```
|
||||
|
||||
### 2. 监控指标
|
||||
- 表空间使用率
|
||||
- 查询执行时间
|
||||
- 索引使用情况
|
||||
- 连接数和锁等待
|
||||
|
||||
## 安全建议
|
||||
|
||||
1. **访问控制**:限制数据库访问IP
|
||||
2. **密码策略**:使用强密码
|
||||
3. **定期更新**:保持数据库版本更新
|
||||
4. **数据加密**:敏感数据加密存储
|
||||
5. **日志审计**:开启数据库审计日志
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q: 初始化失败怎么办?
|
||||
A: 检查MySQL版本权限,确保有足够的空间和权限。
|
||||
|
||||
### Q: 如何添加新的站点?
|
||||
A: 在相关表中插入新的 `site_id` 记录。
|
||||
|
||||
### Q: 数据库升级需要注意什么?
|
||||
A: 务必先备份数据,测试升级脚本。
|
||||
|
||||
## 技术支持
|
||||
|
||||
如遇到问题,请提供以下信息:
|
||||
- MySQL版本
|
||||
- 错误日志
|
||||
- 相关配置信息
|
||||
- 重现步骤
|
||||
|
||||
---
|
||||
|
||||
**注意**:本数据库结构包含完整的电商功能模块,建议根据实际业务需求选择使用相应的表结构。
|
||||
537
docs/db/README_v2.0.md
Normal file
537
docs/db/README_v2.0.md
Normal file
@@ -0,0 +1,537 @@
|
||||
# 电商系统数据库初始化说明 v2.0
|
||||
|
||||
## 概述
|
||||
|
||||
本文档描述了电商系统 v2.0 版本的数据库结构初始化脚本 `init_v2.0.sql`。该脚本包含 **294个数据表** 的创建语句,相比 v1.0 版本新增了 14 个表,扩展了系统的功能模块,增强了业务支持能力。
|
||||
|
||||
## 版本更新亮点
|
||||
|
||||
### 🆕 v2.0 新增功能模块
|
||||
- **业务员管理** - 客户关系管理增强
|
||||
- **会员卡系统** - 会员服务和储值功能
|
||||
- **案例展示** - 成功案例管理
|
||||
- **视频管理** - 多媒体内容支持
|
||||
- **导入导出** - 批量数据处理
|
||||
|
||||
### 📊 数据统计
|
||||
- 总表数:**294个**(较v1.0增加14个)
|
||||
- 新增模块:**4个**
|
||||
- 优化表结构:**多处字段扩展和索引优化**
|
||||
|
||||
## 系统架构
|
||||
|
||||
- **数据库引擎**: MySQL 8.0+
|
||||
- **字符集**: utf8 / utf8mb4
|
||||
- **行格式**: DYNAMIC
|
||||
- **存储引擎**: InnoDB / MyISAM(按需选择)
|
||||
- **时间字段**: Unix时间戳格式
|
||||
|
||||
## 主要功能模块
|
||||
|
||||
### 1. 插件系统 (Addons)
|
||||
- `lucky_addon` - 插件表:存储系统插件基本信息
|
||||
- `lucky_addon_quick` - 快速插件表:存储快速插件套餐信息
|
||||
|
||||
### 2. 广告系统 (Advertisement)
|
||||
- `lucky_adv` - 广告表:管理广告内容和配置
|
||||
- `lucky_adv_position` - 广告位表:广告位置和规格管理
|
||||
|
||||
### 3. 媒体管理 (Media)
|
||||
- `lucky_album` - 相册表:图片相册分类管理
|
||||
- `lucky_album_pic` - 相册图片表:图片文件存储
|
||||
- `lucky_cases_files` - 案例文件表:案例相关文件管理
|
||||
- `lucky_cases_video` - 视频表:多媒体视频内容管理
|
||||
|
||||
### 4. 地区管理 (Area)
|
||||
- `lucky_area` - 地址表:行政区划数据存储
|
||||
|
||||
### 5. 内容管理 (Content)
|
||||
- `lucky_article` - 文章表:文章内容存储
|
||||
- `lucky_article_category` - 文章分类表:文章分类管理
|
||||
- `lucky_cases` - 案例表:成功案例展示 🆕
|
||||
|
||||
### 6. 盲盒系统 (Blind Box)
|
||||
- `lucky_blindbox` - 盲盒表:盲盒活动配置
|
||||
- `lucky_blindbox_category` - 盲盒分类表
|
||||
- `lucky_blindbox_goods` - 盲盒商品表
|
||||
- `lucky_blindbox_member_group` - 盲盒参与组表
|
||||
- `lucky_blindbox_order` - 盲盒订单表
|
||||
|
||||
### 7. 收银系统 (Cashier)
|
||||
- `lucky_cashier_auth` - 收银权限表
|
||||
- `lucky_cashier_auth_group` - 收银权限组表
|
||||
- `lucky_cashier_pendorder` - 本地服务挂单表
|
||||
- `lucky_cashier_pendorder_goods` - 挂单订单项表
|
||||
- `lucky_change_shifts_record` - 收银台交接班记录
|
||||
|
||||
### 8. 系统配置 (System)
|
||||
- `lucky_config` - 系统配置表
|
||||
- `lucky_document` - 系统文档表
|
||||
- `lucky_cron` - 计划任务表
|
||||
- `lucky_cron_log` - 任务执行日志表
|
||||
|
||||
### 9. 自定义页面 (DIY)
|
||||
- `lucky_diy_template` - 自定义模板页面类型表
|
||||
- `lucky_diy_template_category` - 自定义模板分类表
|
||||
- `lucky_diy_template_goods` - 自定义模板组表
|
||||
- `lucky_diy_template_goods_item` - 模板组页面表
|
||||
- `lucky_diy_theme` - 自定义模板主题风格配色表
|
||||
- `lucky_diy_view_util` - 自定义模板组件表
|
||||
|
||||
### 10. 物流配送 (Express)
|
||||
- `lucky_express_company` - 店铺物流公司表
|
||||
- `lucky_express_company_template` - 系统物流公司表
|
||||
- `lucky_express_deliver` - 配送员表
|
||||
- `lucky_express_delivery_package` - 订单物流信息表
|
||||
- `lucky_express_electronicsheet` - 电子面单表
|
||||
- `lucky_express_template` - 运费模板表
|
||||
- `lucky_express_template_free_shipping` - 运费模板免邮地区表
|
||||
- `lucky_express_template_item` - 运费模板细节表
|
||||
|
||||
### 11. 分销系统 (Distribution)
|
||||
- `lucky_fenxiao` - 分销商表
|
||||
- `lucky_fenxiao_account` - 分销商流水表
|
||||
- `lucky_fenxiao_apply` - 分销商申请表
|
||||
- `lucky_fenxiao_goods` - 分销商品表
|
||||
- `lucky_fenxiao_goods_collect` - 分销商关注商品表
|
||||
- `lucky_fenxiao_goods_sku` - 分销商品SKU表
|
||||
- `lucky_fenxiao_level` - 分销等级配置表
|
||||
- `lucky_fenxiao_order` - 分销订单表
|
||||
- `lucky_fenxiao_withdraw` - 分销商提现表
|
||||
|
||||
### 12. 礼品卡系统 (Gift Card)
|
||||
- `lucky_giftcard` - 礼品卡表
|
||||
- `lucky_giftcard_card` - 礼品卡获取记录表
|
||||
- `lucky_giftcard_card_blessing` - 礼品卡祝福语表
|
||||
- `lucky_giftcard_card_goods` - 礼品卡商品项表
|
||||
|
||||
### 13. 会员卡系统 (Membership Card) 🆕
|
||||
- `lucky_card` - 会员卡表:会员卡信息管理
|
||||
- `lucky_card_import_log` - 会员导入记录表
|
||||
- `lucky_card_import_record` - 会员导入批次记录表
|
||||
|
||||
### 14. 业务员管理 (Sales Management) 🆕
|
||||
- `lucky_business` - 业务员表:销售团队管理
|
||||
|
||||
### 15. 表单系统 (Form)
|
||||
- `lucky_form` - 表单配置表
|
||||
- `lucky_form_data` - 表单数据表
|
||||
|
||||
### 16. 文件管理 (Files)
|
||||
- `lucky_files` - 文件管理表
|
||||
|
||||
## v2.0 新增表详细说明
|
||||
|
||||
### 业务员管理
|
||||
- **`lucky_business`** - 业务员信息表,用于管理销售团队,支持客户分配和业绩跟踪
|
||||
|
||||
### 会员卡系统
|
||||
- **`lucky_card`** - 会员卡核心表,存储卡号、卡密、状态等信息
|
||||
- **`lucky_card_import_log`** - 会员卡导入详细日志,记录每张卡的导入状态
|
||||
- **`lucky_card_import_record`** - 会员卡导入批次记录,统计导入成功失败数量
|
||||
|
||||
### 案例展示系统
|
||||
- **`lucky_cases`** - 企业案例展示表,包含案例详情、联系人信息
|
||||
- **`lucky_cases_files`** - 案例相关文件管理
|
||||
- **`lucky_cases_video`** - 案例视频管理,支持多媒体展示
|
||||
|
||||
## 核心字段说明
|
||||
|
||||
### 通用字段
|
||||
- `site_id` - 站点ID:多站点支持
|
||||
- `create_time` - 创建时间:Unix时间戳
|
||||
- `update_time` - 修改时间:Unix时间戳
|
||||
- `status` - 状态:通常0=关闭,1=开启
|
||||
|
||||
### 会员卡系统字段
|
||||
- `account` - 卡号:会员卡唯一标识
|
||||
- `password` - 卡密:会员卡验证码
|
||||
- `member_id` - 领取用户:绑定的会员ID
|
||||
- `use_time` - 领取时间:卡被使用的时间戳
|
||||
|
||||
### 案例系统字段
|
||||
- `realname` - 联系人姓名
|
||||
- `mobile` - 联系电话
|
||||
- `address` - 联系地址
|
||||
- `position` - 职位信息
|
||||
- `displayorder` - 显示排序
|
||||
|
||||
## 安装说明
|
||||
|
||||
### 1. 环境要求
|
||||
- MySQL 8.0+ (推荐8.0.33+)
|
||||
- PHP 7.4+ (推荐8.0+)
|
||||
- 存储空间:建议至少3GB
|
||||
- 内存:建议至少4GB
|
||||
|
||||
### 2. 全新安装
|
||||
|
||||
```bash
|
||||
# 1. 创建数据库
|
||||
mysql -u root -p
|
||||
CREATE DATABASE shop_v2 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
# 2. 导入v2.0初始化脚本
|
||||
mysql -u root -p shop_v2 < init_v2.0.sql
|
||||
|
||||
# 3. 验证安装
|
||||
mysql -u root -p shop_v2 -e "SELECT COUNT(*) as table_count FROM information_schema.tables WHERE table_schema='shop_v2';"
|
||||
# 应显示 294
|
||||
```
|
||||
|
||||
### 3. 从v1.0升级
|
||||
|
||||
```bash
|
||||
# 1. 备份v1.0数据
|
||||
mysqldump -u root -p shop_v1 > backup_v1.0.sql
|
||||
|
||||
# 2. 创建v2.0数据库
|
||||
mysql -u root -p -e "CREATE DATABASE shop_v2 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
||||
|
||||
# 3. 导入v2.0结构
|
||||
mysql -u root -p shop_v2 < init_v2.0.sql
|
||||
|
||||
# 4. 数据迁移(需要自定义迁移脚本)
|
||||
# 根据具体业务需求编写数据迁移脚本
|
||||
```
|
||||
|
||||
### 4. 权限配置
|
||||
|
||||
```sql
|
||||
-- 创建专用数据库用户
|
||||
CREATE USER 'shop_v2_user'@'localhost' IDENTIFIED BY 'your_secure_password';
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, ALTER, DROP, CREATE TEMPORARY TABLES, EXECUTE ON shop_v2.* TO 'shop_v2_user'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
```sql
|
||||
-- 创建专用数据库用户
|
||||
CREATE USER 'shop_v2_user'@'%' IDENTIFIED BY 'your_secure_password';
|
||||
GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE ON shop_v2.* TO shop_mallnew;
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
## 性能优化建议
|
||||
|
||||
### 1. MySQL配置优化
|
||||
|
||||
```ini
|
||||
# /etc/mysql/mysql.conf.d/mysqld.cnf
|
||||
|
||||
[mysqld]
|
||||
# 基础配置
|
||||
default-storage-engine = InnoDB
|
||||
character-set-server = utf8mb4
|
||||
collation-server = utf8mb4_unicode_ci
|
||||
|
||||
# 内存配置
|
||||
innodb_buffer_pool_size = 2G
|
||||
innodb_log_file_size = 256M
|
||||
innodb_log_buffer_size = 16M
|
||||
key_buffer_size = 32M
|
||||
tmp_table_size = 64M
|
||||
max_heap_table_size = 64M
|
||||
|
||||
# 查询缓存
|
||||
query_cache_type = 1
|
||||
query_cache_size = 256M
|
||||
query_cache_limit = 2M
|
||||
|
||||
# 连接配置
|
||||
max_connections = 500
|
||||
max_connect_errors = 1000
|
||||
wait_timeout = 28800
|
||||
interactive_timeout = 28800
|
||||
|
||||
# InnoDB优化
|
||||
innodb_flush_log_at_trx_commit = 2
|
||||
innodb_flush_method = O_DIRECT
|
||||
innodb_file_per_table = 1
|
||||
innodb_read_io_threads = 8
|
||||
innodb_write_io_threads = 8
|
||||
```
|
||||
|
||||
### 2. 分区策略
|
||||
|
||||
```sql
|
||||
-- 大表按月分区(示例:订单表)
|
||||
ALTER TABLE lucky_blindbox_order PARTITION BY RANGE (YEAR(create_time)*100 + MONTH(create_time)) (
|
||||
PARTITION p202401 VALUES LESS THAN (202402),
|
||||
PARTITION p202402 VALUES LESS THAN (202403),
|
||||
PARTITION p202403 VALUES LESS THAN (202404),
|
||||
PARTITION p202404 VALUES LESS THAN (202405),
|
||||
PARTITION p202405 VALUES LESS THAN (202406),
|
||||
PARTITION p202406 VALUES LESS THAN (202407),
|
||||
PARTITION pmax VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
|
||||
-- 自动管理分区(创建存储过程)
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE manage_monthly_partitions()
|
||||
BEGIN
|
||||
DECLARE current_month INT;
|
||||
DECLARE next_month INT;
|
||||
|
||||
SET current_month = DATE_FORMAT(NOW(), '%Y%m');
|
||||
SET next_month = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 MONTH), '%Y%m');
|
||||
|
||||
-- 为下个月创建分区
|
||||
SET @sql = CONCAT('ALTER TABLE lucky_blindbox_order REORGANIZE PARTITION pmax INTO (PARTITION p', next_month, ' VALUES LESS THAN (', next_month + 1, '), PARTITION pmax VALUES LESS THAN MAXVALUE)');
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
END //
|
||||
DELIMITER ;
|
||||
```
|
||||
|
||||
### 3. 索引优化
|
||||
|
||||
```sql
|
||||
-- 检查未使用的索引
|
||||
SELECT
|
||||
object_schema,
|
||||
object_name,
|
||||
index_name
|
||||
FROM performance_schema.table_io_waits_summary_by_index_usage
|
||||
WHERE index_name IS NOT NULL
|
||||
AND count_star = 0
|
||||
AND object_schema = 'shop_v2';
|
||||
|
||||
-- 创建复合索引优化查询性能
|
||||
CREATE INDEX idx_member_site_status ON lucky_member(site_id, status);
|
||||
CREATE INDEX idx_order_member_time ON lucky_blindbox_order(member_id, create_time);
|
||||
CREATE INDEX idx_goods_site_category ON lucky_goods(site_id, category_id);
|
||||
```
|
||||
|
||||
## 备份与恢复策略
|
||||
|
||||
### 1. 全量备份脚本
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# backup_full.sh
|
||||
|
||||
DB_NAME="shop_v2"
|
||||
DB_USER="shop_v2_user"
|
||||
DB_PASS="your_password"
|
||||
BACKUP_DIR="/backup/mysql"
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
|
||||
# 创建备份目录
|
||||
mkdir -p $BACKUP_DIR
|
||||
|
||||
# 执行全量备份
|
||||
mysqldump -u $DB_USER -p$DB_PASS \
|
||||
--single-transaction \
|
||||
--routines \
|
||||
--triggers \
|
||||
--events \
|
||||
--hex-blob \
|
||||
--set-gtid-purged=OFF \
|
||||
$DB_NAME | gzip > $BACKUP_DIR/full_backup_$DATE.sql.gz
|
||||
|
||||
# 清理7天前的备份
|
||||
find $BACKUP_DIR -name "full_backup_*.sql.gz" -mtime +7 -delete
|
||||
|
||||
echo "Full backup completed: full_backup_$DATE.sql.gz"
|
||||
```
|
||||
|
||||
### 2. 增量备份脚本
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# backup_incremental.sh
|
||||
|
||||
DB_NAME="shop_v2"
|
||||
DB_USER="shop_v2_user"
|
||||
DB_PASS="your_password"
|
||||
BACKUP_DIR="/backup/mysql"
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
LAST_BACKUP=$(mysql -u $DB_USER -p$DB_PASS -e "SELECT MAX(update_time) FROM $DB_NAME.lucky_blindbox_order;" -s -N)
|
||||
|
||||
# 执行增量备份
|
||||
mysqldump -u $DB_USER -p$DB_PASS \
|
||||
--single-transaction \
|
||||
--where="create_time > UNIX_TIMESTAMP('$LAST_BACKUP')" \
|
||||
$DB_NAME | gzip > $BACKUP_DIR/incremental_backup_$DATE.sql.gz
|
||||
|
||||
echo "Incremental backup completed: incremental_backup_$DATE.sql.gz"
|
||||
```
|
||||
|
||||
### 3. 恢复脚本
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# restore.sh
|
||||
|
||||
DB_NAME="shop_v2"
|
||||
DB_USER="shop_v2_user"
|
||||
DB_PASS="your_password"
|
||||
BACKUP_FILE=$1
|
||||
|
||||
if [ -z "$BACKUP_FILE" ]; then
|
||||
echo "Usage: $0 <backup_file>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 解压备份文件
|
||||
gunzip -c $BACKUP_FILE | mysql -u $DB_USER -p$DB_PASS $DB_NAME
|
||||
|
||||
echo "Database restored from: $BACKUP_FILE"
|
||||
```
|
||||
|
||||
## 监控与维护
|
||||
|
||||
### 1. 性能监控查询
|
||||
|
||||
```sql
|
||||
-- 监控慢查询
|
||||
SELECT
|
||||
start_time,
|
||||
query_time,
|
||||
lock_time,
|
||||
rows_sent,
|
||||
rows_examined,
|
||||
sql_text
|
||||
FROM mysql.slow_log
|
||||
WHERE start_time > DATE_SUB(NOW(), INTERVAL 1 DAY)
|
||||
ORDER BY query_time DESC
|
||||
LIMIT 10;
|
||||
|
||||
-- 监控表大小
|
||||
SELECT
|
||||
table_name,
|
||||
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Size (MB)',
|
||||
table_rows
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'shop_v2'
|
||||
ORDER BY (data_length + index_length) DESC;
|
||||
|
||||
-- 监控索引使用情况
|
||||
SELECT
|
||||
object_schema,
|
||||
object_name,
|
||||
index_name,
|
||||
count_read,
|
||||
count_write,
|
||||
sum_timer_read/1000000000 AS read_time_sec,
|
||||
sum_timer_write/1000000000 AS write_time_sec
|
||||
FROM performance_schema.table_io_waits_summary_by_index_usage
|
||||
WHERE object_schema = 'shop_v2'
|
||||
ORDER BY sum_timer_read DESC;
|
||||
```
|
||||
|
||||
### 2. 定期维护任务
|
||||
|
||||
```sql
|
||||
-- 优化表结构
|
||||
CREATE EVENT IF NOT EXISTS optimize_tables
|
||||
ON SCHEDULE EVERY 1 WEEK
|
||||
STARTS CURRENT_TIMESTAMP
|
||||
DO
|
||||
BEGIN
|
||||
SET @tables = (
|
||||
SELECT GROUP_CONCAT(table_name SEPARATOR ',')
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'shop_v2'
|
||||
AND table_rows > 10000
|
||||
);
|
||||
|
||||
SET @sql = CONCAT('OPTIMIZE TABLE ', @tables);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
END;
|
||||
|
||||
-- 清理过期数据
|
||||
CREATE EVENT IF NOT EXISTS cleanup_old_data
|
||||
ON SCHEDULE EVERY 1 DAY
|
||||
STARTS CURRENT_TIMESTAMP
|
||||
DO
|
||||
BEGIN
|
||||
-- 清理30天前的日志数据
|
||||
DELETE FROM lucky_cron_log WHERE create_time < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
|
||||
|
||||
-- 清理已删除的临时数据
|
||||
DELETE FROM lucky_form_data WHERE create_time < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 90 DAY));
|
||||
END;
|
||||
```
|
||||
|
||||
## 安全加固建议
|
||||
|
||||
### 1. 数据库安全配置
|
||||
|
||||
```sql
|
||||
-- 禁用不必要的功能
|
||||
SET GLOBAL local_infile = OFF;
|
||||
SET GLOBAL symbolic_links = OFF;
|
||||
|
||||
-- 设置密码策略
|
||||
SET GLOBAL validate_password.policy = 'MEDIUM';
|
||||
SET GLOBAL validate_password.length = 12;
|
||||
|
||||
-- 启用审计日志
|
||||
SET GLOBAL audit_log_format = 'JSON';
|
||||
SET GLOBAL audit_log_policy = 'ALL';
|
||||
```
|
||||
|
||||
### 2. 用户权限管理
|
||||
|
||||
```sql
|
||||
-- 创建不同权限级别的用户
|
||||
-- 只读用户
|
||||
CREATE USER 'shop_readonly'@'%' IDENTIFIED BY 'readonly_password';
|
||||
GRANT SELECT ON shop_v2.* TO 'shop_readonly'@'%';
|
||||
|
||||
-- 应用用户
|
||||
CREATE USER 'shop_app'@'%' IDENTIFIED BY 'app_password';
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE ON shop_v2.* TO 'shop_app'@'%';
|
||||
|
||||
-- 管理用户
|
||||
CREATE USER 'shop_admin'@'localhost' IDENTIFIED BY 'admin_password';
|
||||
GRANT ALL PRIVILEGES ON shop_v2.* TO 'shop_admin'@'localhost';
|
||||
```
|
||||
|
||||
## 常见问题与解决方案
|
||||
|
||||
### Q1: 升级后表数量不对
|
||||
**A**: 检查是否所有表都成功创建
|
||||
```sql
|
||||
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'shop_v2';
|
||||
-- 应该返回 294
|
||||
```
|
||||
|
||||
### Q2: 新增功能无法使用
|
||||
**A**: 确认相关表已正确创建并检查权限
|
||||
```sql
|
||||
SHOW TABLES LIKE 'lucky_%';
|
||||
```
|
||||
|
||||
### Q3: 性能下降
|
||||
**A**: 检查索引和查询优化
|
||||
```sql
|
||||
EXPLAIN SELECT * FROM lucky_blindbox_order WHERE site_id = 1;
|
||||
```
|
||||
|
||||
## 版本兼容性
|
||||
|
||||
| 版本 | MySQL最低版本 | PHP最低版本 | 主要特性 |
|
||||
|------|--------------|-------------|----------|
|
||||
| v1.0 | 5.7+ | 7.2+ | 基础电商功能(280表) |
|
||||
| v2.0 | 8.0+ | 7.4+ | 扩展功能(294表)+新增模块 |
|
||||
|
||||
## 技术支持
|
||||
|
||||
如遇到问题,请提供以下信息:
|
||||
- MySQL版本和配置
|
||||
- 系统错误日志
|
||||
- 相关表的 `SHOW CREATE TABLE` 输出
|
||||
- 问题重现步骤
|
||||
- 系统负载情况
|
||||
|
||||
---
|
||||
|
||||
**注意**:
|
||||
1. v2.0版本包含更多功能,建议在生产环境升级前充分测试
|
||||
2. 新增的会员卡和案例模块可能需要额外的业务逻辑适配
|
||||
3. 建议定期监控数据库性能,及时进行优化调整
|
||||
7266
docs/db/init_v1.0.sql
Normal file
7266
docs/db/init_v1.0.sql
Normal file
File diff suppressed because it is too large
Load Diff
7469
docs/db/init_v2.0.sql
Normal file
7469
docs/db/init_v2.0.sql
Normal file
File diff suppressed because it is too large
Load Diff
11732
docs/db/init_v2.0_with_data.sql
Normal file
11732
docs/db/init_v2.0_with_data.sql
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user