本頁是否能提供幫助?
您對此內容的意見反應十分重要。 請告訴我們您的想法。
其他意見反應?
剩餘 1500 個字元
匯出 (0) 列印
全部展開

SQL 資料同步最佳作法

更新日期: 2015年5月

 

SQL Azure 資料同步圖示

歡迎使用 SQL 資料同步 (預覽)。本主題是您在設計和實作資料同步處理計畫之前,應該要先熟悉之五個主題的第五個,也是最後一個。這五個準備主題如下:

Microsoft Azure Silverlight 入口網站上的 Microsoft Azure SQL 資料同步外掛程式已解除任務。從現在開始,使用 Microsoft Azure 入口網站 進入 Azure SQL 資料同步。

您透過 SYNC 索引標籤在 Microsoft Azure 管理入口網站。只有在您擁有一個或多個同步群組時,才能使用 [同步] 索引標籤。請參閱主題作法:建立同步群組 (SDS) 以取得從此入口網站建立和修改同步群組的指示。

請參閱下方的導覽一節,以取得在您開始之前應該閱讀的主題連結以及有關建立和修改同步處理群組的指引。

  • 使用具有網路服務存取權的最低權限帳戶安裝 用戶端代理程式。

  • 最好將 用戶端代理程式 安裝在與內部部署 SQL Server 電腦不同的電腦上。

  • 請勿向一個以上的代理程式註冊內部部署資料庫。

    • 即使是同步處理不同同步處理群組的不同資料表。

    • 在刪除其中一個同步處理群組時,向多個 用戶端代理程式 註冊內部部署資料庫會面臨挑戰。

  • 同步安裝:
    建立/更改資料表、更改資料庫、建立程序、選取/更改結構描述、建立使用者定義型別。

  • 進行中同步:
    在選取的資料表上選取/插入/更新/刪除以同步和持續同步中繼資料及追蹤資料表、在我們的服務所建立之預存程序上的執行權限、使用者定義資料表類型上的執行權限。

  • 解除佈建:
    同步作業中於資料表上的更改、同步處理中繼資料表上的選取/刪除、同步追蹤的同步處理追蹤資料表、預存程序和使用者定義型別上的控制。

因為同步處理群組中的資料庫只有一個認證,所以該如何處理此資訊?

  • 變更不同階段的認證 (例如,cred1 用於安裝,cred2 用於進行中作業)。

  • 變更認證的權限 (例如,在同步安裝之後變更權限)。

企業至雲端案例:

讓中樞資料庫靠近大多數的同步處理群組資料庫流量,以降低延遲。

雲端至雲端案例:

當同步處理群組中的所有資料庫都在一個資料中心時,中樞也應該位於相同的資料中心。這樣會減少延遲以及資料中心之間的資料傳輸成本。

當同步處理群組中的資料庫位於多個資料中心時,中樞應該與大多數的資料庫和資料庫流量位於相同的資料中心。

混合案例:

將上述基本原則套用至更複雜的同步處理群組組態。

  • SQL Database 執行個體 大小

    當您建立新的 SQL Database 執行個體 時,如果選取 [自訂建立],請將大小上限一律設為大於部署之資料庫的大小。如果未將大小上限設為大於部署之資料庫的大小,同步處理將失敗。若沒有自動成長 - 您可以執行 ALTER DATABASE 來增加資料庫在建立之後的大小。當然,您必須維持在 SQL Database 執行個體 的大小限制內。


    Important重要事項
    SQL 資料同步 (預覽) 會將其他中繼資料與資料庫儲存在一起。當您計算所需的空間時,請務必將此列入考量。
    增加的負荷數量受到資料表寬度 (窄的資料表需要更多負荷) 和流量所管制。

  • 支援的資料庫維度限制

     

    維度 限制

    資料庫、資料表、結構描述及資料行名稱

    每個名稱 50 個字元

    同步處理群組中的資料表

    100

    同步處理群組中資料表的資料行

    1000

  • 選取資料表

    並非資料庫中的所有資料表都必須在sync group中。選取要包含在同步處理群組中的資料表以及要排除 (或包含在其他同步處理群組中) 的資料表將會影響效率與成本。請僅包含在同步處理群組中業務需求所要的資料表,以及與其相關的資料表。

  • 主索引鍵

    同步處理群組中的每個資料表都必須要有主索引鍵。SQL 資料同步 (預覽) 服務無法同步處理沒有主索引鍵的任何資料表。

