SeaTunnelは、分散型で高い拡張性を備えたデータ統合プラットフォームであり、さまざまなデータストレージシステム間でデータを転送するために使用されます。SeaTunnelは設定が容易なデータストリームタスクプラグインを提供し、ユーザーがデータ処理と変換のプロセスを定義できるようにします。SeaTunnelの詳細については、SeaTunnelのGitHubアドレスを参照してください。
前提条件
データを同期する前に、以下の事項を確認してください:
- SeaTunnelをダウンロード済みであること。
- Java 1.8以降のバージョンをインストール済みであること。
- MySQLドライバーを
libディレクトリにダウンロード済みであること。 - oblogproxyをインストール済みであること。詳細については、oblogproxyのインストールドキュメントを参照してください。
SeaTunnelのMySQL CDCソースコネクタを使用して、OceanBaseデータベースのMySQLテナントでSQLクエリを実行する方法について説明します。connector-cdc-mysqlはSeaTunnelのプラグインであり、MySQLデータベース内のリアルタイム変更データ(Change Data Capture、CDC)をキャプチャし、ストリーミングで転送するために使用されます。
操作手順
以下の手順に従って、OceanBaseデータベースのMySQLテナント間でデータを同期します:
SeaTunnelユーザーを作成します。
CREATE USER 'ユーザー名'@'%' IDENTIFIED BY 'パスワード'; GRANT SELECT ON *.* TO 'ユーザー名';config/plugin_configを設定します。
connector-cdc-mysqlを指定し、sh bin/install-plugin.sh 2.3.3を実行します。
- SeaTunnelを設定します。
設定ファイルconfig/v2.streaming.conf.templateを修正します:
```yml
source {
# This is a example source plugin **only for test and demonstrate the feature source plugin**
MySQL-CDC {
result_table_name = "fake"
parallelism = 1
server-id = 5656
username = "ユーザー名"
password = "パスワード"
table-names = ["seatunnel.full_types"]
base-url = "jdbc:mysql://xx.xxx.x.xx:2881/seatunnel"
}
# If you would like to get more information about how to configure SeaTunnel and see full list of source plugins,
# please go to https://seatunnel.apache.org/docs/category/source-v2
}
```
- SeaTunnelを起動します。
以下のコマンドを実行して、SeaTunnelを起動します:
```shell
./bin/seatunnel.sh --config ./config/v2.streaming.conf.template -e local
```
SeaTunnelのJDBC OceanBase Source ConnectorとJDBC OceanBase Sink Connectorを使用したデータの同期について説明します。JDBC OceanBase Source Connectorは、OceanBaseの単一テーブルデータのフル読み取りと書き込みをサポートします。詳細については、JDBC OceanBase Source Connectorを参照してください。JDBC OceanBase Sink Connectorは、OceanBaseの複数テーブルデータのフル読み取りと書き込みをサポートします。詳細については、JDBC OceanBase Sink Connectorを参照してください。
操作手順
以下の手順に従って、OceanBaseデータベースのMySQLテナント間でデータを同期します:
SeaTunnelユーザーを作成します。
CREATE USER 'ユーザー名'@'%' IDENTIFIED BY 'パスワード'; GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'ユーザー名';config/plugin_configを設定します。OceanBase JDBCドライバーを
libディレクトリにダウンロードします。詳細については、OceanBase Clientを参照してください。SeaTunnelを設定します。
設定ファイルconfig/ob_to_obを変更します:
```yml
env {
parallelism = 1
job.mode = "BATCH"
}
source {
# これは、SeaTunnelソースプラグインの機能をテストおよびデモンストレーションするための**サンプル**です。
Jdbc {
driver = com.oceanbase.jdbc.Driver
url = "jdbc:oceanbase://e2e_oceanbase_mysql:2881/seatunnel?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&serverTimezone=UTC"
user = "ユーザー名"
password = "パスワード"
query = "SELECT c_bit_1, c_bit_8 FROM source"
compatible_mode = "mysql"
}
# SeaTunnelの設定方法やソースプラグインの完全なリストに関する詳細情報をご希望の場合は、
# https://seatunnel.apache.org/docs/connector-v2/source/FakeSourceにアクセスしてください。
}
sink {
Jdbc {
driver = com.oceanbase.jdbc.Driver
url = "jdbc:oceanbase://e2e_oceanbase_mysql:2881/seatunnel?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&serverTimezone=UTC"
user = "ユーザー名"
password = "パスワード"
query = "insert into sink(c_bit_1, c_bit_8) values (?, ?);"
compatible_mode = "mysql"
}
# SeaTunnelの設定方法やシンクプラグインの完全なリストに関する詳細情報をご希望の場合は、
# https://seatunnel.apache.org/docs/connector-v2/sinkにアクセスしてください。
}
```
- SeaTunnelを起動します。
以下のコマンドを実行して、SeaTunnelを起動します:
```shell
./bin/seatunnel.sh --config ./config/ob_to_ob -e local
```
注意
OceanBaseデータベースはSET型をサポートしていません。
Caused by: org.apache.seatunnel.api.table.catalog.DataTypeConvertException: ErrorCode:[COMMON-07], ErrorDescription:[ Unsupported data type] - Convert type: SET to SeaTunnel data type error.
詳細については、SeaTunnel MySQL CDCドキュメントを参照してください。