支持的源和目標數據庫
| 源數據庫 | 目標數據庫 |
|---|---|
| MySQL 5.7/8.0 | TeleDB |
支持的遷移范圍
| 結構遷移 | 支持表、主鍵索引、唯一索引、普通索引的同步。 |
|---|---|
| DML | INSERT、UPDATE、DELETE |
| DDL | 不支持 |
數據庫賬號及權限
| 數據庫 | 所需權限 | 參考賦權語句 |
|---|---|---|
| 源庫 | (1) 對MySQL庫的查詢權限 (2) 對待遷移庫的查詢權限 (3) 部分全局權限REPLICATION CLIENTREPLICATION SLAVESHOW VIEWPROCESS (4) 如果是整實例遷移,需要對所有數據庫的查詢權限 |
GRANT SELECT ON MySQL.* TO '遷移賬號'@'%'; GRANT SELECT ON 待遷移的庫.* TO '遷移賬號'@'%'; GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, PROCESS ON*.* TO '遷移賬號'@'%'; |
| 目標庫 | 存在結構 具有模式所在庫的CONNECT權限、 模式所在庫上的CREATE權限、 對象所在模式的USAGE權限、 對象所在模式上的CREATE權限 不存在結構 遷移庫表的INSERT, UPDATE, DELETE, DDL 權限 |
-- 創建同步用戶 (dts)CREATE USER dts WITH PASSWORD 'xxx'; grant usage on schema public to dts; grant ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO dts; grant CREATE on DATABASE public to dts;grant CREATE on schema public to dts; |
操作須知
DTS遷移過程一般包含四個階段:預檢查階段、結構遷移階段、全量階段、增量階段。為了確保遷移各個階段的平順,在創建遷移任務前,請務必閱讀以下使用須知:
- 如遷移對象為表級別,則單次遷移任務僅支持遷移最多10000張表。當超出數量限制,任務會在提交后會請求報錯。如果遇到這種情形,建議您拆分待遷移的表,分批配置成多個任務,或者配置為整庫遷移。
- 源數據庫GTID狀態建議為開啟狀態,源數據庫實例沒有開啟GTID的情況下DTS不支持主備HA切換,因為DTS任務會因為位點不續接而中斷導致無法恢復。
- 目標庫若已存在行數據,DTS在增量遷移過程中源庫相同主鍵的數據將覆蓋目標庫已存在的數據,因此在遷移前需要用戶自行判斷數據是否需要清除,建議用戶在遷移前自行清空目標庫。
- MySQL源數據庫的binlog日志必須打開,且binlog日志格式必須為Row格式。
- 在磁盤空間允許的情況下,建議源數據庫binlog保存時間越長越好,建議為7天。否則DTS在增量遷移時可能因無法獲取Binlog而導致任務失敗。由于您所設置的Binlog日志保存時間低于DTS要求的時間進而導致的問題,不在DTS的SLA保障范圍內。
- 目標庫關聯TELEDB實例必須有足夠的磁盤空間,建議至少為待遷移數據量的2.5倍。
- 遷移過程中,不允許修改、刪除連接源和目標數據庫的用戶的用戶名、密碼、權限,或修改源和目標數據庫的端口號。
- 遷移過程中,不允許對源庫需要遷移的表結構進行修改。
- 選擇表級對象遷移時,增量遷移過程中不建議對表進行重命名操作。
- 增量遷移場景下,不支持源數據庫進行恢復操作。
- 增量遷移場景下,不支持對無主鍵表進行同步。
準備工作
- 創建源庫DTS用戶
如果僅做測試用,可以直接使用MySQL的root用戶作為遷移用戶。
如果需要MySQL的精準遷移權限,可按照如下配置操作:
GRANT SELECT ON MySQL.* TO '遷移賬號'@'%'; GRANT SELECT ON 待遷移的庫.* TO '遷移賬號'@'%'; GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, PROCESS ON . TO '遷移賬號'@'%';
- 創建目標庫DTS用戶
如果僅做測試用,可以直接使用TeleDB的root用戶作為遷移用戶。
如果需要TeleDB的精準遷移權限,可按照如下配置操作:
CREATE USER dts WITH PASSWORD 'xxx';
grant usage on schema public to dts; grant ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO dts; grant CREATE on DATABASE public to dts; grant CREATE on schema public to dts;
如果要做增量遷移且遷移的表包含外鍵,那么除了上述權限外,還要保證該用戶具有在會話級別執行SET session_replication_role = 'replica'的權限。可登錄TeleDB控制臺,將該參數設置并重啟。
- 設置源庫參數
以MySQL 5.7為例:
在配置文件中加入以下參數:
[mysqld]
server-id = 1log_bin=mysql_bin # 開啟binlog并設置格式
binlog_format=row
binlog_row_image=full
expire_logs_days=7 # binlog日志保留時間
gtid-mode = on # 開啟gtid
enforce-gtid-consistency = 1
default-time_zone = '+8:00' # 設置時區,解決CST夏令時的問題
max_connections = 1000 # 設置最大連接數
- 重啟MySQL。
- 確認待遷移對象中是否包含觸發器。
如果將觸發器作為結構的一部分,在DTS的調度邏輯上,觸發器會先于全量遷移被遷移到TeleDB。這樣可能會影響到全量遷移,導致數據不一致。
建議將觸發器放到全量遷移之后,再新建一個遷移任務進行遷移。
- 數據及業務信息統計
如果為非測試任務,需要在遷移之前統計業務以及遷移信息,方便進行遷移任務規劃。
- 資源信息:
源庫規格信息,例:4C8G + 500G + SSD
目標庫磁盤信息:例:4C8G + 500G + SSD
網絡情況:例:為測試環境純內網傳輸,無復雜的網絡拓補結構
- 數據信息:
總數據量,例如30GB
總庫表數量:例:40個庫,8000張表,2000個視圖,5個觸發器
每日新增數據量級,例:一天的binlog日志新增大概100GB
是否所有表都有主鍵,建議遷移前完善主鍵,提高性能,方便運維。
注意如果存在無主鍵的表,則增量階段源端對應表的增、刪、改操作不會同步至目標端,可能導致數據不一致,請謹慎評估。
- 業務類
規劃遷移批次,例:規劃分3次進行遷移,遷移時間每天晚上20:00-06:00,日期為2023-09-18至2023-09-20。
注意實際遷移操作請與數據庫全量備份操作錯開,以免交叉影響,否則可能會導致備份失敗,同時影響遷移效率。
數據遷移是否可停業務,例:能/不能
增量遷移情況,例:開啟增量遷移,持續時間5天
可停業務時間長度,例:服務停機時間預計48小時
業務中是否存在百萬級別的大事務,例:存在,涉及對表CLOUD.LOGS進行大事務操作,存在一個存儲過程用不帶where條件的delete語句定期清理該表。
操作步驟
-
進入遷移頁面單擊TeleDB-DCP數據庫管理平臺左上角,可跳轉到DTS管理服務頁面。
-
數據頁面列表實例開通后,存在待配置狀態實例,單擊操作列的 實例配置 ,進入配置頁面。
-
配置源庫及目標庫信息
- 進入實例配置第一個步驟的配置源庫及目標庫信息頁面,填入源庫與目標庫的相關配置信息,包括數據庫類型、IP地址端口、數據庫賬號、數據庫密碼等信息。TeleDB的連接信息可以從TeleDB管理控制臺看到,選擇協調節點的主節點信息進行連接。在測試環境下,源庫所在主機可通過連接網線到測試樣品內網,并指定IP地址后,填寫相應信息。
- 完成上述信息的填寫后,單擊源數據庫和目標數據庫的檢測聯通性并進行下一步按鈕進行數據庫連接測試,檢查數據庫能否正常連接。
- 進入實例配置第一個步驟的配置源庫及目標庫信息頁面,填入源庫與目標庫的相關配置信息,包括數據庫類型、IP地址端口、數據庫賬號、數據庫密碼等信息。TeleDB的連接信息可以從TeleDB管理控制臺看到,選擇協調節點的主節點信息進行連接。在測試環境下,源庫所在主機可通過連接網線到測試樣品內網,并指定IP地址后,填寫相應信息。
-
配置遷移對象及高級配置
源庫和目標庫連通性測試成功后,進入實例配置第二個步驟的配置遷移對象及高級配置頁面,在“源庫對象”中展開庫后,選擇要遷移的源庫對象,選中后單擊“>”按鈕,將待遷移對象移動到“已選擇對象”中。
-
預檢查并啟動。
完成遷移對象和高級配置后,單擊 下一步預檢查 ,進入實例配置第三個步驟的預檢查****并啟動頁面。預檢查會檢查如下列表信息,并給出檢查結果,用戶可以依據檢查結果進行下一步操作。
檢查項 檢查內容 待遷移表主鍵檢查 檢查待遷移表是否都存在主鍵。 存儲引擎檢查 檢查源庫中待遷移表的存儲引擎是否滿足要求。 源庫binlog存在性檢查 查看源庫的binlog文件是否被誤刪除。 源庫binlog影像類型檢查 查看源庫的binlog_row_image參數是不是FULL。 源庫binlog是否開啟檢查 查看源庫的log_bin參數是不是ON。 源庫binlog模式檢查 查看源庫的binlog_format參數是不是ROW。 源庫binlog保留時間檢查 檢查源庫的binlog保留時間是否滿足要求 源庫和目標庫字符集一致性檢查 檢查源庫和目標庫的字符集是否一致。 源庫用戶權限檢查 檢查源庫用于DTS任務的用戶是否具有相應的權限。 源庫連通性檢查 檢查數據傳輸服務能否連通源數據庫。 目標庫用戶權限檢查 檢查目標庫用于DTS任務的用戶是否具有相應的權限。 目標庫連通性檢查 檢查數據傳輸服務器能否連通目標數據庫。 約束完整性檢查 檢查待遷移對象中所有表的約束外鍵所屬對象是否被選中。
如果預檢查通過,可單擊【預檢查】頁面底部的“啟動遷移”按鈕,開始遷移任務。也可以直接單擊 “數據遷移”頁簽,返回數據遷移列表。注意,如果預檢查中有錯誤項,數據遷移將無法開始;如果有警告項,數據遷移任務可以運行,但可能會出現一些問題。

直接返回遷移列表,遷移任務將處于未啟動狀態。

勾選實例,然后單擊 開始任務 ,直到數據遷移實例完成(沒有增量遷移),或者處于增量遷移狀態。運行到增量遷移后,如果顯示未運行,稍等一會會進入增量運行中。

