OceanBaseデータベースV4.Xでは、パーティションとログストリームが分離されており、1つのテナントユニット内のすべてのパーティショントランザクションログは1つのログストリームに記録されます。そのため、ログストリームの数は相対的に減少しますが、1つのログストリームには大量のテーブルデータが含まれる可能性があり、obcdcはすべてのログストリーミングデータ を取得する必要がある場合があります。
OceanBaseデータベースV4.Xでは、デフォルトの最小データ同期レベルはテナントレベルです。しかし、一部のユーザーにとって、テナントレベルの同期粒度は大きすぎるため、下流の消費圧力が高くなる可能性があります。この問題を解決するため、obcdcはOceanBaseデータベースV4.Xでテーブルレベルのアローリング機能を導入し、無駄なデータストレージを削減しています。同時に、obcdcはOceanBaseデータベースV4.Xで無制限のアローリング設定もサポートしており、構成パラメータのサイズが現在の64KB制限を超えることを許可しています。
さらに、obcdcのアローリング機能はOceanBaseデータベースV4.Xでテーブルの名前変更(rename table)もサポートしており、アローリングリストにあるテーブルをDDLを使用して別のテーブルにリネームすることで、そのテーブルは同期されなくなります。この場合、アローリング設定を再度変更する必要はなく、即座に反映されます。
obcdcのアローリストおよびブラックリスト構成パラメータについて
obcdcはOceanBaseデータベースV3.Xのアローリストおよびブラックリスト機能と互換性があり、同期粒度はテナント、データベース、テーブルをサポートします。obcdcには以下の3つの構成パラメータがあります:
| パラメータ | 説明 | デフォルト値 | 動的変更のサポート | 備考 |
|---|---|---|---|---|
tb_white_list |
同期対象のテーブルのアローリスト | *.*.* |
不要 | トリプル形式:テナント名.データベース名.テーブル名。デフォルトの *.*.* はクラスタ全体の同期を意味します。異なるトリプルは | で区切り、単一のトリプルは正規表現マッチングをサポートします。 |
tb_black_list |
同期対象のテーブルのブラックリスト | | | 不要 | トリプル形式:テナント名.データベース名.テーブル名。デフォルトの *.*.* はクラスタ全体の同期を意味します。異なるトリプルは | で区切り、単一のトリプルは正規表現マッチングをサポートします。 |
enable_white_black_list |
アローリストとブラックリストを有効にするかどうか | 1 |
不要 | なし |
操作例
アローリストを例に説明します:
mytenant1テナントのdb1データベースのtb1テーブルとmytenant2テナントのdb2データベースのすべてのテーブルを同期します:
mytenant1.db1.tb1|mytenant2.db2.*
mytenant1テナントのdb1データベースのtb1テーブルとtb2テーブルを同期します:
mytenant1.db1.tb1|mytenant1.db1.tb2
mytenant1テナントのdb1データベースで、プレフィックスがtbに一致するテーブルを同期します:
mytenant1.db1.tb*
説明
- 同期できるのは、アローリストに含まれていてかつブラックリストに含まれていないテーブルのみです。アローリストにはデフォルトですべてのテナントのすべてのテーブルが含まれ、ブラックリストはデフォルトで空です。
- 構成方法として正規表現マッチング(fnmatch)がサポートされており、デフォルトのマッチングルールは大文字と小文字を区別しません。
enable_oracle_mode_match_case_sensitive=1を設定した場合、Oracleモードのテナントでは大文字と小文字が区別されます。
obcdcがサポートする正規表現ルールには、*、?、[seq]、[!seq] が含まれます。
使用方法
obcdcの早期バージョンでは、単一の構成パラメータのサイズ制限が64KBでしたが、現在ではアローリストおよびブラックリスト関連の構成パラメータはこの制限を受けません。libobcdc.conf ファイルでアローリストおよびブラックリストを設定できます。
######### [working_mode] #########
#working_mode=memory
meta_data_refresh_mode=data_dict
#meta_data_refresh_mode=online
######### [synchronous information] #########
tb_white_list=*.*.*
#tb_white_list=sys.oblog*.*|oblog_tt.*.*
tb_black_list=t1.d1.t1
instance_index=0
instance_num=1
次のコマンドを使用して起動します:
./obcdc_tailf -V -f libobcdc.conf -T $TIMESTAMP
同時に、obcdcはアローリストおよびブラックリストを有効にするかどうかを制御する構成パラメータもサポートしています。構成パラメータは enable_white_black_list で、デフォルト値は 1 であり、アローリストおよびブラックリストが有効であることを示します。
#libobcdc.conf
enable_white_black_list=0