このトピックでは、ApsaraDB for ClickHouse Enterprise Edition クラスター間でデータを移行する方法について説明します。この方法では、remote 関数を使用して、ネストされた SELECT を含む INSERT INTO 文を実行します。このプロセスにより、移行のための効率的かつ直接的なデータレプリケーションが可能になります。
利用シーン
復元されたバックアップからのデータ移行。
開発サービスから準本番サービスへ、または準本番サービスから本番サービスへのデータコピー。
操作手順
ステップ 1:ソースクラスターの権限設定とテーブルスキーマの取得
データ移行中にソースクラスターからデータをクエリするための読み取り専用ユーザーを作成します。
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'
ステップ 2:ターゲットクラスターでのテーブルスキーマの作成
データベースを作成します。
CREATE DATABASE test_dbステップ 1 で取得したソーステーブルのスキーマ (
CREATE TABLE文) を使用して、ターゲットデータベースにテーブルを作成します。CREATE TABLE test_db.test_tb ...
ステップ 3:ホワイトリストの設定
データ移行中、ソースクラスターとターゲットクラスターは相互に接続できる必要があります。この接続を有効にするには、次の設定を行います:
SELECT * FROM system.clusters; を実行すると、ApsaraDB for ClickHouse Enterprise Edition クラスターの IP アドレスを表示できます。
ステップ 4:データ移行の実行
次の SQL 文を実行して、remote 関数を使用し、ソースクラスターからデータを読み取り、ターゲットテーブルに挿入できます。
INSERT INTO test_db.test_tb
SELECT *
FROM remote(
'source-hostname:9000', -- ソースクラスターのエンドポイントとポート
'test_db', -- ソースデータベース名
'test_tb', -- ソーステーブル名
'exporter', -- ユーザー名
'password-here' -- ユーザーパスワード
);ステップ 5:(オプション) セキュアな構成と環境のクリーンアップ
ターゲットクラスターの IP アドレスアクセスリストを作成します。
データ移行が完了した後、ターゲットクラスターが新しい本番環境として機能する場合は、ホワイトリストを設定します。
ソースクラスターから読み取り専用ユーザーを削除します。
DROP USER exporter;ソースクラスターのホワイトリストからターゲットクラスターの IP アドレスを削除します。