Перейти к содержимому
Последнее обновление

Синхронизация изменений схемы OceanBase

Экспериментальная функция

Непрерывная загрузка Doris является экспериментальной функцией и поддерживается начиная с Doris 4.1.5.

Синхронизация изменений схемы OceanBase автоматически применяет изменения столбцов в источнике к целевым таблицам Doris во время непрерывной загрузки. Эта возможность применяется только к CDC OceanBase с автоматическим созданием таблиц.

Синхронизация изменений схемы OceanBase поддерживает только режим совместимости с 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, проверьте совместимость обеих схем, затем возобновите задание.
  • Синхронизация с автоматическим созданием таблиц по умолчанию включает синхронизацию изменений схемы. В настоящее время 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 |
+-------+--------------+------+-------+---------+-------+