支持的源和目標數據庫
表 支持的數據庫
| 源數據庫 | 目標數據庫 |
|---|---|
| RDS for MySQL | 本地自建MySQL數據庫 ECS自建MySQL數據庫 其他云上MySQL數據庫 RDS for MySQL |
前提條件
- 已登錄數據復制服務控制臺。
- 滿足實時同步支持的數據庫類型和版本,詳情請參見實時同步。
使用建議
注意
-
DRS任務啟動和全量數據同步階段,請不要在源數據庫執行DDL操作,否則可能導致任務異常。
-
為保證同步前后數據一致性,確保同步期間目標數據庫無業務寫入。
-
數據庫同步與環境多樣性和人為操作均有密切關系,為了確保同步的平順,建議您在進行正式的數據庫同步之前進行一次演練,可以幫助您提前發現問題并解決問題。
-
基于以下原因,建議您在啟動任務時選擇“稍后啟動”功能,將啟動時間設置在業務低峰期,相對靜止的數據可以有效提升一次性同步成功率,避免同步對業務造成性能影響。如果同步不可避免業務高峰期,推薦使用同步限速功能,即“流速模式”選擇“限速”。
- 在網絡無瓶頸的情況下,全量同步會對源數據庫增加約50MB/s的查詢壓力,以及占用2~4個CPU。
- 同步無主鍵表時,為了確保數據一致性,會存在3s以內的單表級鎖定。
- 正在同步的數據被其他事務長時間鎖死,可能導致讀數據超時。
- 由于MySQL固有特點限制,CPU資源緊張時,存儲引擎為Tokudb的表,讀取速度可能下降至10%。
- DRS并發讀取數據庫,會占用大約6-10個session連接數,需要考慮該連接數對業務的影響。
- 全量階段讀取表數據時,特別是大表的讀取,可能會阻塞業務上對大表的獨占鎖操作。
-
數據對比
建議您結合數據對比的“稍后啟動”功能,選擇業務低峰期進行數據對比,以便得到更為具有參考性的對比結果。由于同步具有輕微的時差,在數據持續操作過程中進行對比任務,可能會出現少量數據不一致對比結果,從而失去參考意義。 -
如果涉及表級匯集的多對一同步任務,則不支持DDL,否則會導致同步全部失敗。
使用須知
在創建同步任務前,請務必閱讀以下使用須知。
表 使用須知
類型名稱 使用和操作限制 數據庫權限設置 SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。
源數據庫賬號需要具備如下權限:
SELECT、CREATE、INDEX、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES。當目標庫為8.0.14-8.0.18版本時,還需要有SESSION_VARIABLES_ADMIN權限。
提供的目標數據庫賬號必須擁有如下權限:
同步對象約束 ??對于一個DDL中存在一個rename的情況(例如:rename A TO B),只支持rename前后庫表都在已選擇庫表中的rename操作(A和B都在已選擇庫表中),其他情況的rename DDL會被過濾;
支持表、主鍵索引、唯一索引、普通索引、存儲過程、視圖、函數的同步,不支持事件、觸發器的同步。
庫映射時源庫中不允許存在存儲過程、視圖、函數對象。
映射的庫中不允許存在除表外的對象且在同步過程中不允許創建這些對象,否則會導致同步任務失敗。
不支持非MyISAM和非InnoDB表的同步。
已選擇的表與未選擇的表之間互相rename的DDL操作,在任務同步中會被過濾掉,可能會導致任務失敗或數據不一致。
??對于一個DDL中存在多個rename的情況(例如:rename A TO B, B TO C),只支持rename前后庫表都在已選擇庫表中的部分rename操作 ,其他情況的rename DDL會被過濾(A和B在已選擇庫表中,C不在,僅執行rename A TO B)。
??不建議在多對一同步場景下的進行rename操作,可能會導致任務失敗或數據不一致。源數據庫要求
源數據庫中的庫名不能包含:'<`>/"以及非ASCII字符。
源數據庫中的表名、視圖名不能包含:'<>/"以及非ASCII字符。
源數據庫中的庫名和庫映射的名稱不允許為ib_logfile。
MySQL源數據庫的binlog日志必須打開,且binlog日志格式必須為Row格式。
在磁盤空間允許的情況下,建議源數據庫binlog保存時間越長越好,建議為3天。
源數據庫expire_logs_days參數值為0,可能會導致同步失敗。
增量同步時,必須設置MySQL源數據庫的server_id。如果源數據庫版本小于或等于MySQL5.6,server_id的取值范圍在2-4294967296之間;如果源數據庫版本大于或等于MySQL5.7,server_id的取值范圍在1-4294967296之間。
目標數據庫要求
不支持從高版本同步到低版本。
目標數據庫必須有足夠的磁盤空間。
目標數據庫的字符集必須與源數據庫一致。
目標數據庫的時區設置必須與源數據庫一致。
除了MySQL系統數據庫之外,當目標庫和源庫同名時,目標數據庫中若存在與源庫同名的表,則表結構必須與源庫保持一致。
DRS同步時會有大量數據寫入目標庫,目標庫max_allowed_packet 參數過小會導致無法寫入,建議將目標庫max_allowed_packet參數值設置為大于100MB。
同步的對象中包含引擎為MyISAM的表,則目標數據庫sql_mode不能包含no_engine_substitution參數,否則可能會導致同步失敗。
映射到目標庫中的庫名不能包含:“.”、 “<”、“>”、“”、和“'”。
操作須知 ??對于源庫端口,需要在數據復制服務控制臺修改為正確的端口,然后重試任務可繼續進行實時同步。
相互關聯的數據對象要確保同時同步,避免因關聯對象缺失,導致同步失敗。常見的關聯關系:視圖引用表、視圖引用視圖、存儲過程/函數/觸發器引用視圖/表、主外鍵關聯表等。
當前僅MySQL->MySQL的同步支持多對一任務同步,進行表級多對一同步時,源庫不允許存在無主鍵表。
源庫和目標庫是相同的RDS實例時,不支持沒有庫映射的實時同步。
源庫不允許存在與目標庫同名的無主鍵表。
源庫和目標庫為RDS for MySQL實例時,不支持帶有TDE特性并建立具有加密功能表。
如果目標庫MySQL不支持TLS1.2協議,或者為版本較低的自建庫(低于5.6.46或在5.7-5.7.28之間),需提交運維申請才能使用SSL測試連接。
支持斷點續傳功能,但是對于無主鍵的表可能會出現重復插入數據的情況。
支持目標數據庫中的表比源數據庫多列場景,但是需要避免以下場景可能導致的任務失敗。
??目標端多的列要求非空且沒有默認值,源端insert數據,同步到目標端后多的列為null,不符合目標端要求。
??目標端多的列設置固定默認值,且有唯一約束。源端insert多條數據后,同步到目標端后多的列為固定默認值,不符合目標端要求。
不支持源數據庫恢復到之前時間點的操作(PITR)。
不支持目標數據庫恢復到全量同步時間段范圍內的PITR操作。
不支持外鍵級聯操作。
不支持強制清理binlog,否則會導致同步任務失敗。
建議將expire_log_day參數設置在合理的范圍,確保恢復時斷點處的binlog尚未過期,以保證服務中斷后的順利恢復。
創建同步任務時,不允許將目標庫設為只讀。
實時同步過程中,如果修改了源庫或者目標庫的用戶名、密碼,會導致同步任務失敗,需要在數據復制服務控制臺將上述信息重新修改正確,然后重試任務可繼續進行實時同步。一般情況下不建議在同步過程中修改上述信息。
實時同步過程中,如果修改了源庫或者目標庫端口,會導致同步任務失敗。針對該情況,數據復制服務提供不同的處理機制。
??對于目標庫端口,系統自動更新為正確的端口,需要重試任務即可進行同步。
一般情況下不建議在同步過程中修改端口。
為了保持數據一致性,不允許對正在同步中的目標數據庫進行修改操作(包括但不限于DDL、DML操作)。
當在全量同步過程中,對MyISAM表執行修改操作時,可能造成數據不一致。
增量同步支持表的重命名,源表和目標表必須都在對象選擇里。
增量同步支持任務再編輯追加同步對象。
操作步驟
本小節以RDS for MySQL->MySQL的出云實時同步為示例,介紹如何使用數據復制服務創建兩個數據庫實例之間的實時同步任務。
步驟 1 在“實時同步管理”頁面,單擊“創建同步任務”。
步驟 2 在“同步實例”頁面,填選任務名稱、描述、同步實例信息,單擊“下一步”。
表 任務和描述
| 參數 | 描述 |
|---|---|
| 任務名稱 | 任務名稱在4-50位之間,必須以字母開頭,不區分大小寫,可以包含字母、數字、中劃線或下劃線,不能包含其他的特殊字符。 |
| 描述 | 描述不能超過256位,且不能包含! = < > & ' " \ 特殊字符。 |
表 同步實例信息
| 參數 | 描述 |
|---|---|
| 數據流動方向 | 選擇“出云”,即源端數據庫為本云數據庫。 |
| 源數據庫引擎 | 選擇“MySQL”。 |
| 目標數據庫引擎 | 選擇“MySQL”。 |
| 網絡類型 | 此處以公網網絡為示例。 可根據業務場景選擇公網網絡、VPC網絡和VPN、專線網絡。 |
| 源數據庫實例 | 用戶所創建的關系型數據庫實例。 |
| 同步實例所在子網 | 請選擇同步實例所在的子網。也可以單擊“查看子網”,跳轉至“網絡控制臺”查看實例所在子網幫助選擇。 默認值為當前所選數據庫實例所在子網,請選擇有可用IP地址的子網。為確保同步實例創建成功,僅顯示已經開啟DHCP的子網。 |
| IP類型 | 選擇遷移實例的IP類型,目前支持選擇“IPv4”或“IPv4&IPv6雙棧”。只有所選擇的VPC及子網都開啟了IPv6雙棧功能,才能選擇IP類型為“IPv4&IPv6雙棧”。 |
| 同步類型 | 此處以“全量+增量”為示例。 * “全量+增量”:該模式為數據持續性實時同步,通過全量過程完成目標端數據庫的初始化后,增量同步階段通過解析日志等技術,將源端和目標端數據保持數據持續一致。 說明 選擇“全量+增量”同步模式,增量同步可以在全量同步完成的基礎上實現數據的持續同步,無需中斷業務,實現同步過程中源業務和數據庫繼續對外提供訪問。 * “增量”:增量同步通過解析日志等技術,將源端產生的增量數據同步至目標端。 |
| 標簽 | * 可選配置,對同步任務的標識。使用標簽可方便管理您的任務。每個任務最多支持10個標簽配額。* 任務創建成功后,您可以單擊任務名稱,在“標簽”頁簽下查看對應標簽。關于標簽的詳細操作,請參見 標簽管理。 |
步驟 3 同步實例創建成功后,在“源庫及目標庫”頁面,填選源庫信息和目標庫信息后,單擊“源庫和目標庫”處的“測試連接”,分別測試并確定與源庫和目標庫連通后,勾選協議,單擊“下一步”。
表 源庫信息
| 參數 | 描述 |
|---|---|
| 數據庫實例名稱 | 默認為創建同步任務時選擇的關系型數據庫實例,不可進行修改。 |
| 數據庫用戶名 | 源數據庫對應的用戶名。 |
| 數據庫密碼 | 源數據庫用戶名對應的密碼。 |
說明源數據庫用戶名和密碼將在同步過程中被加密暫存到數據庫和同步實例主機上,待該任務刪除后會永久清除。
表 目標庫信息
| 參數 | 描述 |
|---|---|
| IP地址或域名 | 目標數據庫的IP地址或域名。 |
| 端口 | 目標數據庫服務端口,可輸入范圍為1~65535間的整數。 |
| 數據庫用戶名 | 目標數據庫的用戶名。 |
| 數據庫密碼 | 目標數據庫用戶名所對應的密碼。 |
| SSL安全連接 | 通過該功能,用戶可以選擇是否開啟對同步鏈路的加密。如果開啟該功能,需要用戶上傳SSL CA根證書。 說明 最大支持上傳500KB的證書文件。 如果不使用SSL證書,請自行承擔數據安全風險。 |
說明目標數據庫IP地址、端口、用戶名和密碼將在同步過程中被加密暫存到數據庫和同步實例主機上,待該任務刪除后會永久清除。
步驟 4 在“設置同步”頁面,選擇數據沖突策略和同步對象,單擊“下一步”。
表 同步模式和對象
參數 描述 流速模式 流速模式支持限速和不限速,默認為不限速。 自定義的最大同步速度,全量同步過程中的同步速度將不會超過該速度。
限速
當流速模式選擇了“限速”時,你需要通過流速設置來定時控制同步速度。流速設置通常包括限速時間段和流速大小的設置。默認的限速時間段為全天限流,您也可以根據業務需求自定義時段限流。自定義的時段限流支持最多設置3個定時任務,每個定時任務之間不能存在交叉的時間段,未設定在限速時間段的時間默認為不限速。
流速的大小需要根據業務場景來設置,不能超過9999MB/s。對同步速度不進行限制,通常會最大化使用源數據庫的出口帶寬。該流速模式同時會對源數據庫造成讀消耗,消耗取決于源數據庫的出口帶寬。比如源數據庫的出口帶寬為100MB/s,假設高速模式使用了80%帶寬,則同步對源數據庫將造成80MB/s的讀操作IO消耗。
不限速
說明
限速模式只對全量階段生效,增量階段不生效。
您也可以在創建任務后修改流速模式。具體方法請參見 修改流速模式。
增量階段沖突策略 該沖突策略特指增量同步中的沖突處理策略,全量階段的沖突默認忽略。沖突策略目前支持如下三種形式: 當同步數據與目標數據庫已有數據沖突時(主鍵/唯一鍵存在重復等),將跳過沖突數據,繼續進行后續同步。
忽略
當同步數據與目標數據庫已有數據沖突時(主鍵/唯一鍵存在重復等),同步任務將失敗并立即中止。
報錯
當同步數據與目標數據庫已有數據沖突時(主鍵/唯一鍵存在重復等),將覆蓋原來的沖突數據。
覆蓋
當數據發生沖突時,針對如下情況,建議選擇“忽略”或者“覆蓋”,否則建議選擇“報錯”:
目標數據庫存在數據
多對一同步場景
目標數據庫手動更新數據
是否過濾DROP DATABASE 實時同步過程中,源數據庫端執行的DDL操作在一定程度上會影響數據的同步能力,為了降低同步數據的風險,數據復制服務提供了過濾DDL操作的功能,目前支持默認過濾刪除數據庫的操作。
是,表示過程中不會同步用戶在源數據庫端執行的刪除數據庫的操作。
否,則表示過程中將相關操作同步到目標庫。
對象同步范圍 對象同步范圍支持普通索引和增量DDL同步。您可以根據業務需求選擇是否進行同步。 數據同步拓撲 數據同步功能支持多種同步拓撲,您可以根據業務需求規劃您的同步實例。數據同步拓撲說明可參考 數據同步拓撲介紹。 增量支持DDL 用戶根據需求選擇增量同步的DDL類型,不同鏈路支持的DDL類型以顯示為準。
一對一、一對多場景:如果業務上認為源和目標應該使用保持嚴格一致,那么高危類DDL也應該勾選并同步。如果業務上確定某個高危DDL不應該發生,則可以不勾選同步高危類DDL,這樣DRS將攔截過濾這個DDL,從而起到保護目標數據的作用。但需要知曉,過濾DDL的附帶問題是可能導致同步失敗,例如過濾刪列動作。
多對一數據聚合場景:最佳方式是推薦只選擇同步加列DDL,其他大部分DDL同步都可能因目標表修改而導致數據不一致或多對一中其他任務失敗的情況發生。
同步對象 可選表級同步、庫級同步,您可以根據業務場景選擇對應的數據進行同步。
選擇數據的時候支持搜索,以便您快速選擇需要的數據庫對象。
如果有切換源數據庫的操作,請在選擇同步對象前單擊右上角的
,以確保待選擇的對象為最新源數據庫對象。在同步對象右側已選對象框中,可以使用對象名映射功能進行源數據庫和目標數據庫中的同步對象映射,具體操作可參考對象名映射。
步驟 5 在“數據加工”頁面,根據需要選擇數據加工的方式。
- 如果不需要數據加工,單擊“下一步”。
- 如果需要數據加工,可選擇“數據過濾”、“附加列”或“列加工”,參考 數據加工章節,設置相關規則。
步驟 6 在“預檢查”頁面,進行同步任務預校驗,校驗是否可進行。 - 查看檢查結果,如有不通過的檢查項,需要修復不通過項后,單擊“重新校驗”按鈕重新進行任務預校驗。
- 預檢查完成后,且所有檢查項結果均通過時,單擊“下一步”。
說明所有檢查項結果均通過時,若存在請確認項,需要閱讀并確認詳情后才可以繼續執行下一步操作。
步驟 7 在“任務確認”頁面,設置同步任務的啟動時間,并確認同步任務信息無誤后,單擊“啟動任務”,提交同步任務。
表 任務啟動設置
| 參數 | 描述 |
|---|---|
| 啟動時間 | 同步任務的啟動時間可以根據業務需求,設置為“立即啟動”或“稍后啟動”。 說明 預計同步任務啟動后,會對源數據庫和目標數據庫的性能產生影響,建議選擇業務低峰期,合理設置同步任務的啟動時間。 |
步驟 8 同步任務提交后,您可在“管理”頁面,查看并管理自己的任務。
- 您可查看任務提交后的狀態,狀態請參見 任務狀態說明。
- 在任務列表的右上角,單擊
刷新列表,可查看到最新的任務狀態。