iT邦幫忙

0

[請問]資料庫異地備份還原,如何排程還原最近一次異地過來的完整備份

公司兩地,有個共同名稱資料庫為TEST
甲地每天晚上11:30會做完整備份、每半小時做一次差異(差異不在此次還原需求)
例如昨天的完整備份為TEST_backup_2019_03_27_233001_2009449.bak
並透過雲端硬碟備份到乙地D:\SQL_Backup\ 裡

乙地則每隔幾天,有用戶反應資料沒同步時,就手動把甲地前一晚的備份,還原到TEST
不知有沒辦法用排程方式,例如乙地就在清晨三點進行最近的一次備份還原
感謝!

看更多先前的討論...收起先前的討論...
MSSQL的話,新建一條DB排程跑TSQL指令如下
RESTORE DATABASE Adventureworks FROM DISK = 'D:\Adventureworks_full.bak' WITH NORECOVERY
Adventureworks改成你資料庫的名字,備份檔位置也要改成你的位置
harrytsai iT邦新手 5 級 ‧ 2019-03-28 17:56:24 檢舉
如果兩端都有主機只是要還原的話,可以設定主從式資料庫同步複寫,網路上有文章在教設定,如果是資料還原,我會建議手動做,自動做萬一當下出問題或者蓋錯了,就會更麻煩
vicentli iT邦新手 3 級 ‧ 2019-03-28 18:25:43 檢舉
謝謝Skateboard929!您的方法我會試個幾次再上正式環境
謝謝harrytsai,我再尋找關鍵字看看,比較擔心同步複寫會佔用僅4M MPLS頻寬,導致兩地服務變慢,但用外部網路來傳又不安全。
vicentli iT邦新手 3 級 ‧ 2019-03-29 09:29:21 檢舉
請問TSQL怎麼取得D:\底下最新.bak檔?
沒事了,改用Powershell來抓最新.bak檔,再用Powershell做DB還原

1 個回答

0
skateboard929
iT邦新手 4 級 ‧ 2019-03-29 16:42:19
最佳解答

請問TSQL怎麼取得D:\底下最新.bak檔?
沒事了,改用Powershell來抓最新.bak檔,再用Powershell做DB還原

也可以,有一點你要小心,做MSQL在做restoring的時候,如果有table 正在update,是會失敗的,所以你如果想排程自動做,就要在powershell多下一個指令讓database先變為single user mode,然後才做restore,完成restore之後再恢復成mutiple user mode。

希望幫到你

vicentli iT邦新手 3 級 ‧ 2019-03-29 23:17:08 檢舉

謝謝提醒!

我要發表回答

立即登入回答