Известные проблемы и ограничения, связанные с миграцией через Интернет из PostgreSQL в База данных Azure для PostgreSQL
Внимание
Рекомендуется использовать новую службу миграции в База данных Azure для PostgreSQL для более эффективной и упрощенной миграции. Эта служба упрощает процесс, поддерживая различные исходные среды, обеспечивая переход на База данных Azure для PostgreSQL без хэссов.
В этой статье описываются известные проблемы и ограничения, связанные с миграцией через Интернет из PostgreSQL в База данных Azure для PostgreSQL с помощью Службы миграции базы данных Azure (DMS).
Настройка миграции в подключенном режиме
Самая низкая поддерживаемая версия исходного кода PostgreSQL — 9.4, а самая высокая целевая версия — 14.9.
Поддерживаются только миграции на ту же или более позднюю версию. Например, миграция PostgreSQL 9.5 на базу данных Azure для PostgreSQL 9.6 или 10 поддерживается. Миграция с PostgreSQL 11 на PostgreSQL 9.6 не поддерживается.
Чтобы включить логическую репликацию в исходном файле PostgreSQL
postgresql.conf
, задайте следующие параметры:Параметр Описание wal_level
Задайте в качестве логического. max_replication_slots
Задайте по крайней мере максимальное количество баз данных для миграции. Если требуется перенести четыре базы данных, задайте значение по крайней мере 4
.max_wal_senders
Задайте количество баз данных, работающих одновременно. Мы рекомендуем использовать значение 10
.Добавьте IP-адрес агента DMS в исходный PostgreSQL
pg_hba.conf
.Запишите IP-адрес DMS после того, как завершите подготовку экземпляра Azure Database Migration Service.
Добавьте IP-адрес в
pg_hba.conf
файл:host all 172.16.136.18/10 md5 host replication postgres 172.16.136.18/10 md5
Пользователю должна быть присвоена роль РЕПЛИКАЦИИ на сервере, на котором размещается база данных-источник.
Схемы исходной и целевой баз данных должны совпадать.
Ограничения размера
- Из PostgreSQL в базу данных Azure для PostgreSQL с помощью одной службы DMS можно выполнить миграцию до 1 ТБ данных.
- DMS позволяет пользователям выбирать таблицы в базе данных, которую они хотят перенести.
За кулисами pg_dump
команда принимает дамп выбранных таблиц с помощью одного из следующих параметров:
-T
Включение имен таблиц, выбранных в пользовательском интерфейсе-t
исключение имен таблиц, не выбранных пользователем
Существует максимальное ограничение в 7500 символов, которые могут быть включены в команду pg_dump
после -t
или -T
параметра. Команда pg_dump
использует число символов для выбранных или невыбранных таблиц в зависимости от того, какое значение ниже. Если количество символов для выбранных и неизбранных таблиц превышает 7500, pg_dump
команда завершается ошибкой.
В предыдущем примере pg_dump
команда будет:
pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""
В предыдущей команде число символов равно 55 (включает в себя двойные кавычки, пробелы -T
и косую черту).
Ограничения типов данных
Ограничение: если в таблицах нет первичного ключа, изменения могут не синхронизироваться с целевой базой данных.
Возможное решение: временно задайте первичный ключ для перемещаемой таблицы, чтобы продолжить. Удалите первичный ключ, когда миграция данных будет завершена.
Ограничения при миграции по сети из AWS RDS PostgreSQL
При попытке выполнить миграцию по сети из PostgreSQL реляционной базы данных (RDS) в Amazon Web Service (AWS) на базу данных Azure для PostgreSQL могут возникать следующие ошибки.
Ошибка. Значение по умолчанию столбца "{column}" в таблице "{table}" в базе данных "{database}" отличается на исходных и целевых серверах. It's '{value on source}' on source and '{value on target}' on target" (Значение по умолчанию столбца "{столбец}" в таблице "{таблица}" в базе данных "{база данных}" на исходном сервере не совпадает с таким же параметром на целевом сервере. Это значение "{значение на исходном сервере}" на исходном сервере и "{значение на целевом сервере}" на целевом).
Ограничение. Эта ошибка возникает, когда значение по умолчанию в схеме столбцов отличается от исходных и целевых баз данных.
Обходное решение. Убедитесь, что схема в целевом объекте соответствует схеме источника. Дополнительные сведения о миграции схемы см. в разделе Документация по миграции по сети базы данных Azure для PostgreSQL.
Ошибка: целевая база данных "{database}" имеет таблицы "{число таблиц}", а исходная база данных "{database}" имеет "{число таблиц}". The number of tables on source and target databases should match" (Количество таблиц в целевой базе данных "{база данных}": {количество таблиц}. Количество таблиц в базе данных-источнике "{база данных}": {количество таблиц}. Количество таблиц в базах данных-источнике и целевой базе данных должно совпадать).
Ограничение. Эта ошибка возникает, когда количество таблиц отличается от исходных и целевых баз данных.
Обходное решение. Убедитесь, что схема в целевом объекте соответствует схеме источника. Дополнительные сведения о миграции схемы см. в разделе Документация по миграции по сети базы данных Azure для PostgreSQL.
Ошибка. База данных-источник {database} пуста.
Ограничение: эта ошибка возникает, если база данных-источник пуста. Возможно, в качестве источника выбрана неправильная база данных.
Решение: еще раз проверьте базу данных-источник, выбранную для миграции, и повторите попытку.
Ошибка. Целевая база данных {база_данных} пуста. Перенос схемы.
Ограничение: эта ошибка возникает, когда в целевой базе данных нет схемы. Схема в целевой базе данных должна соответствовать схеме в базе данных-источнике.
Обходное решение. Убедитесь, что схема в целевом объекте соответствует схеме источника. Дополнительные сведения о миграции схемы см. в разделе Документация по миграции по сети базы данных Azure для PostgreSQL.
Другие ограничения
Имя базы данных не может содержать точку с запятой (
;
).Записываемая таблица должна иметь первичный ключ. Если в таблице нет первичного ключа, результат операций записи DELETE и UPDATE непредсказуем.
Обновление сегмента первичного ключа игнорируется. Применение такого обновления определяется целевым объектом как обновление, которое не обновлялось ни одной строкой. Результатом является запись, записанная в таблицу исключений.
Если в таблице есть
JSON
столбец, любые операции DELETE или UPDATE в этой таблице могут привести к сбою миграции.Миграция нескольких таблиц с одинаковым именем, указанным в разных регистрах, может привести к непредсказуемому поведению и не поддерживается. Например, это относится к следующим именам: таблица1, ТАБЛИЦА1 и Таблица1.
Изменение обработки [ CREATE | ALTER | DROP | DDLS таблицы TRUNCATE ] не поддерживается.
В Database Migration Service одно действие миграции поддерживает работу не более чем с четырьмя базами данных.
Миграция таблицы pg_largeobject не поддерживается.