純鈞(ChunJun、旧称FlinkX)は、安定性が高く、使いやすく、効率的で、バッチとストリームを統合したデータ統合フレームワークです。現在、リアルタイム計算エンジンFlinkを基盤として、さまざまな異種データソース間のデータ同期と計算を実現しています。OceanBase Binlogサービス(OceanBase Binlog Service、略称Binlogサービス)は、OceanBaseデータベースのトランザクションログを収集し、それをMySQL Binlogに変換します。主にリアルタイムデータサブスクリプションなどのシナリオで使用されます。 chunjun-connector-oceanbasecdcは、内部でoblogclientを統合してBinlogサービスに接続し、関連するログデータを取得することで、OceanBaseデータベースの増分データ移行を実現します。
以下では、ChunJunのLocalモードを使用して、OceanBaseデータベース(MySQLモード)からMySQLデータベースへデータを移行する方法について説明します。
シナリオの概要
OceanBaseデータベースのテーブル test_tbl1 のデータをMySQLデータベースのテーブル tbl1 に移行します。データベース情報は以下のとおりです:
| OceanBaseデータベース情報(ソースデータベース) | サンプル値 |
|---|---|
| クラスタ名 | test4000 |
| ホストアドレス | 10.10.10.2 |
| ポート番号 | 2881 |
| BinlogサービスIP | 10.10.10.3 |
| Binlogサービスポート | 2983 |
| ビジネステナント名(MySQLモード) | mysql001 |
| ユーザー名 | root |
| ユーザーのパスワード | ****** |
| スキーマデータベース名 | test_data |
| テーブル名 | test_tbl1 |
| MySQLデータベース情報(ターゲットデータベース) | サンプル値 |
|---|---|
| ホストアドレス | 10.10.10.1 |
| ポート番号 | 3306 |
| ユーザー名 | root |
| ユーザーのパスワード | ****** |
| スキーマ名 | test_ob_to_mysql |
| テーブル名 | tbl1 |
前提条件
- JDK 1.8をインストールし、
JAVA_HOME環境変数を設定します。 - Binlogサービスのインストールとデプロイが完了していること。OceanBase Binlogサービスのインストールとデプロイについては、Binlogクラスタの作成を参照してください。
操作手順
ステップ1:ChunJun環境の準備
ChunJun圧縮ファイルをダウンロードし、解凍します。
chunjun-dist.tar.gzをダウンロードします。
wget https://github.com/DTStack/chunjun/releases/download/v1.12.6/chunjun-dist.tar.gz圧縮ファイルをディレクトリ
/chunjun_Home/chunjunに解凍します。mkdir /ChunJun_Home/chunjun && tar zxvf chunjun-dist.tar.gz -C /ChunJun_Home/chunjunChunJun環境変数を設定します。
export ChunJun_HOME=/ChunJun_Home/chunjun-dist
ステップ2:JSONファイルを設定する
環境情報に基づいて、OceanBaseデータベースのテーブルtest_tbl1からMySQLデータベースのテーブルtbl1へデータをマイグレーションするためのJSONファイルを設定します。
例:
[root@xxx /]
$cd /ChunJun_Home/chunjun-dist/chunjun-examples/json
[root@xxx /ChunJun_Home/chunjun-dist/chunjun-examples/json]
$mkdir test_data
[root@xxx /ChunJun_Home/chunjun-dist/chunjun-examples/json]
$cd mkdir test_data
[root@xxx /ChunJun_Home/chunjun-dist/chunjun-examples/json/test_data]
$vi test_ob_to_mysql.json
{
"job": {
"setting": {
"errorLimit": {
"record": 0,
"percentage": 0.02},
"speed": {"bytes": 0,
"channel": 1}
},
"content": [
{
"reader": {
"name": "oceanbasecdcreader",
"table": {
"tableName": "test_tbl1"},
"parameter": {
"logProxyHost": "10.10.10.3",
"logProxyPort": 2983,
"obReaderConfig": {
"rsList": "10.10.10.2:2882:2881",
"username": "root",
"password": "******"
},
"cat": "insert,delete,update",
"column": [
"*"
]
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"column": [
"*"
],
"connection": [
{
"jdbcUrl": "jdbc:mysql://10.10.10.1:3306/test_ob_to_mysql",
"table": [
"tbl1"
]
}
],
"username": "root",
"password": "******"
}
}
}
]
}
}
ステップ3:JSON設定ファイルを実行する
JVMプロセスを起動して、ChunJunタスクを実行します。
/ChunJun_Home/chunjun-dist ディレクトリに移動し、次のコマンドを実行します:
[root@xxx /]
$cd /ChunJun_Home/chunjun-dist
[admin@xxx /ChunJun_Home/chunjun-dist]
$sh bin/chunjun-local.sh -job chunjun-examples/json/test_data/test_ob_to_mysql.json
# #
# #
#
##### ###### # # # #### #### # # # ####
# # # # # ## # # # # ## #
# # # # # # # # # # # #
# # # # ## # # # # ## # #
##### # # #### # # # # #### # # #
#
####
Reference site: https://dtstack.github.io/chunjun
chunjun is starting ...
CHUNJUN_HOME is auto set /ChunJun_Home/chunjun-dist/
FLINK_HOME is empty!
HADOOP_HOME is empty!
...
<ellipsis>
...
*********************************************
numWrite | 3
last_write_num_0 | 0
conversionErrors | 0
writeDuration | 20149
duplicateErrors | 0
numRead | 3
snapshotWrite | 0
otherErrors | 0
readDuration | 95
byteRead | 389
last_write_location_0 | 0
byteWrite | 389
nullErrors | 0
nErrors | 0
*********************************************
2023-01-06 20:34:47,448 - 50317 INFO [main] com.dtstack.chunjun.Main:program Flink_Job execution success
ステップ4:OceanBaseデータベースのデータを増分変更する
OceanBaseデータベース(MySQLモード)にログインし、テーブルtest_tbl1に1件のデータを挿入します。
[admin@xxx /home/admin]
$obclient -h10.10.10.2 -P2881 -uroot@mysql001 -p****** -Dtest_data
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the OceanBase. Commands end with ; or \g.
Your OceanBase connection id is 3221709678
Server version: OceanBase 4.0.0.0 (r101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322) (Built Dec 7 2022 16:22:15)
Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
obclient [test_data]> INSERT INTO test_tbl1 VALUES(4,'Macao',853);
Query OK, 1 row affected
ステップ5:データ移行状況を確認する
MySQLデータベースにログインして、データ移行状況を確認します。
[admin@xxx /home/admin]
$mysql -h10.10.10.1 -P3306 -uroot -p******
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 189769
Server version: 5.7.26-log MySQL Community Server (GPL)
<ellipsis>
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> use test_ob_to_mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MySQL [test_ob_to_mysql]> SELECT * FROM tbl1;
+------+-----------+------+
| col1 | col2 | col3 |
+------+-----------+------+
| 1 | China | 86 |
| 2 | Taiwan | 886 |
| 3 | Hong Kong | 852 |
| 4 | Macao | 853 |
+------+-----------+------+
4 rows in set
関連ドキュメント
- ChunJunクイックスタートの詳細については、クイックスタートを参照してください。
- ターゲットデータベースとしてMySQLデータベースを設定するためのJSONファイルの詳細については、MySQL Sinkを参照してください。
- その他のスクリプト例については、プロジェクト内の
/chunjun-dist/chunjun-examplesフォルダ内のファイルを参照してください。