iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 24
3
Everything on Azure

三十天.NET❤️Azure漸進式開發專案系列 第 24

三十天.NET與Azure漸進式開發專案(24): 資料庫讀寫分離 Azure SQL Database Sync

2018-10-30.22.55.29-image.png

原本想要使用異地備援方式,達到讀寫分離,但是有兩點限制:

  1. 需要跨區域,同區域不給建立
    2018-10-29.23.46.08-image.png
  2. 同步時間,最快要一個小時

所以放棄,換使用Azure SQL Database 的 Sync to other databases 功能,做到多台資料庫同步功能,達到讀寫分離動作。


【第一步】首先決定好誰是負責的資料庫,增刪改動作都在此資料庫。我以之前建好的Blog資料庫當 master Database ,其在Azure Data Base的腳色定位為Hub

【第二步】建立只做的 Slave 資料庫,不做其他事情,只負責查詢動作,腳色定位為Member
方式: 所有資源 > 新增一個空白SQL Database
2018-10-30.21.58.53-image.png

【第三步】在Master資料庫,點開 Sync to other databases > 點擊 +New Sync Group 新增同步群組:
2018-10-30.22.00.54-image.png

選好要同步的間隔時間,注意雖然有提供秒選項,但實際至少要間隔五分鐘:
2018-10-30.22.03.37-image.png

選擇 Conflict Resolution 資料衝突情況處理,可以選擇以master資料為主(Hub win),或是slave資料為主(Member Win),我這邊選擇以master資料庫為主,因為資料變動都是出自它。
2018-10-30.22.04.02-image.png

【第四步】決定誰是主要資料庫,誰是成員資料庫
2018-10-30.22.22.49-image.png
需要注意 Sync Directions 可以決定同步方式:

  1. Bi-directional Sync 雙向同步。
  2. To the Hub 從成員資料庫更新到主資料庫。
  3. From the Hub 從主資料庫為準,同步資料。
    這邊我選擇 From the Hub ,資料以主資料庫為準,作為讀寫分離的基礎架構。

2018-10-30.22.17.22-image.png

【第四步】選擇想要同步的表格,注意不支援沒有主鍵的表格

2018-10-30.22.07.08-image.png

建立成功後可以在 Sync Group 下看到建立的同步群組,跟目前同步的狀況。

2018-10-30.22.06.19-image.png

【第五步】在SSMS查看資料庫狀態,可以看到新增的slave資料庫,已經成功同步選取的表格資料
2018-10-30.22.36.28-image.png
另外可以注意到 Azure 使用同步功能,會自動在資料庫建立需要的表格,請勿刪除它們,否則資料同步無法正常運作,這是用來變更追蹤使用。

查詢表格資料,驗證兩邊的資料都是一樣,成功完成同步
2018-10-30.22.42.11-image.png


上一篇
三十天.NET與Azure漸進式開發專案(23): Azure自動化調校資料庫
下一篇
三十天.NET與Azure漸進式開發專案(25): 資料庫讀寫分離,多資料庫同步
系列文
三十天.NET❤️Azure漸進式開發專案30

尚未有邦友留言

立即登入留言