Maxwellは、MySQL Binlogを読み取り、JSONフォーマットに変換して出力するアプリケーションです。これは、データベース内のすべてのデータ変更イベントをキャッチすることを目的としています。本記事では、Maxwellを使用してOceanBaseデータベースのMySQLテナントデータをJSON形式で出力する方法について説明します。
前提条件
Maxwellを使用する前に、以下の情報を確認してください:
- 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)
);
便宜上、本記事では単一テーブルの例のみを示します。他のメタデータテーブルに対しても、同様の操作を実行してください。