Maxwellは、MySQLのBinlogを読み取り、JSON形式で出力するアプリケーションです。データベース内のすべてのデータ変更イベントをキャプチャすることを目的としています。本記事では、Maxwellを使用してOB CloudのMySQL互換モードテナントのデータをJSON形式で出力する方法について説明します。
前提条件
Maxwellを使用する前に、以下の事項を確認してください:
- OB CloudのMySQL Binlogが有効になっていること。詳細については、手順をご参照ください。
- Java 1.8以降のバージョンがインストールされていること。
- Maxwellがダウンロード済みであること。詳細については、MaxwellのGitHubプロジェクトをご参照ください。
操作手順
OB CloudのBinlogサービスを有効にします。 Binlogログサービスを有効にするパス:インスタンスリスト -> テナント管理 -> Binlogサービスで、「開始」をクリックします。詳細については、Binlogログサービスの開始をご参照ください。
Maxwellを設定します。 Maxwellディレクトリ内の
config.propertiesファイルを編集します。このファイルがない場合は、config.properties.exampleをconfig.propertiesにコピーして編集します。user=maxwell password=yourpassword host=送信元OB Cloud MySQLサーバーアドレス producer=stdoutこの設定により、Maxwellはイベントを標準出力(コンソール)に直接出力するように設定されます。データをKafkaなど他のターゲットに送信するには、producerプロパティおよび関連設定を変更する必要があります。
Maxwellを起動します。
以下のコマンドでMaxwellを起動します:
bin/maxwell --config config.propertiesデータ変更を確認します OB Cloudデータベースでデータ変更(挿入、更新、削除など)を実行し、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テーブルに挿入操作が実行されたことを示しています。
注意
OB CloudはV4.1.0からラテン文字セットをサポートしています。OB Cloudを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)
);
便宜上、本記事では単一の表示例のみを提供しています。他のメタデータテーブルに対しても同様の操作を実行してください。