Maxwellは、MySQL Binlogを読み取り、JSON形式で出力するアプリケーションです。データベース内のすべてのデータ変更イベントをキャプチャすることを目的としています。本記事では、Maxwellを使用してOceanBaseデータベースのMySQLテナントのデータをJSON形式で出力する方法について説明します。
前提条件
Maxwellを使用する前に、以下の情報を確認してください:
- oblogproxyがインストール済みであること。詳細については、oblogproxyのインストールドキュメントを参照してください。
- Java 1.8以降のバージョンがインストールされていること。
- Maxwellをダウンロード済みであること。詳細については、MaxwellのGitHubプロジェクトを参照してください。
手順
Maxwellを設定します。 Maxwellディレクトリ内の
config.propertiesファイルを編集します。このファイルがない場合は、config.properties.exampleをconfig.propertiesにコピーして編集します。user=maxwell password=yourpassword host=ソースOceanBaseデータベースのMySQLサーバーアドレス producer=stdoutこの設定では、Maxwellはイベントを標準出力(コンソール)に直接出力するように設定されます。データをKafkaなど他のターゲットに送信するには、producerプロパティおよび関連設定を変更する必要があります。
Maxwellを起動します。
以下のコマンドでMaxwellを起動します:
bin/maxwell --config config.propertiesデータ変更を確認します OceanBaseデータベースでデータ変更(挿入、更新、削除など)を行った後、Maxwellが出力するJSONデータを確認します。手順3のコマンドにより、Maxwellの出力は標準出力(stdout)に設定されます。返される結果は次のとおりです:
{ "database": "mydb", "table": "mytable", "type": "insert", "ts": 1589372847, "xid": 12345678, "commit": true, "data": { "id": 1, "column1": "value1", "column2": "value2" } }実行結果は、
mydb.mytableテーブルに挿入操作が実行されたことを示しています。
注意
OceanBaseデータベースはV4.1.0からラテン文字セットをサポートしています。OceanBaseデータベースをMaxwellのメタデータベースとして使用し、かつV4.1.0より前のバージョンを使用している場合は、Maxwellのメタデータテーブルを手動で構築する必要があります。
例えば、ここではMaxwellのテーブル作成ステートメントからlatin1文字セットを削除しています。
CREATE TABLE IF NOT EXISTS `databases` (
id bigint auto_increment NOT NULL primary key,
schema_id bigint,
name varchar(255) charset 'utf8',
charset varchar(255),
index (schema_id)
);
便宜上、本記事では単一テーブルの例のみを提供しています。他のメタデータテーブルに対しても同じ操作を実行してください。