Windows Azure上,除了一般的SQL Database服務、VM服務外,還有一個非常強大的服務,那就是Data Sync,Data Sync如名子所述,就是資料同步的利器,除了可以將Local的資料同步到Azure的SQL Database外,還可以把Azure的SQL Database當作中繼點,散布到其他台的db去,如MSDN提供的下圖,我們可以看到整個架構圖,透過Data Sync,可以當作中樞,來同步所有的db。
那到底怎麼做呢?現在,我們就來試驗看看。首先,我們要先在Windows Azure的管理介面,選擇加入同步。
然後我們要先選擇"新的同步代理程式",來建立一個新的同步代理程式,這樣才能把讓Local端的機器,和Azure註冊。
按下去後,在設定完同步代理程式之前,我們需要先在Local端安裝同步代理程式,這樣才有人會自動地去同步這些東西。
目前也只有英文版可以用。
選擇這個來下載。
另外,我們可以從下載頁面,打開System Requirements看到一些要注意的事項,目前同步代理程式需要安裝SQL Server 2012 CLR Types x86和SQL Server 2012 Hared Management Objects x86的英文版( 中文版或是太新版本都不行…因為在Preview嘛… ),所以如果之前已經有安裝了,要先移除,可以參考我好友Terry的這篇文章;如果還沒裝,就去下面那兩個網址下載吧。
接下來,就進入安裝的步驟。
如果沒安裝那兩樣,就會跳出警告,而且目前裝了最新版或是中文版,一樣不行,所以請乖乖地使用英文版。
最後,官方也提出一個警告如下
- Be sure that this Windows Service account has permissions to connect to all the on-premises databases you want to register with the agent.
- Be sure that the service account has network access through network proxy and firewall.
- If you have a network proxy ensure that the service account can connect to SQL Data Sync (Preview) service through the proxy.
To later change to a different service account you must uninstall the current client agent than install a new client agent under the new service account.
大致上的意思是說,如果要確保能連線到Database,你必須註冊,此外,也請確保此服務帳號,可以通過與訪問,而比較重要的是,如果要改變服務帳號,那必須把程式移除後在重裝;另外,當此代理程式和Azure上對應過後就不能改了喔,如果要改,也必須要先把程式移除掉。
接下來這邊,輸入服務的帳號與密碼,小弟就直接用自己的帳號了,如果是架設在正式的Server環境,就又特別注意權限了。
經過超長的設定與安裝,我們終於可以回到Windows Azure下,繼續設定。
設定完成後,我們要取得金鑰,可以按下產生,產生金鑰。
接下來,我們打開剛剛裝好的Microsoft SQL Data Sync Agent程式,並且輸入剛剛給的金鑰;在一次的提醒,此代理程式,金鑰輸入進去後,如果未來要改,就必須把程式移除後重裝喔。
接下來,選擇要註冊的DB,也就是Local的哪一個db要準備加入群組。
到這邊,代理程式就準備好了。
接下來,我們準備好代理程式後,我們要使建立一個同步群組。
這邊,我們開始建立一個同步群組。
接下來,我們要決定哪一台當作中樞,也就是資料的集散地,基本上,所有群組的資料,都會先到中樞,然後再去做散發。
接下來,加入要參考的資料庫,也就是說,中樞的db要散發給誰。
完成之後,我們可以看到,其實目前還未就緒,因為我們還沒決定要同步那些東西。
接下來,我們來到同不規則的地方,點選定義同步規則。
這邊,我們就可以則到Local端,剛剛用Microsoft SQL Data Sync Agent註冊的DB了。
然後就可以挑選,要同步那些Table。
決定之後,就可以存檔,並且同步。
我們可以從記錄這邊看到經過。
最後,如果想要讓他自動同步處理的話,我們就從設定這邊做調整,只要開啟,並且設定頻率,未來就會自動同步了!!
這樣就完成了Sync的機制,很簡單吧
後記
透過Sync的機制,大幅度的強化了SQL Database的可用性,我們可以透過Sync,來讓SQL Database只處理Read的部分,來讓讀寫分流,也可以透過Sync來讓全球各地的資料庫同步化,這些如果是以前,都必須花費很長的時間設定與測試,而現在只要透過SQL Sync,就可以輕易地做到了。
參考資料
- http://www.windowsazure.com/en-us/manage/services/sql-databases/getting-started-w-sql-data-sync/
- http://msdn.microsoft.com/zh-tw/library/hh456371.aspx
- http://www.dotblogs.com.tw/terrychuang/archive/2013/01/02/86656.aspx
- http://blogs.msdn.com/b/windowsazure/archive/2011/01/27/overview-of-sql-azure-datasync.aspx