このトピックでは、セルフマネージドClickHouseクラスターからApsaraDB for ClickHouse Enterprise Editionクラスターにデータを移行し、ApsaraDB for ClickHouse Enterprise Editionクラスター間でデータを移行する方法について説明します。 remote
関数は、SELECT
およびINSERT
クエリで使用して、自己管理ClickHouseサーバーへのアクセスを許可できます。 したがって、SELECT
クエリが埋め込まれたINSERT INTO
クエリを記述することで、テーブルを移行できます。
次の図は、セルフマネージドClickHouseクラスターからApsaraDB for ClickHouse Enterprise Editionクラスターにデータを移行し、ApsaraDB for ClickHouse Enterprise Editionクラスター間でデータを移行する方法を示しています。
セルフマネージドClickHouseクラスターからApsaraDB for ClickHouse Enterprise Editionクラスターへのデータの移行
ApsaraDB For ClickHouse Enterprise Editionの場合、ソーステーブルがシャードまたはレプリケートされているかどうかに関係なく、宛先テーブルを作成するだけで済みます。 システムはSharedMergeTreeテーブルエンジンを自動的に使用するため、ターゲットテーブルのEngineパラメーターは省略できます。 ApsaraDB for ClickHouse Enterprise Editionは、垂直方向と水平方向の自動スケーリングを実行します。 テーブルを複製してシャードする方法について心配する必要はありません。
この例では、セルフマネージドClickHouseクラスターをソースクラスターと呼び、ApsaraDB for ClickHouse Enterprise Editionクラスターをターゲットクラスターと呼びます。
概要
次のセクションでは、セルフマネージドClickHouseクラスターからApsaraDB for ClickHouse Enterprise Editionクラスターにデータを移行する手順について説明します。
読み取り専用ユーザーをソースクラスターに追加します。
ソーステーブルスキーマをターゲットクラスターにコピーします。
外部ネットワーク経由でソースクラスタにアクセスできる場合は、ソースクラスタからターゲットクラスタにデータをプルします。 外部ネットワーク経由で送信元クラスターにアクセスできない場合は、送信元クラスターから送信先クラスターにデータをプッシュします。
(オプション) 送信元クラスターのIPアドレスを送信先クラスターのIPアドレスホワイトリストから削除します。
ソースクラスターから読み取り専用ユーザーを削除します。
手順
ソースクラスターで次の操作を実行します。 ソーステーブルにデータが含まれていることを確認します。
ソーステーブルを読み取ることができる読み取り専用ユーザーを追加します。 この例では、db.tableが使用されます。
CREATE USER exporter IDENTIFIED WITH SHA256_PASSWORD BY 'password-here' SETTINGS readonly = 1;
GRANT SELECT ON db.table TO exporter;
ソーステーブルスキーマをコピーします。
SELECT create_table_query FROM system.tables WHERE database = 'db' and table = 'table'
移行先クラスターで次の操作を実行します。
データベースを作成します。
CREATE DATABASE db
ソースデータテーブルの作成に使用される
Create table
ステートメントを使用して、ターゲットデータテーブルを作成します。説明CREATE TABLE
ステートメントを実行するときに、ENGINEパラメーターの値をSharedMergeTreeに変更します。 ただし、ApsaraDB for ClickHouse Enterprise Editionクラスターは常にテーブルを複製し、正しいパラメーターを提供するため、エンジンに他のパラメーターを指定することはできません。ORDER BY
、PRIMARY KEY
、PARTITION BY
、SAMPLE BY
、TTL
、およびSETTINGS
句は、テーブルのスキーマとメタデータを定義します。 これらの句を保持して、ターゲットテーブルがターゲットApsaraDB for ClickHouse Enterprise Editionクラスターで期待どおりに作成されるようにします。CREATE TABLE db.table ...
リモート
機能を使用して、データをプルまたはプッシュします。説明ソースClickHouseサーバーが外部ネットワークから利用できない場合は、
リモート
機能が選択操作と挿入操作で機能するため、データをプルする代わりにデータをプッシュできます。移行先クラスターで
リモート
関数を使用して、移行元クラスターの移行元テーブルからデータを取得します。
INSERT INTO db.table SELECT * FROM remote('source-hostname:9000', db, table, 'exporter', 'password-here')
送信元クラスターで
リモート
機能を使用して、送信先クラスターにデータをプッシュします。説明リモート
機能を有効にしてApsaraDB for ClickHouse Enterprise Editionクラスターに接続するには、移行元クラスターのIPアドレスを移行先クラスターのIPアドレスホワイトリストに追加する必要があります。 詳細は、ホワイトリストの構成をご参照ください。INSERT INTO FUNCTION remote('target-hostname:9000', 'db.table', 'default', 'PASS') SELECT * FROM db.table
ApsaraDB for ClickHouse Enterprise Editionクラスター間でデータを移行する
次のシナリオでは、ApsaraDB for ClickHouse Enterprise Editionクラスター間でデータを移行できます。
復元したバックアップからデータを移行します。
開発サービスからステージングサービスに、またはステージングサービスから本番サービスにデータをコピーします。
この例では、ApsaraDB for ClickHouse Enterprise Editionの2つのクラスターが使用されています。 一方はソースクラスタと呼ばれ、他方は宛先クラスタと呼ばれる。
概要
次のセクションでは、ApsaraDB for ClickHouse Enterprise Editionクラスター間でデータを移行する手順について説明します。
1つのApsaraDB for ClickHouse Enterprise Editionクラスターをソースクラスターとして、もう1つをターゲットクラスターとして特定します。
読み取り専用ユーザーをソースクラスターに追加します。
ソーステーブルスキーマをターゲットクラスターにコピーします。
送信元クラスターのIPアドレスから送信先クラスターへのアクセスを一時的に許可します。
ソースクラスターからターゲットクラスターにデータをコピーします。
宛先クラスターでIPアクセスリストを再確立します。
ソースクラスターから読み取り専用ユーザーを削除します。
手順
ソースクラスターで次の操作を実行します。
ソーステーブルを読み取ることができる読み取り専用ユーザーを追加します。 この例では、db.tableが使用されます。
CREATE USER exporter IDENTIFIED WITH SHA256_PASSWORD BY 'password-here' SETTINGS readonly = 1;
GRANT SELECT ON db.table TO exporter;
ソーステーブルスキーマをコピーします。
SELECT create_table_query FROM system.tables WHERE database = 'db' and table = 'table'
ソーステーブルスキーマをターゲットクラスターにコピーします。
データベースを作成します。
CREATE DATABASE db
ソーステーブルの作成に使用する
Create table
ステートメントを使用して、ターゲットデータベースにテーブルを作成します。CREATE TABLE db.table ...
ソースクラスターの
SELECT CREATE_TABLE_QUERY...
の出力を使用して、宛先テーブルを作成します。ソースクラスターでのリモート操作を許可します。
送信元クラスターから送信先クラスターにデータをプルするには、送信元クラスターと送信先クラスターが相互の接続を許可する必要があります。 次の操作を実行します。
送信元クラスターのIPアドレスを送信先クラスターのIPアドレスホワイトリストに追加します。
送信元クラスターのIPアドレスホワイトリストに送信先クラスターのIPアドレスを追加します。
説明SELECT * FROM system.clusters;
ステートメントを実行すると、ApsaraDB for ClickHouse Enterprise EditionクラスターのIPアドレスを表示できます。 ホワイトリストを変更する方法の詳細については、「ホワイトリストの設定」をご参照ください。ソースクラスターからターゲットクラスターにデータをコピーします。
リモート
機能を使用して、ソースクラスターからデータを取得します。 宛先クラスターに接続し、宛先クラスターで次のコマンドを実行してデータを確認します。INSERT INTO db.table SELECT * FROM remote('source-hostname:9000', db, table, 'exporter', 'password-here')
ソースクラスターのIPアクセスリストを復元します。
以前にアクセスリストをエクスポートした場合は、共有を使用してアクセスリストを再度インポートできます。 それ以外の場合は、IPアドレスを再度アクセスリストに追加します。
読み取り専用のエクスポータユーザーを削除します。
DROP USER exporter
送信元および送信先クラスターへのアクセスに使用されるIPアドレスを削除します。 詳細は、ホワイトリストの構成をご参照ください。