本章節介紹了PolarDB MySQL版集群之間升級的常見問題。
升級評估中的檢查項校驗失敗,需要如何處理?
分類
檢查項
檢查項校驗失敗的處理方法
源實例基本信息校驗
源實例運行狀態
源PolarDB集群的運行狀態需要處于正常運行中。
源實例讀寫狀態
源PolarDB集群的運行狀態需要處于正常運行中,可讀可寫。
PolarDB服務關聯角色
賬號下已創建PolarDB服務關聯角色。
您可以參考檢查是否已創建PolarDB服務關聯角色操作,或通過OpenAPI創建。
遷移任務依賴校驗
DTS服務權限
您的阿里云賬號需要已授予DTS訪問云資源的權限。
您可以參考授予DTS訪問云資源的權限操作。
源實例binlog校驗
大版本升級前,源PolarDB集群需要開啟Binlog。具體請參考開啟Binlog。
源實例是否是空庫
源PolarDB集群沒有創建數據庫。您需要在集群中創建數據庫后才能進行升級。
源實例觸發器校驗
源PolarDB集群創建了觸發器,請先刪除觸發器,否則將導致升級中斷。
您可以在升級流程結束后,在目標PolarDB集群手動創建觸發器。
源實例無主鍵表校驗
源PolarDB集群存在沒有主鍵的表,同步數據后可能會導致目標數據庫中出現重復數據。
您可以通過在源PolarDB集群上通過高權限賬號連接數據庫,并執行如下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賬號校驗
為了避免遷移后目標PolarDB集群的系統賬號被覆蓋,源PolarDB集群中不允許同時存在root和aliyun_root賬號。因此,在進行升級前,請先刪除源集群中多余的系統賬號。具體可參考刪除源PolarDB MySQL版集群中多余系統賬號。
Q:目標PolarDB MySQL版集群的節點規格需要和源集群的節點規格保持一致嗎?
A:不一定,您可以按需選擇目標PolarDB MySQL版集群的規格,建議不低于源集群的規格。
Q:升級前,是否需要提前購買集群?
A:不需要,升級過程中會創建并購買一個與源PolarDB MySQL版集群數據相同的集群。
Q:升級會影響源集群正常運行嗎?
A:不會。
Q:同步數據對源集群性能有影響嗎?
A:同步數據涉及查詢操作,會消耗源集群部分查詢性能。
Q:同步數據對業務有影響嗎?
A:同步數據能夠保證同步過程不丟失數據,停機(即暫停業務,不產生增量數據,而非停用數據庫)時間小于10分鐘,如果有需要還可以進行回滾。
Q:取消升級會有什么影響?
A:取消升級會有如下影響:
會切斷源集群到目標集群的同步鏈路,導致源集群和目標集群不再關聯。
目標集群恢復可讀可寫狀態,且不會自動釋放。若不再需要使用該集群,請盡快釋放,避免產生額外費用。
手動取消升級時可以選擇是否關閉集群的Binlog,自動取消升級時不會關閉Binlog。
說明關閉Binlog會帶來少量的寫入性能提升,Binlog關閉后,已有的Binlog文件會一直保留。您可以先縮短Binlog文件的保存時長,等待不需要的文件自動刪除后,再關閉Binlog。關閉Binlog后集群會自動重啟,重啟任務會在5分鐘之內完成,重啟時服務閃斷時間在40秒左右。具體時間與數據量和表數量相關,建議您在業務低谷期進行操作并確保應用程序具備重連機制。
Q:升級完成后,將業務切換至目標集群,應用程序端的連接地址是否需要修改?
A:您可以在升級切換時選擇帶地址切換(應用程序不用改連接配置),系統會自動交換源集群和目標集群的連接地址,而無需在應用程序端修改任何配置即可自動連接到目標集群。
Q:升級時選擇了帶地址切換(應用程序不用改連接配置),升級完成后,為什么目標集群仍然使用新的連接地址?
A:僅當源集群和目標集群同時存在的連接地址才支持相互交換,默認情況下,僅私網主地址支持帶地址切換。如需切換其他連接地址,您需要在切換前創建好對應的連接地址,否則不會切換。創建集群連接地址詳情請參見申請集群地址和主地址。
Q:業務切換成功后,為什么連接不上PolarDB數據庫,或連接成功但只支持讀操作而無法執行寫入操作?
A:切換域名后,可能會存在DNS解析緩存問題,在緩存過期時間內可能會出現連接不上數據庫或數據庫只支持讀操作而無法執行寫入操作等情況,建議您刷新一下服務器的DNS緩存。
Q:升級切換后,為什么在PolarDB控制臺上看不見完成升級按鈕?
A:若您已經執行過完成升級操作,為了避免您重復執行該操作,此按鈕將會被隱藏。
Q:升級成功后,還需要在目標集群中創建與源集群相同的賬號和密碼嗎?
A:不需要,升級后的集群中將包含源集群的賬號密碼、數據庫、IP白名單和必要的參數信息。
Q:源集群開啟了SSL,能否執行版本升級操作?
A:能,已開啟SSL的集群支持升級。
說明如果您選擇升級的集群的連接地址開啟了SSL,請確保目標集群對應的連接地址已開啟SSL。
Q:源集群開啟了TDE,能否執行版本升級操作?
A:能,已開啟TDE的集群支持升級。
Q:源集群開啟了SSL,能否升級至多主集群(庫表)?
A:能,但升級后的多主集群(庫表)不支持開啟SSL。
Q:源PolarDB MySQL版集群開啟了TDE,能否升級至多主集群(庫表)?
Q:能,但升級后的多主集群(庫表)不支持開啟TDE。
Q:若在大版本升級前,源PolarDB MySQL版集群已開啟了DTS數據同步任務,升級時是否會影響該任務?
A:不會。通過大版本升級進行遷移時,會先從源集群復制一份全量數據至一個新的PolarDB MySQL版集群,然后將增量數據保持同步至該新集群。源集群上DTS數據同步任務的數據源仍然是其自身,數據遷移至新的PolarDB MySQL版集群并不會影響源集群上的運行和操作。
在遷移切換后,源PolarDB變成只讀。若其作為DTS數據同步任務的數據目標端,將無法寫入。您需要將DTS數據同步任務的數據目標端修改成新PolarDB集群;若其作為DTS數據同步任務的數據源,也建議在遷移切換后盡快將DTS數據同步任務的數據源修改成新PolarDB集群。
目前僅支持通過OpenAPI修改DTS任務的源或目標庫實例,具體請參見修改DTS任務的源或目標庫實例。