前導文章:
如何建立 Log Shipping
http://caryhsu.blogspot.com/2012/02/log-shipping.html
SQL Server - 如何建立 Database Mirroring
http://caryhsu.blogspot.com/2011/12/sql-server-database-mirroring.html
相關的架設方式,其實可以參考MSDN上的說明,但可惜的是官網上說的太過於簡單,所以我才整理這篇文章來加以說明,希望大家可以更清楚的了解到如何整合Database Mirroring與Log Shipping.
架構說明:
1、Database Mirroring:
1-1 建議使用高可用性的架構(High-Safety Mode)。
1-2 建議有一台監控伺服器(Witness Server)
2、Lop Shipping:
2-1 不一定要有監控伺服器(Witness Server),可以透過手動進行Log Shipping的Failover。
2-2 備份的檔案必須放在第三台上面,也就是檔案放在一台獨立的主機上。
2-3 還原交易記錄請選擇不復原模式。
設定方式:
1、請先參考之前的文章進行架設,但整合上有些注意事項,詳細的部份,請一定要依照架構說明的部份進行。
SQL Server - 如何建立 Database Mirroring
http://caryhsu.blogspot.com/2011/12/sql-server-database-mirroring.html
2、設定Log Shipping。
2-1 指定備份的位址,此時我將備份的位置指定到備份主機上的目錄,再次提醒,此位置必須讓Database Mirroring與Log Shipping的主機都要能有讀寫的權限。
PS:由於資料的限制,所以我先將檔案備份的位址放在AD的主機上,其實應該要在一台獨立的主機上,而不是放在AD上,以免影響AD主機的運作。
2-2 選擇加入Log Shipping的Secondary主機後,由於我在Secondary沒有這個資料庫的存在,所以我選擇第一項進行。
2-3 切換到 [複製檔案] 的頁次,輸入Log Shipping中Secondary上的分享路徑上。
2-4 切換到 [還原交易記錄] 的頁次後,此部份請選擇 [不復原模式] ,藉以避免在復原的情況下,其他使用者的存取,造成復原的失敗。
2-5 設定完成後,請將此設定輸出成指令檔,後續上會使用到。
2-6 建立完成後,請先確認各個Job執行上應該都能正常的執行。
2-6-1 Primary上的 Job清單
LSBackup_Northwind
2-6-2 Secondary上的Job清單
a. LSAlert_CARY-TEST
b. LSCopy_WIN-2008R2-1_Northwind
c. LSRestore_WIN2008R2-1_Northwind
3、整合Database Mirroring與Log Shipping
3-1 請在Database Mirroring上進行手動的Failover,將節點切換到Mirror的機器上。
3-2 請在原本是Mirror的機器上(目前為Principal)執行之前儲存的Script。
PS:
a. Script的部份分成兩大區塊,上半部是在(Primary)的主機上執行,而下半部是在Secondary的主機上執行,但請注意,我們在目前Principal(之前的Mirror)的機器上只需執行上半部即可。
b. 基本上你另存的語法不需作任何的修改,只需執行在Principal (之前的Mirror)的主機上即可。
c. 由於Log Shipping的GUI介面只能指定到一個Primary主機,所以一定要透過語法的方式進行。
語法內容 -- 只截取上半部
3-3 此時請再執行各個Log Shipping上的Job,藉以確認是否正常運作,如此即完成此兩個功能的整合。
參考網址:
Database Mirroring and Log Shipping (SQL Server)
http://msdn.microsoft.com/en-us/library/ms187016.aspx
關鍵字:Database Mirroring、Log Shipping、Database Mirroring and Log Shipping Working Together、Setup database mirroring and log shipping together
http://caryhsu.blogspot.com/2012/02/log-shipping.html
SQL Server - 如何建立 Database Mirroring
http://caryhsu.blogspot.com/2011/12/sql-server-database-mirroring.html
相關的架設方式,其實可以參考MSDN上的說明,但可惜的是官網上說的太過於簡單,所以我才整理這篇文章來加以說明,希望大家可以更清楚的了解到如何整合Database Mirroring與Log Shipping.
架構說明:
1、Database Mirroring:
1-1 建議使用高可用性的架構(High-Safety Mode)。
1-2 建議有一台監控伺服器(Witness Server)
2、Lop Shipping:
2-1 不一定要有監控伺服器(Witness Server),可以透過手動進行Log Shipping的Failover。
2-2 備份的檔案必須放在第三台上面,也就是檔案放在一台獨立的主機上。
2-3 還原交易記錄請選擇不復原模式。
設定方式:
1、請先參考之前的文章進行架設,但整合上有些注意事項,詳細的部份,請一定要依照架構說明的部份進行。
SQL Server - 如何建立 Database Mirroring
http://caryhsu.blogspot.com/2011/12/sql-server-database-mirroring.html
2、設定Log Shipping。
2-1 指定備份的位址,此時我將備份的位置指定到備份主機上的目錄,再次提醒,此位置必須讓Database Mirroring與Log Shipping的主機都要能有讀寫的權限。
PS:由於資料的限制,所以我先將檔案備份的位址放在AD的主機上,其實應該要在一台獨立的主機上,而不是放在AD上,以免影響AD主機的運作。
2-2 選擇加入Log Shipping的Secondary主機後,由於我在Secondary沒有這個資料庫的存在,所以我選擇第一項進行。
2-3 切換到 [複製檔案] 的頁次,輸入Log Shipping中Secondary上的分享路徑上。
2-4 切換到 [還原交易記錄] 的頁次後,此部份請選擇 [不復原模式] ,藉以避免在復原的情況下,其他使用者的存取,造成復原的失敗。
2-5 設定完成後,請將此設定輸出成指令檔,後續上會使用到。
2-6 建立完成後,請先確認各個Job執行上應該都能正常的執行。
2-6-1 Primary上的 Job清單
LSBackup_Northwind
2-6-2 Secondary上的Job清單
a. LSAlert_CARY-TEST
b. LSCopy_WIN-2008R2-1_Northwind
c. LSRestore_WIN2008R2-1_Northwind
3、整合Database Mirroring與Log Shipping
3-1 請在Database Mirroring上進行手動的Failover,將節點切換到Mirror的機器上。
3-2 請在原本是Mirror的機器上(目前為Principal)執行之前儲存的Script。
PS:
a. Script的部份分成兩大區塊,上半部是在(Primary)的主機上執行,而下半部是在Secondary的主機上執行,但請注意,我們在目前Principal(之前的Mirror)的機器上只需執行上半部即可。
b. 基本上你另存的語法不需作任何的修改,只需執行在Principal (之前的Mirror)的主機上即可。
c. 由於Log Shipping的GUI介面只能指定到一個Primary主機,所以一定要透過語法的方式進行。
語法內容 -- 只截取上半部
-- 在主要伺服器端執行下列陳述式,以設定記錄傳送
-- 針對資料庫 [WIN-2008R2-1].[Northwind]
-- 指令碼需要在主要伺服器端的 [msdb] 資料庫內容中執行。
-------------------------------------------------------------------------------------
-- 加入記錄傳送組態
-- ****** 開始: 要在主要伺服器端執行的指令碼: [WIN-2008R2-1] ******
DECLARE @LS_BackupJobId AS uniqueidentifier
DECLARE @LS_PrimaryId AS uniqueidentifier
DECLARE @SP_Add_RetCode As int
EXEC @SP_Add_RetCode = master.dbo.sp_add_log_shipping_primary_database
@database = N'Northwind'
,@backup_directory = N'\\win-cary-ad\log_backup'
,@backup_share = N'\\win-cary-ad\log_backup'
,@backup_job_name = N'LSBackup_Northwind'
,@backup_retention_period = 4320
,@backup_compression = 2
,@backup_threshold = 60
,@threshold_alert_enabled = 1
,@history_retention_period = 5760
,@backup_job_id = @LS_BackupJobId OUTPUT
,@primary_id = @LS_PrimaryId OUTPUT
,@overwrite = 1
IF (@@ERROR = 0 AND @SP_Add_RetCode = 0)
BEGIN
DECLARE @LS_BackUpScheduleUID As uniqueidentifier
DECLARE @LS_BackUpScheduleID AS int
EXEC msdb.dbo.sp_add_schedule
@schedule_name =N'LSBackupSchedule_WIN-2008R2-11'
,@enabled = 1
,@freq_type = 4
,@freq_interval = 1
,@freq_subday_type = 4
,@freq_subday_interval = 15
,@freq_recurrence_factor = 0
,@active_start_date = 20130312
,@active_end_date = 99991231
,@active_start_time = 0
,@active_end_time = 235900
,@schedule_uid = @LS_BackUpScheduleUID OUTPUT
,@schedule_id = @LS_BackUpScheduleID OUTPUT
EXEC msdb.dbo.sp_attach_schedule
@job_id = @LS_BackupJobId
,@schedule_id = @LS_BackUpScheduleID
EXEC msdb.dbo.sp_update_job
@job_id = @LS_BackupJobId
,@enabled = 1
END
EXEC master.dbo.sp_add_log_shipping_alert_job
EXEC master.dbo.sp_add_log_shipping_primary_secondary
@primary_database = N'Northwind'
,@secondary_server = N'cary-test'
,@secondary_database = N'Northwind'
,@overwrite = 1
-- ****** 結束: 要在主要伺服器端執行的指令碼: [WIN-2008R2-1] ******
3-3 此時請再執行各個Log Shipping上的Job,藉以確認是否正常運作,如此即完成此兩個功能的整合。
參考網址:
Database Mirroring and Log Shipping (SQL Server)
http://msdn.microsoft.com/en-us/library/ms187016.aspx
關鍵字:Database Mirroring、Log Shipping、Database Mirroring and Log Shipping Working Together、Setup database mirroring and log shipping together
你好 , 請問我在做Database Mirroring與Log Shipping的時候如果交易紀錄太大了需要刪除交易紀錄 , 在這樣的架構下Mirror和LogShipping會不會出現問題
回覆刪除因為不管事Mirror或是Log Shipping都是使用交易紀錄再還原 , 若是刪除資料是否會造成中間的資料無法還原或是流失
是的,刪除的話的確會造成Mirror與Log Shipping失敗,如果你不清楚交易紀錄檔為何這麼大的話,你可以透過下列的語法查詢確認,這樣會比較好。
刪除select log_reuse_wait_desc from sys.databases
sys.databases (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/ms178534.aspx
如果要進行刪除Log的話,是否要重新同步Mirror與Log Shipping,因為若要進行的話線上系統都需要停機,有更有效率並不需要停機就可以清除交易紀錄的方法嗎。
回覆刪除謝謝