本文介紹在雲資料庫 ClickHouse 企業版叢集之間進行資料移轉的方法。該方法利用remote函數,通過執行一個帶有嵌套SELECT的INSERT INTO語句,即可實現高效、直接的資料複製,完成資料移轉。
適用情境
從還原的備份中遷移資料。
從開發服務複製資料到預發服務(或從預發到生產)。
操作步驟
步驟一:配置源叢集許可權並擷取表結構
建立唯讀使用者,用於資料移轉時查詢源叢集資料。
CREATE USER exporter IDENTIFIED WITH SHA256_PASSWORD BY 'password-here' SETTINGS readonly = 1;授予特定資料庫表的查詢許可權。
GRANT SELECT ON test_db.test_tb TO exporter;擷取源表結構。
SELECT create_table_query FROM system.tables WHERE database = 'test_db' AND TABLE = 'test_tb'
步驟二:在目的地組群上建立表結構
建立資料庫。
CREATE DATABASE test_db使用步驟一中擷取的源表結構(
CREATE TABLE語句),在目標資料庫上建立表。CREATE TABLE test_db.test_tb ...
步驟三:設定白名單
資料移轉過程中,源叢集和目的地組群必須允許互相串連,需完成以下設定:
說明
您可以通過SELECT * FROM system.clusters;查看雲資料庫 ClickHouse 企業版叢集的IP地址。
步驟四:執行資料移轉
執行以下SQL,通過remote函數從源叢集中讀取資料並插入到目標表中。
INSERT INTO test_db.test_tb
SELECT *
FROM remote(
'source-hostname:9000', -- 源叢集的訪問地址和連接埠
'test_db', -- 來源資料庫名稱
'test_tb', -- 源表名稱
'exporter', -- 使用者名稱
'password-here' -- 使用者密碼
);步驟五:(可選)安全配置與環境清理
為目的地組群建立IP訪問列表。
資料移轉完成後,如需將目的地組群作為新的生產環境對外提供服務,需設定白名單。
刪除源叢集的唯讀使用者。
DROP USER exporter;在源叢集的白名單設定中,刪除本次遷移添加的目的地組群IP地址。