Почему моя внешняя реплика Cloud SQL не отражает изменения схемы (например, новые столбцы) после миграции Django?
Я использую Службу миграции облачных баз данных Google (DMS) для репликации данных из автономной базы данных PostgreSQL в Экземпляр Cloud SQL for PostgreSQL, сконфигурированный как внешняя первичная реплика.
Задание миграции выполняется в режиме CDC (сбор данных об изменениях) с использованием непрерывной репликации. С данными, похоже, все в порядке: новые строки и обновления успешно реплицируются.
Однако после запуска makemigrations
и migrate
Django в исходной базе данных, в которой добавлены новые столбцы и переименованы другие, изменения схемы не отражаются в облачной SQL—реплике. Новые столбцы просто не существуют в пункте назначения.
🔍 Что я сделал:
- Источник: автономный экземпляр PostgreSQL.
- Цель: установка Cloud SQL для PostgreSQL в качестве внешней реплики.
- Пользователь репликации имеет соответствующие привилегии и подключен по протоколу mTLS.
- Работа активная, с "оптимальным" параллелизмом и состоянием здоровья.
- Репликация данных (ВСТАВКА/ОБНОВЛЕНИЕ/УДАЛЕНИЕ) работает отлично.
- Изменения схемы, подобные
ALTER TABLE
,ADD COLUMN
,RENAME COLUMN
, не отражаются в реплике.
❓ Вопрос:
Как я могу настроить DMS или Cloud SQL для репликации изменений схемы (например, ALTER TABLE или CREATE COLUMN) из источника в реплику? Или необходимо вручную применить изменения схемы к целевой системе?
<время работы/>Меня вполне устраивают обходные пути или официальные рекомендации — просто нужна ясность в отношении правильного подхода к эволюции схемы в этой настройке.
Во время непрерывных миграций автоматически обновляются только изменения языка обработки данных (DML), в то время как изменения языка определения данных (DDL) являются обязанностью пользователя для обеспечения совместимости между исходной и целевой базами данных и могут быть выполнены двумя способами — обратитесь к этому документация.
Также рекомендуется ознакомиться с известными ограничениями вашего сценария миграции, прежде чем приступать к миграции базы данных. Смотрите здесь ограничения, характерные для использования базы данных PostgreSQL в качестве источника.