Руководство. Миграция и обновление База данных Azure для PostgreSQL с одного сервера на База данных Azure для PostgreSQL с помощью DMS через портал Azure

Azure Database Migration Service позволяет с минимальным простоем переносить базы данных из экземпляра Базы данных Azure для PostgreSQL (Отдельный сервер) в экземпляр Базы данных Azure для PostgreSQL (Отдельный сервер или Гибкий сервер) аналогичной или другой версии. В этом руководстве показано, как перенести пример базы данных (Прокат DVD) из Базы данных Azure для PostgreSQL версии 10 в Базу данных Azure для PostgreSQL (отдельный сервер), выполнив сетевую миграцию в службе Azure Database Migration Service.

В этом руководстве вы узнаете, как:

  • перенести пример схемы с помощью служебной программы pg_dump;
  • Создайте экземпляр Azure Database Migration Service.
  • создать проект миграции в Azure Database Migration Service;
  • выполнение миграции.
  • Мониторинг миграции.
  • выполнить переключение после миграции.

Примечание

Чтобы выполнить сетевую миграцию с помощью Azure Database Migration Service, требуется создать экземпляр ценовой категории "Премиум". Мы шифруем диск для защиты данных от кражи при миграции.

Важно!

Чтобы процесс миграции был выполнен без проблем, Майкрософт рекомендует создать экземпляр Azure Database Migration Service в том же регионе Azure, в котором размещена целевая база данных. Перемещение данных между регионами и географическими областями может замедлить процесс миграции и привести к ошибкам.

Важно!

Миграцию из Базы данных Azure для PostgreSQL поддерживает PostgreSQL 9.x и более поздних версий. Кроме того, с помощью этого руководства вы можете перенести базы данных из одного экземпляра Базы данных Azure для PostgreSQL в другой экземпляр Базы данных Azure для PostgreSQL или в экземпляр с Гипермасштабированием (Citus). Обратите внимание, что для миграции из PostgreSQL 9.5 и 9.6 требуются дополнительные привилегии логической репликации в экземпляре источника.

Предварительные требования

Для работы с этим руководством вам потребуется следующее:

  • Проверьте состояние поддержки сценариев миграции в Azure Database Migration Service, где описаны допустимые комбинации миграций и версий.

  • Существующая База данных Azure для PostgreSQL 10 и более поздней версии, где развернута база данных Прокат DVD.

    Также обратите внимание, что версия целевой Базы данных Azure для PostgreSQL не может быть более ранней, чем версия исходного экземпляра. Например, базу данных PostgreSQL 10 можно перенести в Базу данных Azure для PostgreSQL 10 или 11, но не в Базу данных Azure для PostgreSQL 9.6.

  • Создайте сервер Базы данных Azure для PostgreSQL или сервер базы данных Azure для PostgreSQL (Гипермасштабирование (Citus)), на который будете переносить данные.

  • Создайте виртуальную сеть Azure для Azure Database Migration Service, используя модель развертывания с помощью Azure Resource Manager. Дополнительные сведения см. в статье Документация по виртуальной сети, где особое внимание стоит уделить кратким руководствам с пошаговыми инструкциями.

  • Убедитесь, что правила группы безопасности сети для виртуальной сети не блокируют исходящий порт 443 ServiceTag для Служебной шины, службы хранилища и Azure Monitor. См. дополнительные сведения о фильтрации трафика, предназначенного для виртуальной сети, с помощью групп безопасности сети.

  • Создайте правило брандмауэра уровня сервера для исходной Базы данных Azure для PostgreSQL, чтобы предоставить Azure Database Migration Service доступ к исходным базам данных. Задайте диапазон подсети в виртуальной сети, которая используется для Azure Database Migration Service.

  • Создайте правило брандмауэра уровня сервера для Базы данных Azure для PostgreSQL, чтобы предоставить службе Azure Database Migration Service доступ к целевым базам данных. Задайте диапазон подсети в виртуальной сети, которая используется для Azure Database Migration Service.

  • Включите логическую репликацию в источнике База данных Azure для PostgreSQL.

  • Задайте следующие параметры сервера в экземпляре Базы данных Azure для PostgreSQL, который используется в качестве источника:

    • max_replication_slots = [количество слотов] — 10 слотов;
    • max_wal_senders = [количество параллельных задач]. Параметр max_wal_senders задает число параллельных задач, которые можно выполнить: рекомендуемый параметр — до 10 задач

Примечание

Указанные выше параметры сервера являются статическими. Для вступления их в силу потребуется перезагрузить этот экземпляр Базы данных Azure для PostgreSQL. Дополнительные сведения м. в статье о настройке параметров сервера в Базе данных Azure для PostgreSQL.

Важно!

Чтобы поддерживать синхронизацию в целевую базу данных, все таблицы в существующей базе данных должны иметь первичный ключ.

Перенос примера схемы

