本章節羅列了部分RDS MySQL一鍵升級至PolarDB MySQL版的常見問題。
Q:遷移評估中的檢查項校正失敗,需要如何處理?
分類
檢查項
檢查項校正失敗的處理方法
提示項
Event校正
源RDS執行個體存在Event,但DTS暫不支援同步Event。您需手動同步到目標端PolarDB。
源執行個體基本資料校正
源執行個體運行狀態
源RDS執行個體的運行狀態需要處於正常運行中。
源執行個體讀寫狀態
源RDS執行個體的運行狀態需要處於正常運行中,可讀可寫。
源執行個體帳號模式
如果源RDS執行個體處於高安全模式(資料庫代理模式),需要建立一個具有高許可權帳號(具體請參見(廢棄,重新導向至“第一步”)建立資料庫和帳號),或者切換到高效能模式(參見切換到高效能模式),才能進行一鍵升級。
PolarDB服務關聯角色
帳號下已建立PolarDB服務關聯角色。
您可以參考檢查是否已建立PolarDB服務關聯角色操作,或通過OpenAPI建立。
遷移任務依賴校正
DTS服務許可權
您的阿里雲帳號需要已授予DTS訪問雲資源的許可權。
您可以參考授予DTS訪問雲資源的許可權操作。
源執行個體是否是空庫
源RDS執行個體沒有建立資料庫。您需要在執行個體中建立資料庫後才能進行遷移。
源執行個體表引擎校正
僅表格儲存體引擎類型為InnoDB或X-Engine的源RDS執行個體支援一鍵升級功能。
源執行個體觸發器校正
源RDS執行個體建立了觸發器,請先刪除觸發器,否則將導致遷移中斷。
說明您可以執行以下語句,根據業務需求刪除對應源RDS執行個體觸發器。
-- 查看有哪些觸發器 SHOW TRIGGERS; -- 選擇執行刪除觸發器。 DROP TRIGGER trigger_name;您可以在遷移流程結束後,在目標PolarDB叢集手動建立觸發器。
源執行個體無主鍵表校正
源RDS執行個體存在沒有主鍵的表,同步資料後可能會導致目標資料庫中出現重複資料。
您可以通過在源RDS執行個體上通過高許可權帳號串連資料庫,並執行如下SQL,查詢沒有主鍵的表:
SELECT t1.table_schema, t1.table_name FROM information_schema.TABLES t1 LEFT OUTER JOIN information_schema.TABLE_CONSTRAINTS t2 ON t1.table_schema = t2.TABLE_SCHEMA AND t1.table_name = t2.TABLE_NAME AND t2.CONSTRAINT_NAME IN ("PRIMARY") WHERE t2.table_name IS NULL AND t1.table_type = "BASE TABLE" AND t1.TABLE_SCHEMA NOT IN ("information_schema", "performance_schema", "mysql", "sys") 。您可以為查詢出來的表添加主鍵。
如果您確認重複記錄不影響,則可以忽略此項評估結果,在一鍵升級過程中出現該提示的時候選擇繼續升級。
源執行個體重點資訊校正
源執行個體root帳號校正
為了相容RDS MySQL和PolarDB兩者的系統帳號體系,避免遷移後目標PolarDB的系統帳號被覆蓋,源RDS執行個體中不允許同時存在root和aliyun_root帳號。具體可參考刪除源RDS執行個體中多餘系統帳號。
Q:一鍵升級RDS MySQL至PolarDB MySQL版和一鍵複製RDS MySQL至PolarDB MySQL版兩者有什麼區別?
A:兩者間的區別如下表:
對比項
一鍵升級RDS MySQL至PolarDB MySQL版
是否支援遷移或同步增量資料
支援
不支援
是否影響源RDS操作
不影響
不影響
源和目標的MySQL版本能否不同
可以不同
可以不同
Q:升級後的PolarDB MySQL版節點規格需要和源RDS MySQL的執行個體規格保持一致嗎?
A:不一定,您可以按需選擇PolarDB MySQL版的規格,建議不低於源RDS執行個體規格。
Q:升級前是否需要先購買PolarDB MySQL版叢集?
A:您無需提前購買PolarDB MySQL版叢集,升級過程中既會購買並建立一個與源RDS執行個體資料相同的PolarDB叢集。
Q:從RDS遷移會影響源RDS執行個體嗎?
A:不會影響源RDS執行個體的正常運行。
Q:平滑遷移對源RDS執行個體效能有影響嗎?
A:遷移不會影響源RDS執行個體上的使用操作,但資料移轉涉及查詢操作,會消耗源RDS執行個體一部分的查詢效能。
Q:平滑遷移對業務有影響嗎?
A:平滑遷移能夠保證遷移過程不遺失資料,停機(即暫停業務,不產生增量資料,而非停用資料庫)時間小於10分鐘,如果有需要還可以進行復原。
Q:取消遷移會有什麼影響?
A:取消遷移會有如下影響:
會切斷源叢集到目的地組群的同步鏈路,源叢集和目的地組群不再關聯。
目的地組群恢複可讀可寫狀態,且不會自動釋放。若不再需要使用該叢集,請儘快釋放,避免產生額外費用。
手動取消遷移時可以選擇是否關閉叢集的Binlog,自動取消遷移時不會關閉Binlog。
說明關閉Binlog會帶來少量的寫入效能提升,Binlog關閉後,已有的Binlog檔案會一直保留。您可以先縮短Binlog檔案的儲存時間長度,等待不需要的檔案自動刪除後,再關閉Binlog。關閉Binlog後叢集會自動重啟,重啟任務會在5分鐘之內完成,重啟時服務閃斷時間在40秒左右。具體時間與資料量和表數量相關,建議您在業務低穀期進行操作並確保應用程式具備重連機制。
Q:升級完成後,將業務切換到PolarDB,應用程式端的串連地址是否需要修改?
A:您可以在遷移切換時選擇带地址切换(应用程序不用改连接配置),系統會自動交換RDS和PolarDB上的串連地址,您無需在應用程式端修改任何配置即可自動連接到PolarDB。
Q:遷移升級過程中如果目標端叢集高許可權帳號缺乏部分許可權,遷移升級過程中能否修改帳號許可權?
A:遷移升級過程中不能修改帳號許可權。目標端叢集的高許可權帳號的許可權將從源執行個體同步,如果遷移升級後缺少部分預設許可權,可以在控制台-帳號管理頁面重設高許可權帳號的許可權。
Q:遷移時選擇了带地址切换(应用程序不用改连接配置),遷移完成後-為什麼PolarDB叢集仍然使用新的串連地址?
A:僅當源RDS和目標PolarDB叢集同時存在的串連地址才支援相互切換,預設情況下僅私網主地址支援帶地址切換。如需切換其他串連地址,您需在切換前建立好對應的串連地址,否則不會切換。關於如何為PolarDB叢集和RDS執行個體建立串連地址,請參見管理串連地址和設定串連地址。
Q:源RDS執行個體中還包含唯讀執行個體,若選擇带地址切换(应用程序不用改连接配置),唯讀執行個體的串連地址能否一併切換?
A:選擇帶地址切換(應用程式不用改串連配置)時,若PolarDB存在對應的叢集地址或自訂地址,可以與源RDS中的唯讀執行個體串連地址切換。
Q:業務成功切換後,為什麼串連不上PolarDB資料庫或串連成功但只支援讀操作無法執行寫入操作?
A:切換網域名稱後,可能會存在DNS解析緩衝問題,在緩衝到期時間內可能會出現串連不上資料庫或資料庫只支援讀操作無法執行寫入操作等情況,建議您重新整理一下伺服器的DNS緩衝。
Q:一鍵升級到PolarDB前,能否先進行相容性測試並簡單評估遷移工作量?
A:您可以先通過一鍵複製RDS MySQL至PolarDB MySQL版功能複製一份資料到PolarDB進行相容性測試和評估遷移工作量,測試沒有問題後再參照本文操作一鍵升級至PolarDB。
Q:遷移切換後,為什麼在PolarDB控制台上看不見完成迁移按鈕?
A:若您已經執行過完成迁移操作,該按鈕將會消失,避免您重複執行相同操作。
Q:一鍵升級至PolarDB後,還需要在目標PolarDB叢集中建立與源RDS執行個體相同的帳號和密碼嗎?
A:不需要。升級後PolarDB叢集將包含源RDS執行個體的帳號密碼、資料庫、IP白名單和必要的參數等資訊。
Q:源RDS執行個體已開啟了SSL,如何再遷移至PolarDB叢集?
A:已開啟了SSL的RDS執行個體支援一鍵升級至PolarDB叢集,您可以通過物理遷移或邏輯遷移的方式進行遷移。
說明如果RDS執行個體的串連地址開啟了SSL,並且您選擇帶地址切換並切換該地址,請確保PolarDB叢集對應的串連地址已開啟SSL。
Q:源RDS執行個體已開啟了TDE,如何再遷移至PolarDB叢集?
A:已開啟TDE的RDS執行個體支援一鍵升級至PolarDB叢集,您可以通過物理遷移或邏輯遷移的方式進行遷移。
Q:一鍵升級是否支援跨版本升級?如將RDS MySQL 5.6升級至PolarDB MySQL版 8.0版本?
A:一鍵升級中的邏輯遷移(DTS資料同步)方式支援跨版本升級。
Q:若在一鍵升級至PolarDB MySQL版前,源RDS執行個體已開啟了DTS資料同步任務,升級時是否會影響該任務?
A:不會。通過一鍵升級進行遷移時,會先從RDS複製一份全量資料至一個新的PolarDB叢集,然後將增量資料保持同步至該PolarDB叢集。源RDS上DTS資料同步任務的資料來源仍然是源RDS,資料移轉至PolarDB並不會影響源RDS上的運行和操作。
在遷移切換後,源RDS變成唯讀,若其作為DTS資料同步任務的資料目標端,將無法寫入。您需要將DTS資料同步任務的資料目標端修改成新PolarDB叢集;若其作為DTS資料同步任務的資料來源,也建議在遷移切換後儘快將DTS資料同步任務的資料來源修改成新PolarDB叢集。
目前僅支援通過OpenAPI修改DTS任務的源或目標庫執行個體,具體請參見修改DTS任務的源或目標庫執行個體。
Q:RDS執行個體退訂(釋放)或變更可用性區域等操作時,提示“執行個體在引擎遷移中時,指定的操作被禁用”應如何處理?
A:當前RDS執行個體可能進行中一鍵升級RDS MySQL至PolarDB MySQL版的過程中,請您前往PolarDB控制台確認是否存在進行中遷移的PolarDB叢集。您需在PolarDB叢集中完成所有升級操作(包括遷移切換、遷移切換等)後,方可對RDS執行個體進行退訂(釋放)或變更可用性區域等操作。