2013年11月12日 星期二

Log Shipping

Log Shipping 是早從 SQL 7 就有的功能,它與 SQL 2005 中的 Mirroring 是相似的作用。 二者都有一台「主要伺服器」當作營運使用,另外還有一台「次要伺服器」當作 StandBy ,並隨時與「主要伺服器」保持資料同步。

記錄傳送(Log Shipping )

記錄傳送概觀

在記錄傳送的架構中,成員有以下幾種:

  • 主要伺服器 (primary database) :做為實際執行 SQL Server 的主要執行個體。
  • 次要伺服器 (secondary server):用來保留主要資料庫的暖待命副本(warm standby copy)的執行個體。
  • 監視伺服器 (monitor server) :用來以追蹤記錄傳送的所有詳細資料

實作SQL Server 記錄傳送最少需要兩個 SQL Server 執行個體,一個是「主要伺服器」,另一個則為「次要伺服器」,而「監視伺服器」則是可選擇性的。

SQL Server 記錄傳送作業中, 送出紀錄的稱為主要伺服器(primary database), 目的端我們稱為次要伺服器(secondary database),一個主要伺服器可以設定傳送給多個次要伺服器。

主要伺服器會進行交易紀錄備份,然後傳送到次要伺服器; 次要伺服器將交易紀錄進行還原,次要伺服器的還原模式可設定的選項有 NORECOVERY 或是 STANDBY 。 而在紀錄傳送作業中,您可以設定監控伺服器來監視記錄傳送活動並保存記錄傳送記錄,下圖就是紀錄傳送的作業示意圖。

記錄傳送由三項作業組成:

  1. 主要伺服器執行個體上備份交易記錄檔
  2. 將交易記錄檔複製到次要伺服器執行個體上。
  3. 次要伺服器執行個體上還原記錄備份

以上的紀錄傳送作業,都是透過 SQL Server Agent 來執行作業

記錄傳送組態沒有自動從主要伺服器容錯移轉到次要伺服器的功能,若主要資料庫無法使用,您可以手動將任何次要資料庫連上線。

您可以將次要資料庫做為報表用途。

權限設定

備份作業 (backup job)

主要伺服器執行個體的 SQL Server 服務帳戶與執行備份作業的帳戶(預設是主要伺服器執行個體的 SQL Server Agent 服務帳戶),必須擁有備份目錄的讀取/寫入權限。

複製作業 (copy job)

執行複製作業的帳戶(預設是次要伺服器執行個體的 SQL Server Agent 服務帳戶)必須擁有備份目錄的讀取權限和複製目錄(這個目錄通常在次要伺服器)的寫入權限。

還原作業 (restore job)

次要伺服器執行個體的 SQL Server 服務帳戶與執行還原作業的帳戶(預設是次要伺服器執行個體的 SQL Server Agent 服務帳戶),必須擁有複製目錄的讀取/寫入權限。

警示作業 (alert job)

SQL Server Agent 作業,若備份或還原作業未在指定臨界值內順利完成,此作業就會為主要及次要資料庫發出警示。 若資料庫啟用了記錄傳送,監視伺服器執行個體上就會產生「記錄傳送警示」目錄(Log Shipping Alert)。

互通性

實作記錄傳送

下面範例,使用二個執行個體。 假設第一台執行個體中有個 TestDB1 ,第一台執行個體中則完全沒有資料庫。 我們要將這個TestDB1資料庫,利用 Log Shipping 方式,同步到第二台執行個體。

準備工作

1. 設定主資料庫的復原模式

在設定交易記錄傳送前,必須先確認主資料庫的復原模式,必須選擇「完整」或「大量記錄」,不支援「簡單」。

2. 建立備份資料夾和複製資料夾

在作業前,我們可以先建立二個資料夾,存放資料夾和複製資料夾。(本範例使用 LogShipping_Backup 和 LogShipping_Copy)

備份資料夾:
SQL Server Agent 會將主資料庫的備份存放於此。 所以必須開放主要伺服器 SQL Server Agent 服務帳號的讀取/寫入權限; 也必須開放次要伺服器 SQL Server Agent 服務帳號的讀取權限。

複製資料夾:
SQL Server Agent 會將主資料庫的備份複製一份到次要伺服器。 所以必須開放次要伺服器 SQL Server Agent 服務帳號的讀取/寫入權限。

3. 啟用 SQL Server Agent

由於 Log Shipping 都是由 SQL Server Agent 負責執行,所以請先確認二端的 SQL Server Agent 是否都已啟動。

設定主要伺服器

4. 啟用交易記錄傳送

開啟主資料庫資料庫屬性頁面,然後勾選啟用交易記錄傳送。

5. 備份設定

1. 設定備份資料夾:
將步驟2建立的備份資料夾填入。

2. 設定壓縮:
可設定啟用或不啟用備份壓縮。

設定次要伺服器

6. 加入次要資料庫

7. 連線次要伺服器

8. 設定還原選項

因為次要伺服器中,原先並沒有資料庫,所以這裡要設定一個資料庫存放的路徑。

9. 指定複製檔案用的目的資料夾

10. 指定還原模式

指定次要伺服器的還原模式,支援:不復原模式(NoRecover)或待命模式(Standby)。

設定監視伺服器

監視伺服器為選用設備,若有使用,只要依操作設定即可。

完成工作

回顧一下,剛剛設定做了哪些設定。沒錯,就上面文章介紹的:備份、複製、還原。

按下[確定],若設定無誤,可以下列視窗

此時 Log Shipping 已設定完成,可正常執行,你可以透過 [Instance] -> [報表] -> [標準報表] -> [交易記錄傳案狀態] 查看目前的執行狀況,

主要伺服器

次要伺服器

最後你可以在次要伺服器上,看到資料庫已經新增完成。 同時因為我們選用 NORECOVERY 模式,所以狀態會一直處於還原中,所以無法存取。 若選用 STANDBY 模式,狀態就會是待命/唯讀。

變更主要與次要記錄傳送伺服器間的角色

1 則留言:

  1. 首先感謝大大的筆記, 真的讓我受益良多。

    在這篇幅內容 :【 假設第一台執行個體中有個 TestDB1 ,第一台執行個體中則完全沒有資料庫。】

    應該是筆誤了...?

    回覆刪除