feat: 启用数据库初始化与分区维护功能,更新配置以支持动态控制

This commit is contained in:
2026-03-04 09:58:53 +08:00
parent 5562288315
commit b4967f4c35
3 changed files with 20 additions and 9 deletions

View File

@@ -70,3 +70,6 @@ PROCESSOR_BATCH_TIMEOUT=5000
# 日志配置 # 日志配置
LOG_LEVEL=info LOG_LEVEL=info
LOG_FORMAT=json LOG_FORMAT=json
DB_INIT_AND_PARTITION_ENABLED=false

View File

@@ -53,6 +53,9 @@ export default {
retryAttempts: 3, // 重试次数 retryAttempts: 3, // 重试次数
retryDelay: 1000, // 重试延迟 retryDelay: 1000, // 重试延迟
// 是否启用数据库初始化与分区维护(若为 false跳过建表、分区预创建、定时分区检查
initAndPartitionEnabled: (env.DB_INIT_AND_PARTITION_ENABLED ?? 'true') === 'true',
// 分区维护方案1启动时预创建 + 周期维护 // 分区维护方案1启动时预创建 + 周期维护
partitionMaintenance: { partitionMaintenance: {
enabled: true, enabled: true,

View File

@@ -37,15 +37,20 @@ class DatabaseManager {
client.release(); client.release();
console.log('数据库连接池创建成功'); console.log('数据库连接池创建成功');
// 初始化表结构 // 根据配置决定是否执行初始化与分区维护
await this.initTables(); if (this.config.initAndPartitionEnabled !== false) {
// 初始化表结构
await this.initTables();
// 分区维护方案1启动时预创建 + 定时维护 // 分区维护方案1启动时预创建 + 定时维护
await this.ensurePartitionsForRange({ await this.ensurePartitionsForRange({
startDayOffset: -1, startDayOffset: -1,
endDayOffset: this.getPartitionFutureDays(), endDayOffset: this.getPartitionFutureDays(),
}); });
this.startPartitionMaintenance(); this.startPartitionMaintenance();
} else {
console.log('[db] 已禁用数据库初始化与分区维护DB_INIT_AND_PARTITION_ENABLED=false跳过建表、分区预创建、定时维护');
}
} catch (error) { } catch (error) {
console.error('数据库连接失败:', error); console.error('数据库连接失败:', error);
throw error; throw error;