支持的源和目標數據庫
表 支持的數據庫
| 源數據庫 | 目標數據庫 |
|---|---|
| 本地自建MySQL數據庫 ECS自建MySQL數據庫 其他云上MySQL數據庫 RDS for MySQL |
DWS集群 8.1.3版本 |
前提條件
- 已登錄數據復制服務控制臺。
- 滿足實時同步支持的數據庫類型和版本,詳情請參見實時同步。
使用建議
注意
-
DRS任務啟動和全量數據同步階段,請不要在源數據庫執行DDL操作,否則可能導致任務異常。
-
為保證同步前后數據一致性,確保同步期間目標數據庫無業務寫入。
-
數據庫同步與環境多樣性和人為操作均有密切關系,為了確保同步的平順,建議您在進行正式的數據庫同步之前進行一次演練,可以幫助您提前發現問題并解決問題。
-
基于以下原因,建議您在啟動任務時選擇“稍后啟動”功能,將啟動時間設置在業務低峰期,相對靜止的數據可以有效提升一次性同步成功率,避免同步對業務造成性能影響。
- 在網絡無瓶頸的情況下,全量同步會對源數據庫增加約50MB/s的查詢壓力,以及占用2~4個CPU。
- 同步無主鍵表時,為了確保數據一致性,會存在3s以內的單表級鎖定。
- 正在同步的數據被其他事務長時間鎖死,可能導致讀數據超時。
- 由于MySQL固有特點限制,CPU資源緊張時,存儲引擎為Tokudb的表,讀取速度可能下降至10%。
- DRS并發讀取數據庫,會占用大約6-10個session連接數,需要考慮該連接數對業務的影響。
- 全量階段讀取表數據時,特別是大表的讀取,可能會阻塞業務上對大表的獨占鎖操作。
-
數據對比
建議您結合對比同步項的“稍后啟動”功能,選擇業務低峰期進行數據對比,以便得到更為具有參考性的對比結果。由于同步具有輕微的時差,在數據持續操作過程中進行對比任務,可能會出現少量數據不一致對比結果,從而失去參考意義。
使用須知
在創建同步任務前,請務必閱讀以下使用須知。
說明
建議創建單獨用于DRS任務連接的數據庫帳號,避免因為數據庫帳號密碼修改,導致的任務連接失敗。
連接源或目標數據庫的帳號密碼修改后,請盡快修改連接信息,避免任務連接失敗后自動重試,導致數據庫帳號被鎖定影響使用。
表使用須知
類型名稱
使用和操作限制
數據庫權限設置
l?源數據庫帳號需要具備如下權限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。
l?目標數據庫帳號必須具有每張表的如下權限:INSERT、SELECT、UPDATE、DELETE、CONNECT、CREATE、REFERENCES。
同步對象約束
l?支持表、索引、約束(主鍵、空、非空)的同步,不支持視圖、外鍵、存儲過程、觸發器、函數、事件、虛擬列、唯一約束、唯一索引的同步。
l?全量同步支持comment,增量不支持。
l?不支持的數據類型有:xml、geometry、point、lineString、polygon、geometrycollection、multipoint、multilinestring、multipolygon。
l?不支持非MyISAM和非InnoDB表的同步。
l?對象名同步到目標庫后會轉換成小寫,因此選擇的源庫表中不能存在表名稱字母相同但大小寫不同的表,否則,會導致同步失敗。
源數據庫要求
l?增量同步時,MySQL源數據庫的binlog日志必須打開,且binlog日志格式必須為Row格式。
l?在磁盤空間允許的情況下,建議源數據庫binlog保存時間越長越好,建議為3天。設置為0,可能會導致同步失敗。
??源數據庫為自建MySQL時,通過設置expire_logs_days參數設置binlog保留時間。建議將expire_logs_day參數設置在合理的范圍,確保恢復時斷點處的binlog尚未過期,以保證任務中斷后的順利恢復。
??源數據庫為RDS for MySQL時,設置binlog保留時間可參考《RDS用戶指南》。
l?源數據庫GTID狀態必須為開啟狀態,源數據庫實例沒有開啟GTID的情況下不支持主備倒換,DRS任務會因為位點不續接而中斷導致無法恢復。
l?必須設置MySQL源數據庫的server-id,server-id的取值范圍在2-4294967296之間。
l?源數據庫中的庫名、表名不能包含:.<'>`/\"以及非ASCII字符。
目標數據庫要求
l?目標數據庫實例的運行狀態必須正常。
l?目標數據庫實例必須有足夠的磁盤空間。
l?目標數據庫的時區設置必須與源數據庫一致。
操作須知
l?相互關聯的數據對象要確保同時同步,避免因關聯對象缺失,導致同步失敗。常見的關聯關系:索引引用表等。
l?不支持外鍵級聯操作。當外鍵是普通索引的時候,可能會導致表結構創建失敗,建議改成唯一索引。
l?不支持源數據庫進行恢復操作。
l?不支持強制清理binlog,否則會導致同步任務失敗。
l?源數據庫不支持reset master或reset master to命令,可能會導致DRS任務失敗或者數據不一致。
l?不建議在數據庫中使用非精確數值類型做主鍵,該特性影響 DRS 增量場景下對 UPDATE、DELETE語句的同步,導致任務失敗。
l?如果無主鍵表中包含大字段(blob、text、clob、nclob、bytea),增量同步階段存在大字段數據不一致的可能性。
l?源庫為RDS for MySQL實例時,不支持帶有TDE特性并建立具有加密功能表。
l?源庫為RDS for MySQL實例時,支持源端多張表對DWS一張表的映射。詳細操作可參考創建MySQL到DWS同步任務。
l?如果源庫MySQL不支持TLS1.2協議,或者為版本較低的自建庫(低于5.6.46或在5.7.0-5.7.28之間),如果不支持TLS1.2協議,需提交運維申請才能使用SSL測試連接。
l?網絡中斷在30秒內恢復的,不影響實時同步,如果超過30秒,則會導致同步任務失敗。
l?MySQL的唯一約束(unique key)在同步到目標DWS后會改寫成普通約束,主鍵(primary key)的同步保持不變。
l?目標數據庫與源數據庫字符集不一致可能會導致同步后數據不一致或者同步失敗。
l?數據類型不兼容時,可能引起同步失敗。
l?支持目標數據庫中的表比源數據庫多列場景,但是需要避免以下場景可能導致的任務失敗。
??目標端多的列要求非空且沒有默認值,源端insert數據,同步到目標端后多的列為null,不符合目標端要求。
??目標端多的列設置固定默認值,且有唯一約束。源端insert多條數據后,同步到目標端后多的列為固定默認值,不符合目標端要求。
l?實時同步過程中,若源庫為RDS時,支持修改端口,修改之后同步任務失敗,需要通過重試后繼續進行同步。
l?實時同步過程中,若源庫為非RDS時,不支持修改端口。
l?實時同步過程中,不支持IP、帳號、密碼修改。
l?DRS全量同步表結構時,源庫中char、varchar、nvarchar、enum、set字符類型長度在目標庫會按照字節長自動擴大(因為目標庫為字節長),擴大倍數和源庫中列的字符集有關。如源庫字符集為UTF8的按照字節長擴大3倍,為UTF8MB4的按照字節長擴大4倍。
l?增量同步過程中支持DDL操作。
??一對一的場景下,默認同步的DDL類型有CREATE_TABLE,RENAME_TABLE,ADD_COLUMN,MODIFY_COLUMN,ALTER_COLUMN,CREATE_INDEX,DROP_INDEX,RENAME_INDEX,CHANGE_COLUMN,TRUNCATE_TABLE,DROP_TABLE,客戶可以根據自身需求,在對象選擇頁面選擇需要同步的DDL類型。
??多對一場景下,執行colunm重命名操作,必須停業務操作,不然會有數據不一致的風險。
??新增和修改表名、列名、索引名時不能超出63字符,否則任務會失敗。
??源庫無主鍵表增加主鍵的時候,必須含有第一列,否則任務會失敗。
l?增量同步過程中,庫級同步新建的無主鍵表必須包含以下列中的其中之一。
INTEGER TYPES:?TINYINT、SMALLINT、INT、BIGINT、NUMERIC/DECIMAL;
CHARACTER TYPES:?CHAR、BPCHAR、VARCHAR、VARCHAR2、NVARCHAR2;
DATE/TIME TYPES: DATE、TIME、TIMETZ、TIMESTAMP、TIMESTAMPTZ、INTERVAL、SMALLDATETIME;
無主鍵表會指定可作為分布列的其中一列作為分布列,如果所有列類型都無法作為分布列,會導致建表失敗,DRS同步中斷。
l?庫級同步,在增量同步過程中,不能在源庫創建名稱字母相同但大小寫不同的表,否則會導致其中一張表無法同步。
l?建議將expire_log_day參數設置在合理的范圍,確保恢復時斷點處的binlog尚未過期,以保證服務中斷后的順利恢復。
l?源端同步的表如果有AUTO_INCREMENT屬性,結束任務時,DRS會自動刷新同步表的序列整型列所對應的DWS自增列(sequence)起始值,刷新值為該列的最大值+10000。
操作步驟
本小節以RDS for MySQL到DWS多對一場景的實時同步為示例,介紹如何使用數據復制服務配置實時同步任務。
步驟 1 在“實時同步管理”頁面,單擊“創建同步任務”。
步驟 2 在“同步實例”頁面,填選任務名稱、描述、同步實例信息,單擊“開始創建”。
- 任務信息
表任務和描述
| 參數 | 描述 |
|---|---|
| 任務名稱 | 任務名稱在4到50位之間,必須以字母開頭,可以包含字母、數字、中劃線或下劃線,不能包含其他的特殊字符。 |
| 描述 | 描述不能超過256位,且不能包含! = < > & ' " \ 特殊字符。 |
- 同步實例信息
表同步實例信息
| 參數 | 描述 |
|---|---|
| 數據流動方向 | 選擇“入云”。 |
| 源數據庫引擎 | 選擇“MySQL”。 |
| 目標數據庫引擎 | 選擇“DWS”。 |
| 網絡類型 | 此處以“VPC網絡”為示例。目前支持可選“公網網絡”、“VPC網絡”和“VPN、專線網絡”。 |
| 目標數據庫實例 | 可用的DWS實例。 |
| 同步實例所在子網 | 請選擇同步實例所在的子網。也可以單擊“查看子網”,跳轉至“網絡控制臺”查看實例所在子網幫助選擇。默認值為當前所選數據庫實例所在子網,請選擇有可用IP地址的子網。為確保同步實例創建成功,僅顯示已經開啟DHCP的子網。 |
| IP類型 | 選擇遷移實例的IP類型,目前支持選擇“IPv4”或“IPv4&IPv6雙棧”。只有所選擇的VPC及子網都開啟了IPv6雙棧功能,才能選擇IP類型為“IPv4&IPv6雙棧”。 |
| 同步模式 | 可選“全量+增量”、“全量”和“增量”三種模式,此處以“全量+增量”為示例。 全量+增量該模式為數據持續性實時同步,通過全量過程完成目標端數據庫的初始化后,增量同步階段通過解析日志等技術,將源端和目標端數據保持數據持續一致。、 說明 選擇“全量+增量”同步模式,增量同步可以在全量同步完成的基礎上實現數據的持續同步,無需中斷業務,實現同步過程中源業務和數據庫繼續對外提供訪問。 全量 該模式為數據庫一次性同步,適用于可中斷業務的數據庫同步場景,全量同步將用戶選擇的數據庫對象和數據一次性同步至目標端數據庫。 增量 該模式通過解析日志等技術,將源端產生的增量數據持續同步至目標端數據庫。 |
標簽
表 標簽
| 參數 | 描述 |
|---|---|
| 標簽 | 可選配置,對同步任務的標識。使用標簽可方便管理您的任務。每個任務最多支持10個標簽配額。 任務創建成功后,您可以單擊任務名稱,在“標簽”頁簽下查看對應標簽。關于標簽的詳細操作,請參見標簽管理。 |
說明對于創建失敗的任務,DRS默認保留3天,超過3天將會自動結束任務。
步驟 3 在“源庫及目標庫”頁面,同步實例創建成功后,填選源庫信息和目標庫信息,單擊“源庫和目標庫”處的“測試連接”,分別測試并確定與源庫和目標庫連通后,勾選協議,單擊“下一步”。
表 源庫信息
| 參數 | 描述 |
|---|---|
| 源庫類型 | 源數據庫類型,可選“ECS自建庫”和“RDS實例”,此處以“RDS實例”為示例。 |
| 數據庫實例名稱 | 選擇待同步的RDS實例。 |
| 數據庫用戶名 | 源數據庫的用戶名。 |
| 數據庫密碼 | 源數據庫的用戶名所對應的密碼。 |
說明源數據庫的數據庫用戶名和密碼,會被系統加密暫存,直至刪除該任務后自動清除。
表目標庫信息
| 參數 | 描述 |
|---|---|
| 數據庫實例名稱 | 默認為創建同步任務時選擇的DWS實例,不可進行修改。 |
| 數據庫用戶名 | 目標數據庫對應的數據庫用戶名。 |
| 數據庫密碼 | 數據庫用戶名和密碼將被系統加密暫存,直至該任務刪除后清除。 |
步驟 4 在“設置同步”頁面,選擇同步對象類型和同步對象。單擊“下一步”。
表 同步模式和對象
參數
描述
流速模式
流速模式支持限速和不限速,默認為不限速。
l?限速
自定義的最大同步速度,全量同步過程中的同步速度將不會超過該速度。
當流速模式選擇了“限速”時,你需要通過流速設置來定時控制同步速度。流速設置通常包括限速時間段和流速大小的設置。默認的限速時間段為“全天限流”,您也可以根據業務需求選擇“時段限流”。自定義的時段限流支持最多設置3個定時任務,每個定時任務之間不能存在交叉的時間段,未設定在限速時間段的時間默認為不限速。
流速的大小需要根據業務場景來設置,不能超過9999MB/s。
l?不限速
對同步速度不進行限制,通常會最大化使用源數據庫的出口帶寬。該流速模式同時會對源數據庫造成讀消耗,消耗取決于源數據庫的出口帶寬。比如源數據庫的出口帶寬為100MB/s,假設高速模式使用了80%帶寬,則同步對源數據庫將造成80MB/s的讀操作IO消耗。
說明
l?限速模式只對全量階段生效,增量階段不生效。
l?您也可以在創建任務后修改流速模式。具體方法請參見修改流速模式。
同步對象類型
可選同步表結構、同步數據、同步索引,根據實際需求進行選擇要同步內容。
l?同步數據為必選項。
l?選擇同步表結構的時候目標庫不能有同名的表。
l?不選同步表結構的時候目標庫必須有相應的表,且要保證表結構與所選表結構相同。
由于DWS的表結構具有業務邏輯,建議結合業務情況在DWS專家指導下自建表結構,并確保表名、列名、列類型的準確性,否則會出現數據同步失敗、數據同步精度丟失等情況。
增量階段沖突策略
該沖突策略特指增量同步中的沖突處理策略,全量階段的沖突默認忽略。沖突策略目前支持如下形式:
l?忽略
當同步數據與目標數據庫已有數據沖突時(主鍵/唯一鍵存在重復等),將跳過沖突數據,繼續進行后續同步。
l?報錯
當同步數據與目標數據庫已有數據沖突時(主鍵/唯一鍵存在重復等),同步任務將失敗并立即中止。
l?覆蓋
當同步數據與目標數據庫已有數據沖突時(主鍵/唯一鍵存在重復等),將覆蓋原來的沖突數據。
異常數據策略
源和目標數據庫的客觀差異差異,可能導致部分數據無法寫入成功,出現異常數據,請選擇出現異常數據時的任務策略。
l?任務繼續:不因少量異常數據導致全部數據均停止同步,異常數據發生時將會自動記錄臟數據,可在“異常數據”模塊查看這部分數據。
l?任務失敗:出現異常數據后,任務失敗停止。
啟動位點
步驟2的同步模式選擇“增量”時可見,增量同步的啟動位點,任務的源庫日志從位點后開始獲取(不含當前啟動位點)。
通過show master status命令獲取源庫位點,根據提示分別填寫File、Position、Executed_Gtid_Set。
同步對象
左側框是源數據庫對象,右側框是已經選擇的對象,可選表級同步、庫級同步,您可以根據業務場景選擇對應的數據進行同步。
l?可以使用對象名映射功能進行源數據庫和目標數據庫中的同步對象映射,實現多張表對一張表的同步,具體操作可參考對象名映射。
??使用多對一操作時,需要使用數據加工的附加列操作來避免數據沖突。
??源庫和目標庫多對一的表的結構要一致。
說明
l?選擇數據的時候支持對展開的庫搜索,以便您快速選擇需要的數據庫對象。
l?如果有切換源數據庫的操作或源庫同步對象變化的情況,請在選擇同步對象前單擊右上角的
,以確保待選擇的對象為最新源數據庫對象。
l?對象名同步到目標庫后會轉換成小寫,因此選擇的源庫表中不能存在表名稱字母相同但大小寫不同的表,否則,會導致同步失敗。
l?當對象名稱包含空格時,名稱前后的空格不顯示,中間如有多個空格只顯示一個空格。
l?選擇的同步對象名稱中不能包含空格。
l?選擇庫級同步時,在增量同步過程中,不能在源庫創建名稱字母相同但大小寫不同的表,否則會導致其中一張表無法同步。
?
步驟 5 在“數據加工”頁面,可對需要加工的表對象進行數據過濾或添加附加列,,單擊“下一步”。
- 如果需要設置數據過濾,選擇“數據過濾”,設置相關過濾規則。
- 如果需要設置添加附加列,選擇“附加列”,單擊“操作”列的“添加”,選填需要添加的列名和操作類型信息。
相關操作可參考數據加工。
步驟 6 在“預檢查”頁面,進行同步任務預校驗,校驗是否可進行實時同步。
- 查看檢查結果,如有不通過的檢查項,需要修復不通過項后,單擊“重新校驗”按鈕重新進行任務預校驗。
- 預檢查完成后,且所有檢查項結果均通過時,單擊“下一步”。
說明所有檢查項結果均通過時,若存在請確認項,需要閱讀并確認詳情后才可以繼續執行下一步操作。
步驟 7 在“任務確認”頁面,設置同步任務的啟動時間,并確認同步任務信息無誤后,單擊“啟動任務”,提交同步任務。
表任務啟動設置
| 參數 | 描述 |
|---|---|
| 啟動時間 | 同步任務的啟動時間可以根據業務需求,設置為“立即啟動”或“稍后啟動”。 說明 預計同步任務啟動后,會對源數據庫和目標數據庫的性能產生影響,建議選擇業務低峰期,合理設置同步任務的啟動時間。 |
步驟 8 同步任務提交后,您可在“管理”頁面,查看并管理自己的任務。
- 您可查看任務提交后的狀態,狀態請參見任務狀態說明。
- 在任務列表的右上角,單擊
刷新列表,可查看到最新的任務狀態。 - 對于未啟動、狀態為配置中的任務,DRS默認保留3天,超過3天DRS會自動刪除后臺資源,當前任務狀態不變。當用戶再次配置時,DRS會重新申請資源。