SQL Server實現Standby --日誌傳送(Log Shipping)
sql server下實現熱備用可用性中日誌傳送以及同步複製的方式:
1. 使用企業版的“日誌傳送嚮導”(被整合在“資料庫維護向導”之中)
2. 透過編寫指令碼,並將其作為普通的SQL Server代理作業來進行排程而實現
3. 使用同步複製
-------------------------------------------
叢集是一種實現高可用性的有效解決方案,有時它會適得其反。而且,它還非常昂貴。因此,資料庫管理員可使用日誌轉移代替叢集來提供較高的可用性。
日誌轉移是這樣一種處理過程,它能將某一資料庫中的事務日誌檔案依次轉存到備份的資料庫中,進而為這一資料庫建立一個“近乎”熱備份。SQL Server 2000的資料庫引擎中設定了日誌轉移功能,並在其中進行處理。所以它會自動完成復原到備份伺服器的程式,而不需要資料庫管理員手動操作。只有你的產品伺服器操作失敗,你才需手動完成到備份伺服器的復原程式。(註釋:儘管SQL Server 7.0和2005中均有日誌轉移功能,但本文主要針對SQL Server 2000。)
◆為什麼要使用日誌轉移?
日誌轉移是一種解決高可用性的措施,並且十分有效。同樣作為高可用性的措施方案,日誌轉移相對叢集來說,最大的好處是它要便宜許多。這是因為,使用叢集功能有硬體要求,而日誌轉移則不需要。
日誌轉移在資料庫與資料庫而非伺服器與伺服器之間進行;因此才有可能將備份資料庫儲存在你已用作其他用途的伺服器上。但如果轉移失敗則有可能會出現問題,這時你可換用備份資料庫,這種選擇是可用的。
日誌轉移相對比較容易安裝。SQL Server提供了非常完善的嚮導幫助你安裝這個程式。
日誌轉移允許你儲存分佈在不同地理位置中的冗餘資料,SQL Server的叢集功能則很難做到這一點。這一特點十分出眾,因為,當你的資料中心遭到災難時,你仍能在備份伺服器中將其恢復過來。而在相同的資料中心,如果你使用的是叢集功能,你就會陷入麻煩。
日誌轉移的另一優點是你能將備份資料庫作為報告資料庫使用,這對許多公司來說是很不錯的選擇。但如果你決定了用這個備份資料庫作報告使用,就必須注意它的侷限性。使用原始資料庫中的日誌時,SQL Server 要求指定唯一的通道,所以,當日志檔案正在被應用時,報告則不能同時進行。
◆使用日誌轉移要考慮的相關因素
在將日誌轉移作為高可用性的方案來使用時,我們必須考慮以下幾點因素。由於從原始資料庫到備份資料庫有一個潛伏期,對你的公司而言,它並非一定是可行的實現高可用性的一種解決方案。潛伏期由資料庫管理員設定,時間也因需要而縮短, 但永遠不能避免。
日誌轉移中沒有設定恢復功能,這就意味著在將日誌轉移到備份伺服器上時,這些日誌都暫時不可用。因此,資料庫管理員必須在將備份資料庫放到網上前完成一系列的操作,這些步驟包括:
將已儲存在備份資料伺服器上原始資料庫裡的備份標籤儲存起來。一旦所有的標籤被儲存後,資料庫就必須得到恢復,然後放到網上。
一旦所有的資料庫都已放在網上,所有需要訪問資料庫的應用程式就需要改變自身的連結。如果你不能將應用程式儘快指向剛剛恢復的資料庫,你就前功盡棄了。
一個SQL Server的例項能用於監控日誌轉移。這個例項可以在原始資料庫、備份資料庫或單獨的資料庫中。任何一種版本的SQL Server都能用於SQL Server監控。
註釋:資料庫登入必須在原始資料庫與備份資料庫之間同時進行
-------------------------------------------
操作步驟:
Log Shipping
Operations Guide
Version: 1.0
Index
Create Log Shipping.. 3
Monitor.. 9
Delete Log shipping.. 10
Role Alter.. 11
Role Change.. 13
Create Log Shipping
1. SQL Server 節點1 Tonym 和 Tonym02必須位於同一域中,並且SQL1 和SQL2都要使用域賬戶啟動SQL Server服務和SQLServerAgent服務。
2. 在企業管理器中刪掉local連線,應用Server Name註冊本地伺服器 Tonym,輔助伺服器Tonym02
3. 在SQL1 伺服器上新建共享資料夾NorthwindBackupShare01,賦予啟動SQL Server賬戶的Full 許可權。在SQL1伺服器上新建資料夾 ReceiveSQL2Logs,用來在進行資料庫角色轉換時接收從SQL2上傳送過來的日誌。
在SQL2 伺服器上新建共享資料夾NorthwindBackupShare02,賦予啟動SQL Server賬戶 的Full 許可權。在SQL2伺服器上新建資料夾 ReceiveSQL1Logs,用來接收資料庫SQL1上傳送過來的日誌。
4. 設定想要應用Log Shipping的伺服器為完全恢復模式。
5. 在Database Maintenance Plans上右鍵 New maintenance Plan,選擇進行LogShipping 的資料庫,每次只允許選擇一個資料庫。
6.去掉Back up the database as part of the maintenance plan,保證維護計劃唯一性(推薦)
7.指定資料庫日誌備份路徑。
8.指定存放日誌檔案的共享資料夾。
8.新增目的資料庫。
Server Name 為目的名稱
Transaction Log Destination Directory 填寫從SQL1上傳送到SQL2上日誌檔案的接收路徑.
Destination Database 選擇新建資料庫(指定資料檔案,日誌檔案存放路徑)或者應用已存在的資料庫
Database Load State
No recovery mode:使用者將無法進行資料查詢,只供備份使用.
Standby mode :設定成只讀模式,只要不是進行日誌回存的時候,都可以進行查詢。
Terminate users in database(Recommended) :在回存資料庫或是交易日誌檔案時,回存程式將是資料庫唯一的使用者。
Allow database to assume primary role:允許主要伺服器與次要伺服器之間進行角色轉換。
選擇進行角色轉換後新主要伺服器的共享目錄路徑。
o
9.Initialize the Destination Database: 挑選最近一次的資料或是建立一份新的備份資料。對大型資料庫,使用即有備份比較有效率。但是要保證從備份之後的日誌都存在於主伺服器上的日誌共享目錄中。
10.設定主伺服器上日誌備份頻率。
11.設定輔助伺服器複製備份日誌和載入備份日誌的頻率,以及日誌檔案在輔助伺服器上的留存時間。
12.針對日誌備份及日誌回存工作,設定合理的延遲時間,當超過臨界時間時,日誌傳送監控程式對話方塊會相應一個警告資訊。
13.指定監控伺服器,應該指定獨立於主伺服器,輔助伺服器的第三臺伺服器作為監控伺服器,或者指定輔助伺服器為監控伺服器。
14.點選Next,指定維護計劃的名稱。Finish,開始進行Log shipping 的建立。
Monitor
1. Log Shipping 建立好後,和Log Shipping 相關的資訊儲存在msdb的7個表中:
Log_shipping_plans
Log_shipping_plan_databases
Log_shipping_databases
Log_shipping_plan_history
Log_shipping_monitor
Log_shipping_primaries
Log_shipping_secondaries
2.可以在監控伺服器的management 下看到Log shipping 備份,複製,載入等動作的狀態資訊。
Delete Log shipping
1. 選擇主要伺服器上的log shipping 維護計劃,開啟屬性,選擇【Log shipping】設定頁,然後點選【Remove Log Shipping】。此動作將從次要伺服器上移除SQL Server Agent的備份與回存工作,並清除日誌傳送資料表內的所有相關資料。此外,日誌傳送監控程式的相關資訊也會一併被清除。然而此動作將會適當地保留主要伺服器上SQL Server Agent的交易日誌備份工作。只有在刪除資料庫維護計劃時,該工作才會被移除。假如您想從監控伺服器內移除掉日誌傳送監控程式,請用手動方式將log_shipping_primaries與log_shipping_secondarie 這兩個資料表(位於監控伺服器的msdb資料庫)的資料刪除即可。
如果您在資料庫維護計劃內設定日誌傳送時,就已允許目的資料庫可以做為新的日誌傳送來源資料庫。當您刪除主要伺服器的維護計劃時,次要伺服器上仍然會保留其資料庫維護計劃,以及交易日誌檔案備份工作。刪除這些專案的方式是將次要伺服器上與日誌傳送相關的資料庫維護計劃直接刪除。
Role Alter
1. 在主伺服器上建立登陸同步DTS包。
2. 開啟企業管理器並連線到主伺服器。展開企業管理器樹至“Data Transformation Services” 組,選擇“Local Packages”。右擊“Local Packages”並選擇 “New Package”。從“Task”選單選擇“16 Transfer Logins Task”。在源選擇 主伺服器,目的選項卡 選擇 輔助伺服器。在“Logins”選項卡,選擇傳輸與特定資料庫關聯的登陸,或者傳輸該伺服器的所有登陸。(對於我們的環境推薦使用傳輸該伺服器的所有登陸)
3.將DTS包儲存在主伺服器。
3.指定DTS同步時間(至少每週一次)。
同步登陸賬戶SID
1. bcp master..syslogins out localpath\syslogins.dat /N /S current_primary_server /U sa /P sa_password.
稍後會用到匯出的syslogins資訊.
2. 降級主要伺服器.在主伺服器執行以下儲存過程。
Use master
Exec msdb..sp_change_primary_role
@db_name = ‘current_primary_dbname’
@backup_log = 1,
@terminate = 1,
@final_state = 3,
@access_level = 1
3. 升級輔助伺服器.在輔助伺服器執行以下儲存過程。
Use master
Exec msdb..sp_change_secondary_role
@db_name = ‘current_secondary_dbname’
@do_load = 1,
@force_load = 1,
@final_state = 1,
@access_level = 1,
@terminame = 1,
@keep_replication = 0,
@stopat = null
該儲存過程會將資料庫質為單使用者模式。明明沒有任何使用者正在存取資料庫,它卻告訴我資料庫目前為使用中,解決的方式為重新執行一次該儲存過程。
4. 通知監控伺服器角色已變更,在監控伺服器上執行以下儲存過程。
Use master
Exec msdb..sp_change_monitor_role
@primary_server = ‘current_primary_server_name’,
@secondary_server = ‘current_secondary_server_name’,
@database = ‘current_secondary_dbname’,
@new_source = ‘new_source_directory’
5. 在次要伺服器上解析登入帳號
Use master
Exec sp_resolve_logins
@dest_db = ‘dbname’,
@dest_path = ‘destination_path’,
@filename = ‘filename’ (from step 1 export)
6. 連線資料庫存取與許可權。將轉移後已解析的登入帳號連結至相對應的資料庫使用者及其許可權. (SQL BOOK Online 缺少此步)
Use sourcename
Exec sp_change_users_login ‘update_one’ , ‘username’ , ‘LoginName’
Role Change
1. 在新主要伺服器的資料庫維護計劃內移除日誌傳送功能。
2. 在主要伺服器上刪除資料庫維護計劃。
3. 在次要伺服器上刪除資料庫維護計劃。
4. 維護所有交易日誌。
5. 在新主要伺服器上建立一個新的資料庫維護計劃,指定新次要伺服器所在,目的資料庫位置,以及交易日誌之適當存放位置。
6. 重新開始新主要伺服器的所有活動。
在您成功設定角色互換且建置新日誌傳送配對伺服器後,Enterprise Manager 的日誌傳送監視器可能會告訴您新次要伺服器資料庫並未與新主要伺服器資料庫取得同步(out of sync)。如果“最近一次載入的交易日誌”與“最近一次備份的交易日誌”之間的時間差超過了 out-of-sync設定值,您就會收到此報告。你需要把新主伺服器的備份日誌複製到新次伺服器的同步備份路徑下。到最近一次的備份資料被載入之後,日誌傳送監視器會回到平常無錯誤狀態。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-420632/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 2005高可用行之日誌傳送(Log Shipping)SQLServer
- SQL Server 日誌傳送配置SQLServer
- 啟用日誌傳送 (SQL Server Management Studio)SQLServer
- How to Perform SQL Server Log ShippingORMSQLServer
- sqlserver關於日誌傳輸log shipping的總結SQLServer
- SQL server資料庫高可用日誌傳送的方法SQLServer資料庫
- 日誌傳送,SQL Server高可用性的重要舉措SQLServer
- SQL Server ErrorLog 錯誤日誌SQLServerError
- 啟用日誌傳送 (Transact-SQL)SQL
- SQL Server 事務日誌傳輸SQLServer
- 日誌傳送部署
- 認識SQL Server2000 Log Shipping 【zt】SQLServer
- SQL Server誤區 一個例項多個映象和日誌傳送延遲SQLServer
- stream不能實時傳送standby redo log問題的解決
- 複製和日誌傳送
- 日誌傳送事務日誌備份設定
- SQL Server 收縮日誌SQLServer
- SQL Server 錯誤日誌SQLServer
- ORA-16191: Primary log shipping client not logged on standbyclient
- C#原生郵件傳送+傳送日誌記錄C#
- log4j2通過tcp傳送json日誌到logstash ElasticsearchTCPJSONElasticsearch
- 使用fn_dblog解析SQL SERVER 資料庫日誌方法SQLServer資料庫
- SQL Server中 error log 日誌檔案如何手動切換SQLServerError
- 資料庫映象和日誌傳送資料庫
- Oracle DG ORA-16191: Primary log shipping client not logged on standbyOracleclient
- sql server日誌不能shrink或truncateSQLServer
- SQL Server事務日誌介紹SQLServer
- 壓縮SQL SERVER日誌程式碼SQLServer
- 清除SQL Server資料庫日誌SQLServer資料庫
- SQL Server重做日誌管理機制SQLServer
- oracle LOGICAL standby 日誌無法應用處理Oracle
- 雲端日誌服務——UPLOG的實現
- PHP實現日誌寫入log.txtPHP
- 用sql語句dbcc log 檢視SQL Server 資料庫的事務日誌SQLServer資料庫
- mybatis log sql日誌輸出外掛MyBatisSQL
- [zt]Logical STANDBY日誌應用延遲案例一則
- 減小SQL SERVER的日誌檔案SQLServer
- 關於SQL Server 截斷日誌[zt]SQLServer