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を起動します:
```shell
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)
);
便宜上、本記事では単一テーブルの例のみを提供しています。他のメタデータテーブルに対しても同じ操作を実行してください。