在實際執行之前,請針對您的情況測試初始和進行中同步處理效能。

SQL 資料同步 (預覽) 預覽 會提供基本資料庫的自動佈建。

本章節將討論 SQL 資料同步 (預覽) 佈建的限制。

下面是 SQL 資料同步 (預覽) 自動佈建的限制。

  • 系統只會在目的地資料表中建立選取的資料行。
    因此,如果某些資料行不屬於同步處理群組的一部分,系統就不會在目的地資料表中佈建這些資料行。

  • 系統只會針對選取的資料行建立索引。
    如果來源資料表索引的資料行不屬於同步處理群組的一部分,系統就不會在目的地資料表中佈建這些索引。

  • 系統不會佈建 XML 類型資料行的索引。

  • 系統不會佈建 CHECK 條件約束。

  • 系統不會佈建來源資料表的現有觸發程序。

  • 系統不會在目的地資料庫上建立檢視表和預存程序。

  • 自動佈建功能僅適用於試用服務。

  • 在實際執行時,您應該佈建資料庫結構描述。

本節討論同步群組的初始同步處理,以及您可以採取什麼措施來避免初始同步處理超出必要時間和成本。

當您建立同步群組時,一開始只有一個資料庫包含資料。如果多個資料庫有資料,SQL 資料同步 (預覽) 會將每個資料列視為需要解決的衝突。這會造成初始同步處理非常慢,需要數天到數月,根據資料庫大小而定。

此外,如果資料庫位在不同資料中心,初始同步處理的成本會高於必要成本,因為每個資料列必須在不同的資料中心之間移動。

可能的話,同步群組中一開始只有一個資料庫包含資料。

  • 成本

    即使 SQL 資料同步 (預覽) 服務目前不收費,但是針對 SQL 資料庫 資料中心移入及移出的資料則會收取 SQL 資料庫 費用。因此,您應同步處理穩定的資料表,或含有不需要按每日或每週排程而經常重新整理之資料的資料表。資料表若包含對時間敏感的資料或變動較大的資料,最好按較頻繁的排程進行同步處理。分析業務需求,然後適當地建立Sync Group和排程。

    當資料傳入及傳出資料中心時,也可能會導致進出費用。

  • 頻率

    如果您嘗試同步處理尚未完成同步處理的同步處理群組,嘗試動作甚至不會有反應。您也看不出同步處理作業並沒有發生。因此,最佳作法是排程同步處理,讓每個同步處理有足夠時間能完成,然後再嘗試其他同步處理。

    例如:

    如果您排程同步處理群組每五分鐘同步處理一次 (T0、T0+5、T0+10...),但是群組需要六分鐘才能完成同步處理,則會在 T0、T0+10、T0+20 等處才發生同步處理。T0+5 和 T0+15 會失敗,因為同步處理 T0 和 T0+10 尚未及時完成。

當同步處理群組中存在循環參考時就會產生同步處理迴圈,在此情況下,某個資料庫中的每個變更都會不斷循環地透過同步處理群組中的資料庫複寫。因為同步處理迴圈會降低效能,而且可能會大幅增加成本,所以您想要避免同步處理迴圈。

如需有關同步處理迴圈、產生同步處理迴圈之設計範例以及如何重新設計以避免同步處理迴圈的詳細資訊,請參閱<了解及避免同步處理迴圈>主題。

同步處理群組或同步處理群組中的資料庫可能會變成過期。當同步處理群組的狀態為「過期」時,它就會停止運作。當資料庫的狀態為「過期」時,可能會遺失資料。因此,最好避免發生這些情況,而非從中復原。

當資料庫已經離線 45 天 以上,其狀態會設為過期。經由確認沒有任何資料庫離線 45 天以上,可避免資料庫變成過期狀態。請參閱A database has an "Out-of-Date" status主題,以了解如何從狀態為過期的資料庫復原。

