Последнее обновление
Синхронизация изменений схемы 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 |
+-------+--------------+------+-------+---------+-------+