當您計劃切換雲資料庫 ClickHouse 社區相容版叢集的版本時,可以使用雲資料庫ClickHouse控制台的執行個體遷移功能進行資料移轉。該功能支援資料的全量遷移和增量遷移,從而保證了您資料的完整性。
前提條件
源叢集和目的地組群均需具備的條件:
均為社區相容版叢集。
說明如果您的需求是將社區版叢集遷移至企業版叢集,或者企業版叢集遷移至社區版叢集,請參見ClickHouse社區版叢集遷移至企業版叢集。
均處於運行中狀態。
均已具有資料庫帳號和密碼。
二者冷熱分層狀態一致。
二者使用相同的VPC且在同一地區,並已將彼此的IP添加到了對方白名單中。如果不滿足此條件,請先解決網路問題。具體操作,請參見如何解決目的地組群與資料來源網路互連問題。
說明您可以通過
SELECT * FROM system.clusters;查看雲資料庫ClickHouse執行個體的IP地址。如何設定白名單,請參見設定白名單。
目的地組群需額外滿足如下條件:
版本高於或等於源叢集版本。最新版本,請參見社區相容版。
未使用磁碟儲存空間(不包含冷存)大於或等於源叢集已使用磁碟儲存空間(不包括冷存)的1.2倍。
源叢集的所有本地表都需要具有唯一的分布式表。
注意事項
遷移速度:正常情況下,通過控制台遷移資料時,目的地組群單節點的遷移速度大於20MB/s。如果源叢集單節點的業務資料寫入速度也大於20MB/s,您需評定目標叢集遷移速度是否能夠追上源叢集寫入速度。如果目的地組群遷移速度無法追趕上源叢集寫入速度,則遷移可能一直無法完成。
遷移過程中,目的地組群會暫停合并(Merge),但源叢集不會。
支援遷移的內容包含叢集、庫、表、資料字典、物化視圖、使用者權限和叢集配置。
只支援遷移SQL建立的資料字典,不支援通過XML建立的資料字典。
確認方法:
SELECT * FROM system.dictionaries WHERE (database = '') OR isNull(database);,如果SQL存在返回結果,代表有XML建立的資料字典。資料字典訪問外部服務時,請確保外部服務可用且為叢集開放白名單;資料字典的資料來源為當前ClickHouse的內表資料時,如果定義中
HOST參數配置的是IP地址,遷移後可能會因IP變更而導致訪問失敗,需重新確認當前ClickHouse的HOST並手動建立資料字典。
不支援遷移Kafka和RabbitMQ引擎表。
遷移資料量:
冷資料:冷存資料的遷移速度相對較慢,建議您盡量清理自建叢集中的冷存資料,以確保其總量不超過1TB。否則,遷移時間過長可能會導致遷移失敗。
熱資料:熱資料如果超過10TB,遷移任務失敗率比較高,不建議您使用此方案進行遷移。
如果資料不滿足上述條件,遷移方案可選擇手動遷移。
遷移內容:
為保證Kafka和RabbitMQ資料不分流,請先清理源叢集的Kafka和RabbitMQ引擎表後,再在目的地組群建立,或者使用不同的消費者組。
非MergeTree類型的表(例如外表、Log表等)僅支援遷移表結構。
當源叢集存在非MergeTree類型的表時,資料移轉後,目的地組群此類表只有表結構,沒有具體的業務資料。具體業務資料移轉可以使用remote函數進行遷移。具體操作,請參見通過remote函數進行資料移轉。
叢集影響
源叢集:遷移過程中,支援對源叢集的表進行讀取與寫入資料操作,但不支援DDL操作(增、刪、改庫表的中繼資料操作)。
重要為了保證遷移任務正常完成,當控制台上資料移轉的預計剩餘時間小於等於10分鐘時,源叢集會在預設的停寫時間視窗內自動暫停資料寫入。
在預設的停寫時間範圍內資料全部遷移完成,或超出源叢集預設的停寫時間範圍仍未完成資料移轉,源叢集都會自動回復資料寫入。
目的地組群:遷移結束後,目的地組群會持續一段時間高頻merge操作,這會導致IO使用率上升,從而引起業務請求的延遲增加。建議您提前規劃以應對業務請求延遲的潛在影響。具體merge操作時間,您需自己計算。如何計算,請參見計算遷移結束後的merge時間。
操作步驟
以下操作均在目的地組群完成,而非源叢集。
步驟一:建立遷移任務
在叢集列表頁面,選擇社區版執行個體列表,單擊目的地組群ID。
在左側導覽列,單擊。
在執行個體遷移頁面,單擊建立遷移任務。
配置源執行個體與目標執行個體。
配置以下資訊,單擊測試連接進行下一步。
說明測試連接成功後,進入下一個步驟。如果測試連接失敗,請根據提示,重新設定源執行個體和目標執行個體。

