2017-06-12 163 views
0

是否可以使用Create Database []作爲[]副本來創建作爲Azure SQL數據庫(PaaS)託管的數據庫副本,以向IaaS (VM上的SQL服務器)?將Azure SQL數據庫(PaaS)複製到IaaS(虛擬機上的SQL服務器)

您能否推薦一種可以限制此類轉換停機時間的導入/導出選項?

之所以這樣做遷移是PaaS的模式跨數據庫的查詢一次性遷移朝着新的應用程序版本過程中使用新的數據庫複雜

回答

1

有許多可用的工具,可以做到這一點的限制。哪一個最適合你取決於你的需求。但是,Azure門戶中的「複製」功能無法爲您完成,但可以作爲您最終確定方法的部分解決方案。

我會做出以下假設:

  • 您有一個永遠在線的全天候生產負荷所以沒有經常有/夜間/每週/每月的維護窗口
  • 可以時間表一個維護窗口,但你希望保持儘可能小
  • 你可以很容易地配置你的應用程序的連接字符串
  • 你的數據庫是不是很大。千兆字節沒問題。
  • 你的數據庫主要是靜態數據(即以漸進的方式是遠遠超過轉儲和填充更快)

如果我要做到這一點今天/現在,我的做法是這樣的(這隻有一個選項):

  1. 使用複印功能,使數據庫的副本,而生產數據庫
  2. 最小化的負荷,我可以用這個作爲一個臨時區域/參考點創建一個備份( bacpac文件)從複製的數據庫
  3. 恢復BACPAC文件到您的IaaS託管SQL Server來形成你基地部署
  4. 啓動維護窗口,並有效地把你的數據庫置於只讀模式,這樣的數據現在不再改變(很多策略上如何無論您關閉應用程序,撤銷權限等)
  5. 使用諸如ApexSQL Data Diff(Redgate及其他選項)之類的工具比較兩個數據庫之間的數據並將數據同步到新的IaaS數據庫。請注意 - 根據您的數據需求,您可能需要調整生成的同步數據的腳本。
  6. 驗證新的數據庫,現在確實是你的舊數據庫的副本(ApexSQL數據差異也可以在這方面幫助 - 幾個選項存在這裏)
  7. 變化的ConnectionStrings在您的應用程序,以指向新的DB
  8. 打開應用程序並結束您的維護窗口。

因此,當然,如果您這樣做,在無數維修窗口之前,多次練習並測試結果。瞭解一切的時機,特別是生成和恢復bacpac文件需要多長時間。這是因爲您希望在維護窗口之前儘可能晚地執行該操作,以最大限度地減少生成和運行您將使用的最終「數據差異」腳本所需的時間。腳本所用時間越長,停機時間越長。

2

的答案取決於你是否要複製數據庫架構,數據,或兩者兼而有之。

正如Jaxidian說,ApexSQL工具可以做的工作,但據我所知DataDiff只會同步數據庫中的數據,而DIFF將同步模式。

這裏是描述複製數據庫中的數據處理的文章:

如果你想複製模式和數據,過程描述如下:

相關問題