[Windows Azure] 千呼萬喚始出來的 SQL Azure Data Sync

在稍早 (10/11-14) 舉行的 SQL Server PASS Summit 2011 中,SQL Azure 團隊終於宣布並釋出了接近 RTM 版本的 SQL Azure Data Sync 服務到 Windows Azure 的管理入口內,我們以往在簡介 SQL Azure Data Sync 時都只能用 SQL Azure Labs 那個醜醜的介面,而且很多時候都不能 work,但今天出現在 Windows Azure 管理入口的 Data Sync 介面,真的是耳目一新啊...

在稍早 (10/11-14) 舉行的 SQL Server PASS Summit 2011 中,SQL Azure 團隊終於宣布並釋出了接近 RTM 版本的 SQL Azure Data Sync 服務到 Windows Azure 的管理入口內,我們以往在簡介 SQL Azure Data Sync 時都只能用 SQL Azure Labs 那個醜醜的介面,而且很多時候都不能 work,但今天出現在 Windows Azure 管理入口的 Data Sync 介面,真的是耳目一新啊。

image

不僅完全擺脫了之前在 SQL Azure Labs 的古板 HTML 介面,還讓我們對 Silverlight 介面的設計有了更新的體驗 ... "原來 Silverlight 可以寫出這樣的應用程式"。但這不是重點,重點是整個 Data Sync 的設定工作已經做到一氣呵成的地步,只要簡單的幾個步驟就能完成整個 Data Sync 的設計。

開始之前,我們還是要介紹一下它的運作架構,SQL Azure Data Sync 的核心是以 Sync Framework 為基礎,在設計之初就希望做到 Cloud to Cloud 和 Cloud to Local 的資料同步,而且是要做到支援雙向同步的能力,為了達成這個需求,Data Sync 使用了一個集線資料庫 (Hub Database) 的概念,透過集線資料庫的整合,讓來源資料庫和目標資料庫的資料同步能更加順暢,集線資料庫是置於 Microsoft 資料中心內,所以如果要使用 Data Sync 服務的話,要在 SQL Azure 中註冊兩個資料庫,而如果要與本地端同步的話,微軟也特別提供了一個 Data Sync Agent 的用戶端程式,所有與集線資料庫的通訊都是由它來代勞,所以也沒有網路通訊和防火牆的問題。

 

image

 

架構介紹完後,我們就來做一個本地與雲端資料庫同步的示範。首先,我們進入 Windows Azure 的管理平台,再點按左邊的 "Data Sync" 進入 SQL Azure Data Sync 的設定介面,一開始還沒有設定 Server,所以要先為訂閱設定 Server。

image

按下工具列中的 "Provision" 或介面中間的 "Provision Data Sync Preview Server",會出現新增 Server 的精靈:

image

勾選接受條款後按 Next,會要求選擇使用哪個訂閱 (目前一個訂閱只可以擁有一個 Data Sync Server,但未來應該會開放允許多個 Server),選定後按 Next:

image

接著會要求選擇要用哪個地區,目前 Preview 階段只有 North Central US 和 West Europe 可選。選定後按 Finish 即完成 Server 的新增。

image

 

然後會直接進入 Server 的設定,請按工具列上 Sync Group 分組的 "Create",或是畫面中央的 "Sync Between On-Premise and SQL Azure Databases",新增一個新的 Sync Group (同步群組)。

image

此時會進入設定畫面:

image

首先要先設定同步群組的名稱,然後按 ">" 圖樣的按鈕。

image

接著要設定本地端的資料庫,直接按下 "Click to add a SQL Server database" 圖示。

image

會出現一個組態的精靈,但因為目前我們沒有任何的資料庫登錄,所以選擇 "Add a new SQL Server database to the sync group",Sync Direction 可以先選 "Sync to the Hub",實作單向的同步作業,然後按 Next。

image

此時出現新增資料庫的畫面,為了要與本地資料庫通訊,我們必須要在資料庫伺服器所在的電腦,或是可以連接到資料庫伺服器的任一台本地電腦上安裝 Data Sync Agent,目前我們尚未安裝,所以我們選 "Install a new Agent",然後按 Next。

image

接著出現 Install a New Agent 的畫面。

image

在這一步我們有三個步驟要做,首先是安裝 Data Sync Agent 用戶端程式,我們可以按 Download 按鈕,它會直接帶到下載頁,可直接下載安裝,不過這支 Agent 程式需要兩個元件 (Preview 階段要求元件要以英文版為主):

  • SQL Server 2008 R2 System CLR Types (x86) - SP1
  • SQL Server 2008 R2 Shared Management Objects (x86) - SP1

