總覺得這不會是最後一次設定SQL Server之鏡像功能,這次過程中花費不少時間在處理設定面的問題,故記錄下來以便未來回顧。
SQL Server現在提供了數種資料庫同步機制,鏡像屬於其中一種,主要是讓資料庫寫入與更新的資料可以同時更新到不同的SQL Server主機上,讓資料同時存在多台SQL Server上,降低SQL Server出問題或主機出問題時,資料損失的量。
SQL Server目前應該有更好的機制,這次我使用到的是鏡像的功能,故針對鏡像的設定與操作做一個記錄。
檢查服務設定,確定以相同帳號執行SQL Server與SQL Server Agent
檢查兩台主機以之SQL SERVER與SQL SERVER AGENT以相同帳號密碼執行,帳號需要透過旁邊『瀏覽(B)』按鈕來找到對應帳號,選擇對應帳號後會自動帶入。
SQL Server:
SQL Server Agent:
-- Full Backup
BACKUP DATABASE YOUR_DB_NAME to DISK=N'PATH_TO_FILE\backup.bak'
-- Transaction Log Backup
BACKUP LOG YOUR_DB_NAME to disk=N'PATH_TO_FILE\backup.trn'
接著連線至鏡像主機,依序執行下列步驟
選擇檔案來源
必須選擇 RESTORE WITH NORECOVERY
選擇來源
至主體資料庫(Principal) ,選擇鏡像
選擇下一步
因為這次鏡像沒有見證(Witness)主機,故選擇否,並按下一步
確認主體資料庫資訊與使用之Port號
設定鏡像資料庫主機使用之Port號與連線資訊,選擇好鏡像資料庫主機後點選連接,確保可憐至鏡像資料庫中
若未加入DOMAIN,則直接選擇下一步
最後確認資訊
按下完成後,會開始建立鏡像設定
等待設定完成
完成後,會詢問是否啟動鏡像,直接選擇啟動即可
如果出現這個錯誤,表示當下使用的SSMS可能是 2016版本,這是一個存在於SSMS 2016 版的 bug,可以改使用其他版本,如SSMS 2014來執行就可以解決,或是改以指令方式執行即可。
ALTER DATABASE YOUR_DB_NAME SET PARTNER = 'TCP://PRINCIPAL_DB_IP:5022'
ALTER DATABASE YOUR_DB_NAME SET PARTNER = 'TCP://MIRROR_DB_IP:5022'
鏡像資料庫:
到這邊基本上已經設定完成,如果有遇到其他錯誤代碼為 1418 之錯誤,可參考下列連結之建議處理:
Suggestions for 1418
How to resolve Error: 1418 in sql server while mirroring
不得不說,設定中最痛苦的就是找 1418這個代碼代表的問題與排除,更痛苦的是明明照著步驟作卻沒辦法設定成功,試了許久才查到原來是最新的SSMS功能有bug,用舊版的就沒問題,這邊實在耗掉太多時間,若不是幸運查到文章,現在可能還在悲劇之中。