為了(le)避免分(fen)片變(bian)更(geng)失(shi)敗(bai),請您(nin)最晚在變(bian)更(geng)前一天完成以下(xia)內(nei)容的檢(jian)查。
預檢查內容
| 檢查內容 | 檢查目的 | 檢查未通過解決方案 |
|---|---|---|
| 數據庫實例binlog備份時間檢查 | 客戶全量備份是否保留足夠長時間。 | 進入DN console,增加全量備份天數。 |
| DN節點binlog必須開啟 | Binlog必須開啟以支持在線變更。 | 若您的DN節點是RDS實例,無需解決。若您的DN節點是Taurus實例,請進入Taurus console 參數配置,設置log_bin=true。 |
| DN節點binlog本地保留時間檢查 | Binlog在DN節點上的保留時間必須足夠長。 | 若您的DN節點是RDS實例,無需解決。若您的DN節點是Taurus實例,請進入Taurus console 參數配置,設置binlog_expire_logs_seconds 為604800或更大。 |
| 廣播表數據一致性檢查 | 保證廣播表數據一致后再執行分片變更。 | 請聯系DRDS運維人員。 |
| 源物理分片的字符集和排序規則檢查 | 保證分片變更后字符的展示和排序一致。 | 請聯系DRDS運維人員。 |
| 物理表建表語句檢查 | 保證各物理分片上的表結構保持一致。 | 請先使用check table 命令查詢表結構不一致詳情,之后再使用alter 語法對表進行修正。 |
| 主鍵檢查 | 要求源庫所有表都具有主鍵,且拆分鍵是主鍵一部分以保證分片變更后數據一致性。 | 如果表不存在主鍵,請使用alter語句增加主鍵。 |
| 數據庫實例鏈接檢查 | DN節點是否可連接。 | 檢查安全組等配置。 |
| 數據庫實例參數檢查 | 源DN節點和目標DN節點數據庫關鍵參數配置需要相同。 | 請進入DN console對參數配置進行修改。 |
| 數據庫實例磁盤空間檢查 | 防止分片變更過程中,DN節點磁盤不足。 | 對DN節點進行磁盤擴容,注:本項檢查根據估計值進行判斷,極端情況下與實際值有一定差別。 |
| 數據庫實例時區檢查 | 源DN節點和目標DN節點時區要求相同。 | 請進入DN console參數配置對時區進行修改請進入DN console參數配置對時區進行修改。 |
常見問題和解決方案
1.物理(li)表(biao)結(jie)構不一致導(dao)致擴容失敗。
解(jie)決方案:請(qing)先使(shi)用check table語句(ju)對表(biao)結構(gou)做一致(zhi)性(xing)檢查,并配合alter table等(deng)語句(ju)對表(biao)結構(gou)做修正。如(ru)果(guo)無(wu)(wu)法進行DDL修正(如(ru)主鍵、唯一鍵因為數(shu)據原因無(wu)(wu)法修改),請(qing)聯系運(yun)維人員(yuan)處理。
2.沒有主(zhu)鍵的表不(bu)支持遷移。 如(ru)果沒有主(zhu)鍵,就無法精(jing)確定位(wei)記(ji)錄,在分片(pian)變更(geng)過程中若發(fa)生(sheng)重試,可能導致數(shu)據(ju)增多。
解(jie)決方案:增加主鍵。
3.分(fen)片鍵(jian)不是主鍵(jian)的(de)一(yi)部分(fen)可能導致(zhi)邏輯表存(cun)在主鍵(jian)重復(fu)的(de)數(shu)據(因為(wei)位于(yu)不同的(de)物理(li)分(fen)表內)。當數(shu)據需要(yao)重分(fen)布時,這類數(shu)據如果(guo)路由到同一(yi)物理(li)表,由于(yu)主鍵(jian)相同,將只會保留(liu)一(yi)條,必(bi)定會導致(zhi)遷(qian)移后的(de)數(shu)據量和原來不一(yi)致(zhi),而導致(zhi)分(fen)片變更失(shi)敗。
主鍵是全局唯一序(xu)列和分片數(shu)不變化(hua)的(de)情況下(xia)不會發生此種錯誤。
解決方案:訂正(zheng)數據,再(zai)重新校驗。