當同步處理群組中的任何變更無法傳播至同步處理群組的其餘部分達 45 天 以上時,該同步處理群組就會設定為過期。您可以經由定期檢查同步處理群組的歷程記錄,並且確定所有衝突都已解決而且變更已成功傳播到同步處理群組資料庫,避免同步處理群組變成過期狀態。

同步處理群組無法套用變更的原因包括:

  • 資料表之間的結構描述不相容。

  • 資料表之間的資料不相容。請參閱<SQL 資料同步支援的 SQL Database 資料類型>主題。

  • 在不允許 Null 值的資料行中插入具有 Null 值的資料列。

  • 使用違反外部索引鍵條件約束的值來更新資料列。

您可以透過下列方式避免同步處理群組過期:

請參閱A sync group has an "Out-of-Date" status主題,以了解如何從狀態為過期的同步處理群組復原。

在某些情況下,向 用戶端代理程式 取消註冊資料庫可能會導致同步處理失敗。

案例:

  1. 同步處理群組 A 是使用 SQL Database 執行個體 以及與本機代理程式 1 相關聯的內部部署 SQL Server 資料庫所建立。

  2. 相同的內部部署資料庫已向本機代理程式 2 註冊 (此代理程式並未與任何同步處理群組相關聯)。

  3. 從本機代理程式 2 取消註冊內部部署資料庫就會移除內部部署資料庫之同步處理群組 A 的追蹤/中繼資料表。

  4. 此時,同步處理群組 A 作業會失敗,並出現下列錯誤:
    「無法完成目前的作業,因為資料庫並未佈建為同步處理,或者您沒有同步處理組態資料表的權限」。

解決方法:

  • 永遠不要向多個代理程式註冊資料庫,即可完全避免此情況。

  • 若要從這類情況中復原:

    1. 從資料庫所屬的每個同步處理群組中移除該資料庫。

    2. 將資料庫重新加入至您剛才從中移除資料庫的每個同步處理群組。

    3. 部署每個受影響的同步處理群組 (可佈建資料庫)。

變更會因為許多原因而無法傳播。某些原因如下:

  • 結構描述/資料類型不相容。

  • 嘗試在不可為 null 的資料行中插入 null。

  • 違反外部索引鍵條件約束。

  • 同步處理群組顯示它位於警告狀態。

  • 詳細資料位於入口網站 UI 記錄檔檢視器中。

  • 如果未針對 45 天 解決此問題,您的資料庫將會過期。


    note附註
    這些變更將無法傳播。復原的唯一方式就是重新建立同步處理群組。

透過入口網站和記錄 UI 定期監控同步處理群組和資料庫健全狀況。

如果您未先部署其中一項變更,請勿嘗試從同步處理群組移除資料庫然後編輯同步處理群組。

首先,請從同步處理群組中移除資料庫。然後部署變更,並等候解除佈建完成。一旦完成此作業後,您可編輯同步處理群組,然後部署變更。

如果您不先部署其中一項變更,就嘗試移除資料庫然後編輯同步處理群組,則可能會有一項作業失敗,而且 UI 可能會處於不一致的狀態。但是當發生此情況時,您可重新整理 UI 來還原正確狀態。

SQL 資料同步 (預覽) 是 SQL 資料庫 的一項功能。您可以從 Azure 管理入口網站執行用來建立、部署及修改同步處理群組的所有必要工作。

 

如何建立同步處理群組

從 Azure 管理入口網站建立同步處理群組有六個步驟。您可以追蹤以下連結來找到每個步驟的詳細資料。

  1. 登入 Azure SQL Database 管理入口網站
    SQL 資料同步 (預覽) (只有在您建立同步處理群組後,才會以索引標籤的形式顯示在 SQL Database 下)。

  2. 安裝 SQL 資料同步用戶端代理程式

  3. 向用戶端代理程式註冊 SQL Server 資料庫

  4. 建立同步處理群組

  5. 定義資料同步

  6. 設定同步處理群組 (SDS)

如何修改同步處理群組

您可以修改同步處理群組的結構描述,方法是加入/移除同步處理群組中的資料表或資料行,或者更改資料行的寬度或資料類型。您可以追蹤連結來找到詳細資料。

另請參閱

顯示:
© 2015 Microsoft