任務提示“function uuid_generate_v4() does not exist”怎么辦?
這是由于目標數據庫PostgreSQL未安裝uuid-ossp插件所致,請進行以下操作后重新發起遷移任務。
需要在目標PostgreSQL數據庫安裝uuid-ossp插件。插件下載地址://www.ossp.org/pkg/lib/uuid/。安裝完插件后,在目標庫的SCHEMA下執行create extension
"uuid-ossp"語句即可。
任務提示“invalid input syntax for type bigint XXX”怎么辦?
這是由于源端數據庫中表字段沒有配置精度所致,請進行以下操作后重新發起遷移任務。
需針對沒有配置精度的表,根據實際數據情況配置精度。
任務提示“ORA-12547: TNS:lost contact”怎么辦?
這是由于節點未加入到數據庫白名單中所致。請進行以下操作后重新發起遷移任務。
將服務節點地址加到數據庫白名單中。
遷移完成后,若想再次遷移如何操作?
可在清理目標庫后,點擊“重試”按鈕。
創建遷移任務時,連接檢測不通過怎么辦?
查看數據庫是否允許公網訪問:
如果不允許公網訪問則開通公網訪問。
如果允許公網訪問,則排查節點地址是否被納入到數據庫白名單,如未納入,請在數據庫白名單加入節點地址。
遷移任務中提示“Packet for query is too large (x>y). You can change this value on the server by setting the 'max_allowed_packet' variable”如何處理?
由于MySQL的max_allowed_packet配置小于云遷批處理提交大小。
由于列設置了默認值,因此過濾后會生成默認值。
具體步驟:
- 在MySQL執行“set global max_allowed_packet=z”,z需要大于報錯信息中x的值。
遷移任務中提示“Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs.”如何處理?
MySQL中規定,表中所有字段的長度不能超過65535。
具體步驟:
將源庫中長度過長的字段的類型替換為Text或blob。
遷移任務中提示 “relation "XXX" does not exist”如何處理?
表依賴的對象不存在。
具體步驟:
手動將表以來的對象遷移至目標庫后,再重新執行遷移任務。
遷移任務中提示“type XXX does not exist”如何處理?
表依賴的數據類型不存在
具體步驟:
手動將表依賴的數據類型遷移至目標庫后,再重新執行遷移任務。如是異構數據庫,則該類型可能無法構建,將無法遷移。
遷移/訂閱/同步任務速度慢/卡住,如何排查?
步驟如下:
1、通過評估獲取源庫數據量,進行遷移時間預估,判斷當前性能是否符合預期;
2、排查節點所在主機內存和CPU是否已經占滿,如占滿建議將任務分批分時段進行,規避資源緊張;
3、排查源庫和目標庫所在主機的內存、CPU、IO、磁盤是否占滿,如占滿建議排查資源占用,降低資源占用后,再重試遷移;
4、排查網絡連通性、帶寬是否存在限制,在條件允許的情況建議升級帶寬。
遷移記錄數為什么比預期數量多?
遷移任務啟動后,源數據庫又寫入了新的數據。
解決步驟:
1、遷移任務僅選擇全量遷移時,遷移任務開始后,請勿對源庫進行數據變更操作;
2、選擇全量+增量遷移的方式同步增量。
遷移任務過濾某些列,為什么遷移后這些列有值?
由于列設置了默認值,因此過濾后會生成默認值。
解決方法: 移除列的默認值配置。
數據庫遷移工具任務長時間停滯在準備階段,應當如何處理?
1、查看當前任務遷移對象是否過多:當任務勾選的遷移對象過多時,數據庫遷移工具需花費較多時間初始化任務信息,請耐心等候;
2、查看遷移節點是否正常運行:可以通過采集任務日志、訪問遷移節點主機查看遷移節點服務狀態是否異常。
MySQL函數遷移時,界面報錯“This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)”,該如何處理?
該問題是由于MySQL的log_bin_trust_function_creators默認為值為OFF,提高了函數遷移的權限要求。
解決方法:
1、連接目標數據庫,執行show variables like '%func%;查看log_bin_trust_function_creators設置值;
2、如果log_bin_trust_function_creators設置值為OFF,通過執行set global log_bin_trust_function_creators=1開啟該配置,降低函數遷移的權限要求。
PostgreSQL遷移至MySQL時,遷移界面報錯“BLOB/TEXT column 'xxxxx' used in key specification without a key length”,該如何處理?
該問題是PostgreSQL源庫的表設置了主鍵,主鍵數據類型為varchar,但沒有設置數據長度限制所致。
**解決方法:**修改源庫表的varchar字段,為其配置明確的長度限制,如varchar(255)。
MySQL遷移結構時,連接檢測時提示“用戶缺少該database的super權限” ,該如何處理?
當用戶只進行數據庫數據遷移時,可忽略該提示。如果用戶要進行結構遷移(如表、視圖)時,則需要給當前用戶賬號賦予SUPER權限,否則可能會導致數據庫遷移失敗。
MySQL數據庫作為源端或目標端增量遷移時,界面提示錯誤信息” Client does not support authentication protocol requested by server; consider upgrading MySQL client”,該如何處理?
1、查看源端數據庫賬號,是否具備REPLICATION CLIENT和REPLICATION SLAVE權限,如果源庫賬號不具備該權限,則需要賦予REPLICATION CLIENT和REPLICATION SLAVE權限后,重新發起任務;
2、執行SELECT plugin FROM mysql.user WHERE user = 'username' AND host = '%'查看目標端數據庫賬號的認證插件。如果返回值為“caching_sha2_password”,執行“ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password”將認證插件改為“mysql_native_password”。
MySQL遷移時,界面提示錯誤“Column 'xxxx' cannot be null”,該如何處理?
1、查看該表結構中的xxx列是否為時間類型;
2、若為時間類型,使用“select xxx from table_name where xxx is null”查看該列數據是否為“0000-00-00”或“0000-00-00 00:00:00”。若為該值,則需要對數據進行處理,若數據無用則進行清理,有用則需修改該列的值。修復后再重新進行遷移;
3、若非時間類型,使用“select xxx from table_name where xxx is null”查看該列數據是否為“null“,若是為null,則可能該表曾發生過變更,后加的非空約束。因此表中存在空值。建議遷移時取消源表的非空約束,或修改不符合要求的數據后,再重新遷移。
MySQL遷移時報錯“DAY_OF_MONTH”、“MONTH”。
這是由于數據表時間字段中存在不符合規范的數據,需要進行數據修復后,再重新遷移。
MySQL遷移時報錯“E0101:The target table does not exist”。
這是目標表不存在導致。如果您希望服務自動建表,則在遷移任務配置時勾選“結構遷移”模式;如果您希望自行建表,需在遷移任務啟動前,在目標數據庫完成建表。