Чтобы подготовить все объекты базы данных, такие как схемы таблицы, индексы и хранимые процедуры, нам нужно извлечь схему из исходной базы данных и применить ее к нужной базе данных.

  1. Используйте команду pg_dump -s, чтобы создать схемы файла дампа для базы данных.

    pg_dump -O -h hostname -U db_username -d db_name -s > your_schema.sql
    

    Например, для создания файла дампа схемы для базы данных dvdrental выполните команду:

    pg_dump -O -h mypgserver-source.postgres.database.azure.com -U pguser@mypgserver-source -d dvdrental -s -x > dvdrentalSchema.sql
    

    Дополнительные сведения об использовании программы pg_dump см. в примерах руководства о pg-dump.

  2. Создайте пустую базу данных в целевой среде, которая является Базой данных Azure для PostgreSQL.

    Дополнительные сведения о подключении к базе данных и о создании базы данных см. в кратких руководствах Создание сервера Базы данных Azure для PostgreSQL с помощью портала Azure или Создание серверной группы Гипермасштабирования (Citus) на портале Azure.

    Примечание

    Экземпляр Базы данных Azure для PostgreSQL (Гипермасштабирование (Citus)) содержит только одну базу данных с именем citus.

  3. Импортируйте схемы в целевую базу данных, созданную путем восстановления схемы файла дампа.

    psql -h hostname -U db_username -d db_name < your_schema.sql
    

    Пример:

    psql -h mypgserver-source.postgres.database.azure.com  -U pguser@mypgserver-source -d dvdrental citus < dvdrentalSchema.sql
    

    Примечание

    Служба миграции автоматически управляет включением и отключением внешних ключей и триггеров, что обеспечивает надежность переноса данных. Поэтому не нужно вносить изменения в схему целевой базы данных.

Регистрация поставщика ресурсов

Прежде чем создать свой первый экземпляр Database Migration Service, зарегистрируйте поставщик ресурсов Microsoft.DataMigration.

  1. Войдите на портал Azure. Выполните поиск по запросу Подписки и выберите этот пункт.

    Отображение подписок на портале

  2. Выберите подписку, в которой нужно создать экземпляр Azure Database Migration Service, а затем щелкните Поставщики ресурсов.

    Отображение поставщиков ресурсов

  3. В поле поиска введите migration, а затем щелкните элемент Зарегистрировать рядом с Microsoft.DataMigration.

    Регистрация поставщика ресурсов

Создание экземпляра DMS

  1. На портале Azure выберите +Создать ресурс, введите в поле поиска "Azure Database Migration Service", а затем в раскрывающемся списке выберите Azure Database Migration Service.

    Azure Marketplace

  2. На экране Azure Database Migration Service выберите Создать.

    Создание экземпляра Azure Database Migration Service

  3. На экране Создание службы миграции укажите имя службы, подписку, новую или существующую группу ресурсов, а также расположение службы.

  4. Выберите существующую виртуальную сеть или создайте новую.

    Виртуальная сеть предоставляет Azure Database Migration Service доступ к исходному экземпляру сервера PostgreSQL и целевому экземпляру Базы данных Azure для PostgreSQL.

    См. статью Краткое руководство. Создание виртуальной сети с помощью портала Azure.

  5. Выберите ценовую категорию.

    Дополнительные сведения о ценовых категориях и затратах см. на странице с описанием цен.

    Настройка параметров экземпляра Database Migration Service

  6. Щелкните Просмотреть и создать, чтобы создать службу.

    Создание службы потребует примерно 10 – 15 минут.

Создание проекта миграции

После создания службы найдите ее на портале Azure, откройте и создайте проект миграции.

  1. На портале Azure щелкните Все службы, выполните поиск по запросу "Azure Database Migration Service" и выберите Azure Database Migration Services (Службы Azure Database Migration Service).

    Поиск всех экземпляров Azure Database Migration Service

  2. На экране Службы Azure Database Migration Service найдите и выберите имя созданного экземпляра Azure Database Migration Service, а затем щелкните элемент Новый проект миграции.

  3. На экране Новый проект миграции задайте имя проекта, в текстовом поле Тип исходного сервера выберите элемент PostgreSQL, а в текстовом поле Тип целевого сервера — элемент База данных Azure для PostgreSQL.

    Примечание

    Выберите элемент PostgreSQL в поле Тип исходного сервера, даже если исходным является экземпляр Базы данных Azure для PostgreSQL.

  4. В разделе Выберите тип действия выберите Миграция данных по сети.

    Создание проекта Azure Database Migration Service

    Примечание

    Кроме того, вы можете выбрать Создать только проект, чтобы создать проект миграции для отложенного выполнения.

  5. Щелкните элемент Сохранить, изучите требования для успешного использования Azure Database Migration Service для переноса данных, а затем щелкните элемент Создать и выполнить действие.

