首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 日誌傳送功能深度解析:角色變更六步驟與角色互換完整實戰指南

     編輯:關於SqlServer

當線上資料庫停擺(計畫維護或預期外狀況),備援伺服器資料庫可供存取將大幅降低風險。設計良好的日誌傳送系統(將交易日誌從主要伺服器傳送至備援伺服器)即能提供此信心。SQL Server 2000 企業版與開發版內建的 Enterprise Manager 完整支援日誌傳送功能。

角色變更:次要伺服器接管主要伺服器職責

將日誌從主要傳送至次要伺服器後,必要時可讓次要伺服器取代主要伺服器。主要伺服器發生問題或計畫停擺(硬體升級、安裝修正)時,線上資料庫必須停止服務一段期間。此時可變更次要伺服器資料庫角色,使其成為新線上資料庫。SQL Server 2000 線上叢書 (BOL) 稱此操作為「日誌傳送角色變更」。

日誌傳送過程中,次要伺服器須設為不可復原狀態,才能接收主要伺服器的交易日誌備份(一旦復原資料庫,無法再還原交易記錄)。角色變更時,需復原次要伺服器資料庫並標記為新主要資料庫;舊主要資料庫可設為新次要資料庫。若舊主要未損壞,可在新舊主要之間重建日誌傳送,稱為「角色互換」。

六大核心步驟

  1. 轉移與匯出登入帳號:建立 DTS 封裝傳移主要伺服器登入帳號至次要伺服器,執行 SID 解析。使用 bcp 匯出 syslogins 資料表資料至檔案,定期執行(如每晚)保持次要伺服器擁有最新帳號匯出檔
  2. 降級主要伺服器:執行 sp_change_primary_role 移除原日誌傳送功能,備份最新交易日誌、結束使用者連線、設定資料庫為待機狀態與多使用者存取層級
    USE master
    GO
    EXEC msdb.dbo.sp_change_primary_role
    @db_name = 'Pubscopy',
    @backup_log = 1,
    @terminate = 1,
    @final_state = 3,
    @Access_level = 1
  3. 升級次要伺服器:確認無使用者存取後,執行 sp_change_secondary_role 將次要資料庫升級為復原狀態,接管線上服務
    USE master
    GO
    EXEC msdb.dbo.sp_change_secondary_role
    @db_name = 'Pubscopy',
    @do_load = 1,
    @force_load = 1,
    @final_state = 1,
    @Access_level = 1,
    @terminate = 1,
    @keep_replication = 0,
    @stopat = null
    參數說明:@do_load=1 備份並載入所有日誌;@force_load=1 強制載入;@final_state=1 設為復原模式;@terminate=1 中斷所有連線;@keep_replication=0 維持複寫設定
  4. 通知監控伺服器角色已變更:在監控伺服器執行 sp_change_monitor_role,更新 log_shipping_primaries 與 log_shipping_secondaries 資料表參照位置
    USE master
    GO
    EXEC msdb.dbo.sp_change_monitor_role
    @primary_server = 'oahu\sql2k_1',
    @secondary_server = 'oahu\sql2k_2',
    @database = 'Pubscopy',
    @new_source = 'oahu\sql2k_2'
  5. 在次要伺服器解析登入帳號:使用步驟 1 匯出的帳號檔案,執行 sp_resolve_logins 解析 SID 差異。**注意:必須在 master 資料庫執行**,非目的資料庫
    USE master
    GO
    EXEC sp_resolve_logins
    @dest_db = 'Pubscopy',
    @dest_path = 'd:\',
    @filename = 'syslogins.dat'
  6. 連結資料庫存取與權限:BOL 忽略此關鍵步驟。需對每個登入帳號執行 sp_change_users_login 將解析後帳號連結至對應資料庫使用者與權限
    USE pubscopy
    GO
    EXEC sp_change_users_login 'Update_One', 'UserName', 'LoginName'

角色互換:重建雙向日誌傳送關係

完成角色變更後,尚未建立新日誌傳送關係。需在新主要與新次要伺服器間重新設定日誌傳送。實測發現新主要伺服器的「交易日誌備份工作」常失敗,日誌無法傳送至新次要伺服器,需採用替代方案重新配置。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved