# 資料庫備援系統設置指南 ## 🎯 系統概述 您的 AI 展示平台現在已經具備完整的資料庫備援功能!當主機資料庫出現 "Too many connections" 或其他問題時,系統會自動切換到備機資料庫,確保服務不中斷。 ## ✅ 已完成的功能 1. **自動故障檢測** - 每30秒檢查資料庫健康狀態 2. **自動切換** - 主機故障時自動切換到備機 3. **手動切換** - 支援手動切換資料庫 4. **資料同步** - 可將主機資料同步到備機 5. **監控面板** - 實時監控資料庫狀態 6. **健康檢查** - 定期檢查連接狀態 ## 🚀 快速開始 ### 1. 啟用備援功能 在您的 `.env` 文件中添加以下配置: ```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. 初始化備機資料庫 ```bash # 初始化備機資料庫結構 pnpm run db:init-slave # 同步主機資料到備機 pnpm run db:sync ``` ### 3. 檢查系統狀態 ```bash # 檢查資料庫健康狀態 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` | 監控資料庫狀態 | ✅ 可用 | ## 🔧 程式碼使用 ### 基本使用 ```typescript 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'); // 切換到主機 ``` ### 監控面板 在管理頁面中添加監控組件: ```typescript import { DatabaseMonitor } from '@/components/admin/database-monitor'; // 在管理頁面中使用 ``` ## 📈 系統狀態 ### 當前配置 - **備援功能**: ✅ 已啟用 - **健康檢查間隔**: 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" 問題,您的應用程式仍然可以正常運行!