Указание сведений об источнике

  1. В окне Добавление сведений об источнике укажите сведения о подключении для исходного экземпляра PostgreSQL.

    Экран добавления сведений об источнике

    Примечание

    Такие сведения, как имя сервера, порт сервера, имя базы данных и т. д. можно найти на портале Базы данных Azure для PostgreSQL.

  2. Щелкните Сохранить.

Указание сведений о цели

  1. На экране Сведения о целевом объекте укажите сведения для подключения к целевому серверу Гипермасштабирования (Citus), в качестве которого используется подготовленный ранее экземпляр Гипермасштабирования (Citus), где вы развернули схему DVD с помощью команды pg_dump.

    Экран сведений о целевом объекте

    Примечание

    Кроме того, вы можете выполнить миграцию из экземпляра Базы данных Azure для PostgreSQL в другой экземпляр Базы данных Azure для PostgreSQL (Отдельный сервер) или на сервер с Гипермасштабированием (Citus).

  2. Нажмите кнопку Сохранить, а затем на экране Сопоставление с целевыми базами данных сопоставьте исходную и целевую базы данных для миграции.

    Если в целевой базе данных содержится база данных с тем же именем, что у исходной базы данных, Azure Database Migration Service по умолчанию выберет целевую базу данных.

    Экран сопоставления с целевыми базами данных

  3. Щелкните элемент Сохранить, а затем на экране Параметры миграции подтвердите значения по умолчанию.

    Экран параметров миграции

  4. Нажмите кнопку Сохранить в окне Migration summary (Сводка по миграции) и в поле Имя действия введите имя действия миграции, а затем проверьте соответствие сведениям о целевом и исходном сервере, которые вы указали ранее.

    Экран сводных данных по миграции

Выполнение миграции

  • Выберите Запустить миграцию.

Откроется окно "Действие миграции", а для действия в поле Состояние отобразится надпись Выполняется резервное копирование. При обновлении с База данных Azure для PostgreSQL 9.5 или 9.6 может возникнуть следующая ошибка:

Сценарий сообщил о неизвестной ошибке. 28000: нет записи pg_hba.conf для подключения репликации с узла "40.121.141.121", пользователь "sr"

Причина в том, что у PostgreSQL нет необходимых прав для создания требуемых артефактов логической репликации. Чтобы включить необходимые привилегии, можно сделать следующее:

  1. Откройте параметры "Безопасность подключения" для исходного сервера База данных Azure для PostgreSQL, с которых вы пытаетесь выполнить миграцию или обновление.
  2. Добавьте новое правило брандмауэра с именем, заканчивающимся на "_replrule", и добавьте IP-адрес из сообщения об ошибке в поля "Начальный IP-адрес" и "Конечный IP-адрес". Для приведенного выше примера ошибки:

Имя правила брандмауэра = sr_replrule; начальный IP-адрес = 40.121.141.121; конечный IP-адрес = 40.121.141.121

  1. Нажмите кнопку "Сохранить" и подождите, пока изменение завершится.
  2. Повторите действие DMS.

Мониторинг миграции

  1. На экране действия миграции нажмите кнопку Обновить, чтобы обновить содержимое экрана, пока состояние миграции не поменяется на Завершено.

    Мониторинг миграции

  2. Когда миграция завершится, выберите в столбце Имя базы данных конкретную базу данных, чтобы узнать состояние миграции для операций полной загрузки данных и добавочной синхронизации данных.

    Примечание

    В разделе полной загрузки данных отображается состояние начальной загрузки, а в разделе добавочной синхронизации данных — состояние отслеживания измененных данных (CDC).

    Сведения о полной загрузке данных

    Сведения о добавочной синхронизации данных

Выполнение прямой миграции

После завершения начальной полной загрузки базы данных помечаются как готовые к прямой миграции.

  1. Когда вы будете готовы выполнить миграцию базы данных, щелкните Запустить прямую миграцию.

  2. Подождите, пока счетчик Ожидающие изменения не дойдет до 0, что означает полное прекращение всех входящих транзакций в исходной базе данных, затем установите флажок Подтвердить и щелкните элемент Применить.

    Экран завершения миграции

  3. Когда состояние переноса базы данных изменится на Завершено, повторно создайте последовательности (если это необходимо) и подключите свои приложения к новому целевому экземпляру Базы данных Azure для PostgreSQL.

Примечание

С помощью Azure Database Migration Service можно с минимальным простоем выполнять обновление основной версии Базы данных Azure для PostgreSQL (Отдельный сервер). Сначала необходимо настроить целевую базу данных требуемой более новой версии PostgreSQL и задать сетевые параметры. Затем можно начать миграцию в целевые базы данных с помощью описанной выше процедуры. После перехода на сервер целевой базы данных можно обновить строку подключения для приложений, чтобы она указывала на этот сервер.

Дальнейшие действия