メインコンテンツまでスキップ
に最終更新

OceanBase Schema Change 同期

OceanBase Schema Change Sync は、継続データロード中に上流の列変更を Doris のターゲットテーブルへ自動的に適用します。この機能は Auto Table Creation を使用した OceanBase CDC にのみ適用されます。

実験的機能

OceanBase Schema Change Sync は Doris 4.1.4 以降で実験的機能として利用でき、MySQL 互換モードのみをサポートします。

OceanBase は MySQL CDC のスキーマ変更処理パスを使用するため、サポートされる変更と動作は MySQL と同じです。

サポートされるスキーマ変更​

OceanBase の操作Doris の動作
ADD COLUMN同じ名前の列を追加し、型には OceanBase データ型マッピング で定義された型を使用して、列コメントをコピーします。DEFAULT と NOT NULL の制約はコピーされず、履歴行へのバックフィルも行われません。以降の行では、OceanBase が binlog に書き込んだ実際の値が使用されます。
DROP COLUMN同じ名前の列を削除します。

考慮事項​

  • 追加対象の列がすでに存在するか、削除対象の列が存在しない場合、Doris はジョブの再試行が失敗しないよう、その操作をスキップします。
  • FIRST と AFTER で指定した列位置は Doris に同期されません。新しい列は既存の Doris 列の後ろに追加されます。
  • CHANGE COLUMN、MODIFY COLUMN、RENAME COLUMN、DEFAULT の変更、および NULL / NOT NULL 制約の変更は自動的に同期されません。
  • 主キー、インデックス、パーティション、テーブル名、その他のテーブルレベルのスキーマ変更は自動的に同期されません。
  • サポートされていないスキーマ変更を行う前に、継続データロードのジョブを一時停止し、Doris のターゲットテーブルを手動で変更して、両方のスキーマに互換性があることを確認してから、ジョブを再開してください。
  • Auto Table Creation Sync では Schema Change Sync がデフォルトで有効になります。現在の Doris には、これを無効にする SQL プロパティはありません。

例​

OceanBase ソーステーブルに列を追加します:

ALTER TABLE source_db.users ADD COLUMN city VARCHAR(50);
INSERT INTO source_db.users VALUES (2, 'Alice', 'Hangzhou');

ジョブが増分データを処理すると、city 列が Doris のターゲットテーブルに表示されます:

DESC target_db.users;
+-------+--------------+------+-------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-------+---------+-------+
| id | int | No | true | NULL | |
| name | varchar(100) | Yes | false | NULL | NONE |
| city | varchar(50) | Yes | false | NULL | NONE |
+-------+--------------+------+-------+---------+-------+