在安裝過程中如果找不到這兩個元件時,會提示要求安裝。接著,安裝程式會在本機上安裝一個名為 SQL Azure Data Sync Preview 的 Windows Service,所以會要求你提供啟動服務所需的使用者帳戶與密碼,接著就會自動完成安裝工作。

image

完成 Agent 的安裝後,我們回到管理介面,在 STEP 2 中輸入一個 Agent 的名稱,可以自由輸入不同的名稱,但一個伺服器中,Agent 的名稱要是唯一的。

image

然後在 STEP 3,按下 Generate Agent Key,此時會產生一組隨機的金鑰,這個金鑰會在稍後設定 Agent 用戶端程式時使用,可按下 Copy 將金鑰複製到剪貼簿內,再按 Next。

image

接著,我們會進入 "Add a SQL Server Database to the Sync Group" 畫面,在畫面的說明提示我們接下來的工作。

image

首先是設定 Agent 用戶端程式,我們先回到本機,由開始功能表 > Microsoft SQL Azure Data Sync 中啟動 Microsoft SQL Azure Data Sync Agent Preview 的組態工具。

image

然後按工具列中的 "Submit Agent Key",並輸入先前由管理介面中取得的 Agent Key,按 OK。

image

註:如果是已經設定 Agent 過想重設的話,目前僅可將 Agent 解除安裝再重新安裝一次才可以重設。

連接成功後,工具列上的 Database 分組就會啟用,同時狀態列會顯示 Agent 的名稱與 "Azure Sync Service Connected" 的訊息,我們就可以按 Register 來加入本地資料庫了。我們要加入的是本機 SQL Server 的 Northwind 資料庫,請注意,在這裡如果是用 Windows 驗證的話,服務會用自己的執行帳戶去連接,而如果用 SQL 驗證的話,則會以給定的帳戶去連接。

image

設定完後可按 Test Connection 測試,沒問題時可按 Save 儲存,此時 Agent 內就有我們的本地資料庫資訊了,在登錄的同時,這份資訊會傳回到 Data Sync Server 的服務端。

image

我們再回到管理介面中,按下 STEP 2 的 Get Database List,然後就能在 STEP 3 的下拉式選單中找到這個資料庫。

image

選定它後按 Finish,即可完成本地端資料庫的設定,接下來要設定的是集線資料庫。一樣按下 "Click to add a SQL Azure database as the Sync Hub"。

image

由於集線資料庫必須要是 SQL Azure 上的一個資料庫,所以如果沒有的話要事先新增,這部份請參考 SQL Azure 的文件即可,新增完後回到管理介面,我們要在 Add a SQL Azure Database to the Sync Group 中設定作為集線資料庫的 SQL Azure 資料庫位置。在這裡要注意的是,伺服器要填全名 (servername.database.windows.net),而帳戶要確實可存取該資料庫。填完後按 Add 即可。

接下來是設定同步週期以及衝突處理,預設同步週期是 30 分鐘,但可以設定的單位有分鐘,小時,天與月,所以只需按需求設定即可,另外一個就是衝突問題,當資料同步發生衝突時,目前可決定是依 Hub 為準 (Hub Win) 還是依目標資料庫的資料為準 (Client Win)。

image

設定完後,接著要設定要同步哪些資料,主要是設定來源資料表以及同步資料的過濾條件,按下 Edit Dataset 即可進行設定。

image

我們可以選擇來源資料庫,然後選擇要同步的來源表格和欄位,也可以進一步透過 Row Filtering 過濾資料。設定完成後按 OK 即可。

image

接著,按工具列中的 Deploy 即可完成本地到 Hub 的同步過程,但我們今天是要直接和 SQL Azure 的某個資料庫做同步,所以我們先按 "X" 將它關閉。

image

然後,按 Hub 上方的 "Click to add a SQL Azure database" 來加入我們要同步的 SQL Azure Database。

image

這裡的操作和新增集線資料庫時大同小異,差別是在多了一個 Sync Direction 的選項,這裡我們要選 Sync from the Hub,以設定資料來源是集線資料庫。設定完成後按 OK。

image

至此,我們的同步拓樸就完成了。

image

最後,按下工具列上的 Deploy 按鈕,將拓樸發行到 Data Sync Server,設定工作即大功告成。

image

我們可以馬上按工具列的 "Sync Now" 進行同步,畫面會有動態的處理進度:

image

我們也可以透過工具列中的 "Log Viewer" 來取得同步的記錄檔。

image

 

Reference:

http://blogs.msdn.com/b/windowsazure/archive/2011/10/13/just-announced-at-sql-pass-summit-2011-upcoming-increased-database-limits-amp-sql-azure-federation-immediate-availability-of-two-new-sql-azure-ctps.aspx