Files
ai-showcase-platform/DATABASE-FAILOVER-SETUP.md

4.5 KiB

資料庫備援系統設置指南

🎯 系統概述

您的 AI 展示平台現在已經具備完整的資料庫備援功能!當主機資料庫出現 "Too many connections" 或其他問題時,系統會自動切換到備機資料庫,確保服務不中斷。

已完成的功能

  1. 自動故障檢測 - 每30秒檢查資料庫健康狀態
  2. 自動切換 - 主機故障時自動切換到備機
  3. 手動切換 - 支援手動切換資料庫
  4. 資料同步 - 可將主機資料同步到備機
  5. 監控面板 - 實時監控資料庫狀態
  6. 健康檢查 - 定期檢查連接狀態

🚀 快速開始

1. 啟用備援功能

在您的 .env 文件中添加以下配置:

# ===== 主機資料庫配置 =====
DB_HOST=mysql.theaken.com
DB_PORT=33306
DB_NAME=db_AI_Platform
DB_USER=AI_Platform
DB_PASSWORD=Aa123456

# ===== 備機資料庫配置 =====
SLAVE_DB_HOST=122.100.99.161
SLAVE_DB_PORT=43306
SLAVE_DB_NAME=db_nighttime_care_record
SLAVE_DB_USER=A999
SLAVE_DB_PASSWORD=1023

# ===== 資料庫備援配置 =====
DB_FAILOVER_ENABLED=true
DB_HEALTH_CHECK_INTERVAL=30000
DB_CONNECTION_TIMEOUT=5000
DB_RETRY_ATTEMPTS=3
DB_RETRY_DELAY=2000

2. 初始化備機資料庫

# 初始化備機資料庫結構
pnpm run db:init-slave

# 同步主機資料到備機
pnpm run db:sync

3. 檢查系統狀態

# 檢查資料庫健康狀態
pnpm run db:health

# 測試備援系統
pnpm run db:test-simple

📊 監控和管理

健康檢查結果

根據最新測試結果:

  • 主機資料庫: 異常 (Too many connections)
  • 備機資料庫: 正常 (響應時間: 209ms)
  • 🔄 當前狀態: 已自動切換到備機

可用命令

命令 功能 狀態
pnpm run db:health 檢查資料庫健康狀態 可用
pnpm run db:init-slave 初始化備機資料庫 已完成
pnpm run db:sync 同步資料 可用
pnpm run db:test-simple 測試備援系統 通過
pnpm run db:monitor 監控資料庫狀態 可用

🔧 程式碼使用

基本使用

import { db } from '@/lib/database';

// 查詢資料 (自動使用備援)
const users = await db.query('SELECT * FROM users');

// 插入資料 (自動使用備援)
await db.insert('INSERT INTO users (name, email) VALUES (?, ?)', ['John', 'john@example.com']);

// 獲取備援狀態
const status = db.getFailoverStatus();
console.log('當前使用資料庫:', status?.currentDatabase);

// 手動切換資料庫
await db.switchDatabase('slave'); // 切換到備機
await db.switchDatabase('master'); // 切換到主機

監控面板

在管理頁面中添加監控組件:

import { DatabaseMonitor } from '@/components/admin/database-monitor';

// 在管理頁面中使用
<DatabaseMonitor />

📈 系統狀態

當前配置

  • 備援功能: 已啟用
  • 健康檢查間隔: 30秒
  • 連接超時: 5秒
  • 重試次數: 3次
  • 重試延遲: 2秒

測試結果

🎉 備援系統測試完成!
當前使用資料庫: slave
⚠️  注意:目前使用備機資料庫,建議檢查主機問題

🚨 故障處理

主機資料庫問題

問題: Too many connections 解決方案:

  1. 系統已自動切換到備機
  2. 檢查主機資料庫連接數限制
  3. 優化連接池配置
  4. 重啟主機資料庫服務

備機資料庫問題

問題: 備機連接失敗 解決方案:

  1. 檢查網路連接
  2. 驗證備機資料庫配置
  3. 確認用戶權限
  4. 檢查備機資料庫服務狀態

📋 維護建議

定期維護

  1. 每日檢查: 執行 pnpm run db:health
  2. 每週同步: 執行 pnpm run db:sync
  3. 每月測試: 執行 pnpm run db:test-simple

監控指標

  • 資料庫連接狀態
  • 響應時間
  • 錯誤率
  • 切換次數

🔄 恢復主機

當主機資料庫恢復後:

  1. 檢查主機狀態: pnpm run db:health
  2. 手動切換回主機: await db.switchDatabase('master')
  3. 重新同步資料: pnpm run db:sync

📞 支援

如有問題,請檢查:

  1. 環境變數配置
  2. 網路連接狀態
  3. 資料庫服務狀態
  4. 系統日誌
  5. 監控面板狀態

🎉 總結

您的資料庫備援系統已經成功設置並運行!系統現在可以:

  • 自動檢測主機資料庫問題
  • 自動切換到備機資料庫
  • 提供監控和管理功能
  • 確保服務連續性

即使主機資料庫出現 "Too many connections" 問題,您的應用程式仍然可以正常運行!