最近幫公司將產線上的帳務資料整合到ERP,讓ERP自動產生財務報表,使用到了MSSQL的Log Shipping,簡單記錄一下。
- 來源端: GCP雲端VM
- 目的端: 公司機房受IT保護的VM
由系統自動執行備份資料庫的作業,自動複製備份檔案到另一伺服器上,最後再自動執行資料庫的還原作業,達成資料同步作業,可作為備援用的資料庫。
基本的運作流程,可以簡化為三項作業:「備份」、「複製」、「還原」。
必要條件
- 主要資料庫必須使用完整或大量記錄復原模式。
- 需安裝 .NET Framework 3.5。
1. 首先要請IT雙向開通以下PORT(通常這是最花時間的XD),GCP 設定VM防火牆規則
- Port 1433
- Port 135
- Ports 137, 138, 139 , 445
2. 設定相同帳號權限
- 二台資料庫和OS各要建一組一樣的帳號密碼,SQL Server Agent服務會用這組帳號啟動。
- 共享的資料夾要給這組的帳號讀取寫入的權限否則會造成排程失敗,權限也可以開everyone這樣不容易出問題。
3. 來源端按照步驟設定Log Shipping
主要資料庫進行完整備份(也可以不用)
backup database “DBName” to disk =’G:\SQLLogShipping\DBName\FileName.bak’
with compression, stats = 10;將完整備份複製到次要資料庫還原(也可以不用)
- Options選擇 RESTORE WITH STANDBY
- Overwirte the existing database (WITH REPLACE) 勾起
4. 主要資料庫設定Log Shipping
- 點選 backup setting,輸入在主要伺服器上的備份資料夾與對應的本機路徑,路徑二個都要寫本機的路徑並選擇壓縮檔
- 筆記:Network path 若是主機在同一內部網路可設內部IP,若主機在不同網路可設外部IP
- 注意:此資料夾一定要讓SQL Server Agent的服務帳號擁有讀取和寫入的權限
5.設定完成後,加入次要伺服務器
- 連接到你的次要伺服器系統會自行搜尋與主要伺服器相同的名稱。若次要資料庫已還原(做了第3步驟),在此選擇紅框,若是次要資料庫不存在,則選擇第一個綠框
- 切換到 Copy Files 的分頁後,輸入次要伺服器上的分享資料夾
- 注意:此資料夾一定要讓SQL Server Agent的服務帳號擁有讀取和寫入的權限
- 切換到Restore Transation Log的分頁後,要讓第二台同時也可以進行讀取,所以選擇Sandby mode,並且勾選Disconnect users in the database when restoring backups