TiDB Cloudで変更データをストリーミングするChangefeedを使って、S3に出力してみた
こんにちは、ゲームソリューション部のsoraです。
今回は、TiDB Cloudで変更データをストリーミングするChangefeedを使って、S3に出力してみたことについて書いていきます。
手順は以下を参考に進めていきます。
S3・IAMユーザの作成(AWS)
データの出力先のS3バケットを作成します。
S3バケットについて、この後の工程に作成するTiDB CloudのChangefeedを設定するクラスタと同じリージョンに作成します。
また、Changefeedを使用するためにアクセスキーが必要なため、IAMユーザの作成・アクセスキーの作成をします。
Changefeedの作成(TiDB Cloud)
Dedicatedクラスタの作成
ChangefeedはServerlessクラスタでは使用できない機能であり、Dedicatedクラスタのみ利用可能なため、Dedicatedクラスタを作成します。
リージョンは作成したS3バケットと同じリージョンを指定します。
Changefeedの作成
作成したクラスタのChangefeed>Create Changefeed
から作成します。
まずレプリケーション先を選択します。
今回はS3にしますが、KafkaやMySQL、TiDB Serverlessなどもあります。
TiDB Serverlessを指定する際は、リージョンの制限があるため注意が必要です。
(今回のバージニア北部では使用できないため、グレーアウトされています。)
次にレプリケーションの設定をします。
今回はテーブルが1つしかないため、テーブルフィルターは設定変更しません。
イベントによってレプリケーション対象外とするフィルタも設定できますが、今回は設定しません。
Start Replication Position
はどの地点からのレプリケーションを取るかの設定で、TSO等も設定できますが現在からとします。
フラッシュパラメータはレプリケーションの間隔と最大のファイルサイズを設定します。
今回はテスト用であり、間隔は初期設定から少し伸ばしています。
次にChangefeedに使用するRCUの指定と名前の設定をします。
RCUは最小の2RCUsとしています。
最後に設定項目を確認して、Submit
ボタンで作成できます。
作成が完了したため、データを1レコード追加してみます。
INSERT INTO prefecture (prefecture, prefectural_capital, area) VALUES
('Toyama', 'Toyama', 'Chubu');
その後、Changefeed作成時に設定したレプリケーション間隔を待ってみると、ステータスがRunning
に変わっていることが確認できました。
詳細を確認すると、変更したデータがレプリケーションされてそうに見えます。
レプリケーション先のS3を確認してみると、更新したデータが出力されていることが確認できました。
"I","prefecture","prefecture_db",16,"Toyama","Toyama","Chubu"
ちなみに、S3の中にはテーブルのスキーマ情報もメタデータとして出力されていました。
{
"Table": "prefecture",
"Schema": "prefecture_db",
"Version": 1,
"TableVersion": 452762721399603207,
"Query": "",
"Type": 0,
"TableColumns": [
{
"ColumnName": "id",
"ColumnType": "INT",
"ColumnPrecision": "11",
"ColumnNullable": "false",
"ColumnIsPk": "true"
},
{
"ColumnName": "prefecture",
"ColumnType": "VARCHAR",
"ColumnPrecision": "255",
"ColumnNullable": "false"
},
{
"ColumnName": "prefectural_capital",
"ColumnType": "VARCHAR",
"ColumnPrecision": "255",
"ColumnNullable": "false"
},
{
"ColumnName": "area",
"ColumnType": "VARCHAR",
"ColumnPrecision": "255",
"ColumnNullable": "false"
}
],
"TableColumnsTotal": 4
}
最後に
今回は、TiDB Cloudで変更データをストリーミングするChangefeedを使って、S3に出力してみたことを記事にしました。
どなたかの参考になると幸いです。