確認遷移內容。
仔細閱讀頁面中資料移轉的包含內容提示資訊,單擊下一步:預檢測並啟動同步。
後台遷移鏈路預檢測並啟動任務。
後台會對目標執行個體和源執行個體進行執行個體狀態檢測、儲存空間檢測和本地表和分布式表檢測。
檢測成功:
仔細閱讀頁面遷移過程中對執行個體的影響提示內容。
設定停寫時間。
說明遷移的最後10分鐘需要源叢集停止寫入,以確保資料的一致性。
為了保證遷移的成功率,建議您停寫時間至少設定30分鐘。
遷移任務必須在任務啟動(即任務建立完成)後的5天內結束,因此,源叢集停寫時間的結束日期必須小於或等於
當前日期+5。為了降低遷移對您業務的影響,建議您設定的停寫時間範圍處於您的業務低峰時段。
單擊完成。
說明單擊完成後,任務建立完成且啟動任務。
檢測失敗:您需要按照提示資訊進行操作,重新進行資料移轉。檢測內容及要求如下。
檢測專案
檢測要求
執行個體狀態檢測
遷移發起時,源叢集和目的地組群不能有正在啟動並執行管控任務(包含擴容,升降配等)。如果當前源叢集和目的地組群有管控任務正在運行,則不能發起遷移任務。
儲存空間檢測
遷移進行前,進行儲存空間校正。保證目的地組群的儲存空間大於等於源叢集的儲存空間的1.2倍。
本地表和分布式表檢測
如果源叢集存在本地表沒有建立分布式表或者分布式表不唯一,則校正失敗。請刪除多餘的分布式表或建立唯一分布式表。
步驟二:評估遷移是否可以完成
如果源群的寫入速度小於 20MB/s,您可跳過此步驟。
如果源叢集的寫入速度大於 20MB/s,由於目的地組群理論上單節點寫入速度也大於 20MB/s。為了確保目的地組群的寫入速度能夠趕上源叢集的寫入速度,從而順利完成遷移,您需要檢查目的地組群的真實寫入速度,以評估遷移的可行性。具體操作如下:
步驟三:查看遷移任務
在叢集列表頁面,選擇社區版執行個體列表,單擊目的地組群ID。
在左側導覽列,單擊執行個體遷移。
在執行個體遷移列表頁面,查看遷移任務的遷移狀態、運行階段資訊、停寫視窗。
說明當運行階段資訊列中資料移轉的預計剩餘時間小於等於 10 分鐘時,且遷移狀態為遷移進行中時,為了確保資料的一致性,將觸發源叢集停寫。停寫規則如下:
觸發時間在源叢集預設的停寫時間範圍內,源叢集停寫。
觸發時間不在源叢集預設的停寫時間範圍內,且小於或等於
任務啟動(即任務建立)日期+5,您可通過修改停寫視窗時間,繼續遷移任務。觸發時間不在源叢集預設的停寫時間範圍內,且大於
任務啟動(即任務建立)日期+5,遷移失敗。您需取消遷移任務,並清理目的地組群中已遷移的資料,重新建立遷移任務,發起遷移。
步驟四:(可選)取消遷移任務
在叢集列表頁面,選擇社區版執行個體列表,單擊目的地組群ID。
在左側導覽列,單擊執行個體遷移。
在目標遷移任務的操作列,單擊取消遷移。
在取消遷移對話方塊,單擊確定。
說明取消遷移後,工作清單不會立即更新,建議您,通過間隔重新整理查看任務狀態。
任務取消後,任務的遷移狀態會變成已完成。
在您重新發起遷移之前,必須先清理目的地組群中已遷移的資料,避免出現資料重複的情況。
步驟五:(可選)修改停寫視窗時間
在叢集列表頁面,選擇社區版執行個體列表,單擊目的地組群ID。
在左側導覽列,單擊執行個體遷移。
在目標遷移任務的操作列,單擊修改停寫視窗。
在修改停寫視窗對話方塊,選擇停寫時間。
說明停寫時間設定規則,與建立遷移任務中停寫時間的設定一致。
單擊確定。
相關文檔
如何從自建的ClickHouse將資料移轉至雲資料庫ClickHouse,請參見將自建ClickHouse資料移轉至雲ClickHouse社區相容版。