本シナリオでは、DTSを使用してTencent Cloud TDSQL for PostgreSQLのデータ購読タスクを作成する操作手順を紹介します。
前提条件
購読対象のTDSQL for PostgreSQLを準備し、データベースのバージョンが要件を満たしていることを確認してください。詳細はデータ購読がサポートするデータベースをご参照ください。 ソースインスタンスに購読アカウントを作成しました。必要なアカウント権限は以下の通りです:LOGINおよびREPLICATION権限。
LOGINおよびREPLICATIONの権限付与については、チケットを提出して処理してください。 購読アカウントは購読対象テーブルに対するselect権限を持っている必要があります。データベース全体を購読する場合は、購読アカウントはそのスキーマ内のすべてのテーブルに対するselect権限を持っている必要があります。具体的な権限付与ステートメントは以下の通りです:
grant SELECT on all tables in schema "schema_name" to '移行アカウント';
ユーザーはpg_catalog.pgxc_nodeテーブルに対するselect権限を持っている必要があります。具体的な権限付与ステートメントは以下の通りです:
grant SELECT on pg_catalog.pgxc_node to '移行アカウント';
DNノードのwal_levelはlogicalである必要があります。
サブスクライブされるテーブルが全レプリケーションテーブル(テーブル作成ステートメントにdistribute by replicationキーワードが含まれる)の場合、PKが必要です。サブスクライブされるテーブルが全レプリケーションテーブルでない場合、PKまたはREPLICA IDENTITYがFULLである必要があります。テーブルのREPLICA IDENTITYをFULLに変更するステートメントは以下の通りです:
alter table 'テーブル名' REPLICA IDENTITY FULL;
制約事項
購読したメッセージはDTS内蔵Kafka(単一Topic)に保存されます。現在のデフォルト保存期間は直近1日間で、単一Topicの最大ストレージは500Gです。データの保存期間が1日を超えた場合、またはデータ量が500Gを超えた場合、内蔵Kafkaは最初に書き込まれたデータから削除を開始します。そのため、データが消費される前に削除されないよう、ユーザーは速やかに消費してください。
データ消費の地域は、購読タスクが属する地域と同じである必要があります。
現在、gtsvector、pg_dependencies、pg_node_tree、pg_ndistinct、xml関連のデータ型はサポートされていません。
データ購読ソースがTDSQL for PostgreSQLの場合、権限付与ステートメントを直接実行して権限を付与することはサポートされていません。そのため、購読アカウントの権限は、TDSQLコンソールでインスタンスIDをクリックし、インスタンスのログイン情報を取得した後、クライアントからデータベースにログインしてアカウント権限を付与する必要があります。 購読タスク中に購読対象の変更などの操作を行うと、タスクの再起動が発生します。再起動後、ユーザーがkafkaクライアントでデータを消費する際に重複が発生する可能性があります。
DTSは最小データユニット単位で伝送を行います。増分データは、checkpointの位置が1つマークされるごとに1つのデータユニットとなります。再起動時に、ちょうど1つのデータユニットの伝送が完了している場合は、データの重複は発生しません。再起動時に、1つのデータユニットがまだ伝送中である場合は、再度起動した後にこのデータユニットを再取得してデータの整合性を保つ必要があるため、データの重複が発生します。
ユーザーが重複データを気にする場合は、データを消費する際に重複排除ロジックを設定してください。
サポートされるSQL操作
操作手順
1. DTSコンソールにログインし、左側のナビゲーションでデータ購読を選択し、新しいデータ購読をクリックします。 2. 新しいデータ購読ページで、対応する設定を選択し、今すぐ購入をクリックします。
課金モード:年額・月額課金と従量課金をサポートします。
地域:地域は、購読対象のデータベースインスタンスの購読と一致している必要があります。
データベース:具体的なデータベースタイプに応じて選択してください。
バージョン:Kafka版を選択します。Kafkaクライアントから直接消費できます。
購読インスタンス名:現在のデータ購読インスタンスの名前を編集します。
3. 購入が成功した後、データ購読リストに戻り、操作列の購読の設定をクリックして、購入したばかりの購読を設定します。設定が完了してから使用できます。
4. データ購読の設定ページで、対応する設定を選択し、次へをクリックします。
インスタンス:対応するデータベースインスタンスを選択します。読み取り専用インスタンスと災害復旧インスタンスはデータ購読をサポートしません。
データベースアカウント:購読インスタンスのアカウントとパスワードを追加します。アカウントにはLOGIN、REPLICATION権限、および全オブジェクト、pg_catalog.pgxc_nodeテーブルに対するSELECT権限が必要です。
5. 購読タイプと対象選択ページで、購読タイプを選択し、設定を保存をクリックします。
購読タイプはデータ更新です(購読選択対象のデータ更新であり、データのINSERT、UPDATE、DELETE操作を含みます)。
Kafkaパーティションポリシー:テーブル名によるパーティショニングをサポートします。
6. 事前検証ページでは、事前検証タスクの実行に2分~3分かかると予想されます。事前検証が完了した後、開始をクリックしてデータ購読タスクの設定を完了します。
説明:
検証に失敗した場合、失敗のプロンプトに従って購読対象インスタンスで修正し、再度検証を行ってください。
7. 開始をクリックすると、購読タスクは初期化され、3分~4分かかると予想されます。初期化が成功すると、実行中状態になります。
8. 消費グループを追加、データ購読Kafka版はユーザーが複数の消費グループを作成し、マルチポイント消費を行うことをサポートします。データ購読Kafka版の消費はKafkaの消費グループに依存するため、データを消費する前に消費グループを作成する必要があります。 9. 購読インスタンスが実行中状態になると、データの消費を開始できます。Kafkaの消費にはパスワード認証が必要です。具体的な例についてはデータ消費Demoを参照してください。複数言語のDemoコードを提供しており、消費の主な流れと主要なデータ構造についても説明しています。