Поделиться через


Перемещение База данных Azure для PostgreSQL в другой регион

В этой статье рассматриваются рекомендации по перемещению База данных Azure для PostgreSQL, отдельных серверов и гибких серверов в географических регионах, где пары регионов недоступны для реплика и геовосстановление.

Сведения о перемещении Azure Cosmos DB для PostgreSQL (прежнее название — База данных Azure для PostgreSQL гипермасштабирование (Citus)) см. в статье "Чтение реплика" в Azure Cosmos DB для PostgreSQL.

Общие сведения о парах регионов, поддерживаемых собственным реплика tion, см. в разделе реплика между регионами.

Необходимые компоненты

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

  • Чтобы переместить PostgreSQL с данными из одного региона в другой, необходимо иметь дополнительный вычислительный ресурс для запуска средств резервного копирования и восстановления. В примерах этого руководства используется виртуальная машина Azure под управлением Ubuntu 20.04 LTS. Вычислительные ресурсы должны:
    • Иметь сетевой доступ к исходному и целевому серверу либо в частной сети, либо путем включения в правила брандмауэра.
    • Находиться в исходном или целевом регионе.
    • Используйте ускоренную сеть (если она доступна).
    • Содержимое базы данных не сохраняется в промежуточном хранилище; Выходные данные средства логического резервного копирования отправляются непосредственно на целевой сервер.
  • В зависимости от структуры экземпляра База данных Azure для PostgreSQL может потребоваться развернуть и настроить следующие зависимые ресурсы в целевом регионе перед перемещением:

Простой

Сведения о возможных простоях см. в статье Cloud Adoption Framework для Azure: выбор метода перемещений.

Подготовить

В начале экспортируйте шаблон диспетчера ресурсов Resource Manager. Этот шаблон содержит параметры, описывающие пространство имен службы автоматизации.

  1. Войдите на портал Azure.

  2. Выберите все ресурсы и выберите ресурс службы автоматизации.

  3. Выберите Экспортировать шаблон.

  4. Нажмите кнопку Скачать на странице Экспорт шаблона.

  5. Найдите .zip файл, скачанный на портале, и распакуйте его в папку по своему усмотрению.

    В ZIP-файле содержатся файлы JSON, включающие шаблон и скрипты для развертывания шаблона.

Повторное развертывание без данных

  1. Настройте экспортированные параметры шаблона в соответствии с целевым регионом.

Внимание

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

  1. Повторно разверните шаблон в новом регионе. Пример использования шаблона ARM для создания База данных Azure для PostgreSQL см. в кратком руководстве. Использование шаблона ARM для создания гибкого сервера База данных Azure для PostgreSQL.

Повторное развертывание с данными

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

Совет

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

  1. Настройте экспортированные параметры шаблона в соответствии с целевым регионом.

Внимание

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

  1. Повторно разверните шаблон в новом регионе. Пример использования шаблона ARM для создания База данных Azure для PostgreSQL см. в кратком руководстве. Использование шаблона ARM для создания гибкого сервера База данных Azure для PostgreSQL.

  2. На вычислительных ресурсах, подготовленных для миграции, установите клиентские средства PostgreSQL для перенесенной версии PostgreSQL. В следующем примере на виртуальной машине Azure с Ubuntu 20.04 LTS используется PostgreSQL версии 13:

      sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
      wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
      sudo apt-get update
      sudo apt-get install -y postgresql-client-13
    

    Дополнительные сведения об установке компонентов PostgreSQL в Ubuntu см. в статьях о скачиваемых файлах Linux (Ubuntu).

    Для других платформ перейдите в раздел "Загрузки PostgreSQL".

  3. (Необязательно) Если вы создали дополнительные роли на исходном сервере, создайте их на целевом сервере. Чтобы получить список существующих ролей, используйте следующий запрос:

    select *
    from pg_catalog.pg_roles
    where rolename not like 'pg_%' and rolename not in ('azuresu', 'azure_pg_admin', 'replication')
    order by rolename;
    
  4. Чтобы перенести каждую базу данных, сделайте следующее:

    1. Остановите все действия базы данных на исходном сервере.
    2. Замените учетные данные, исходный сервер, целевой сервер и имя базы данных в следующем скрипте:
        export USER=admin_username
        export PGPASSWORD=admin_password
        export SOURCE=pgsql-arpp-source.postgres.database.azure.com
        export TARGET=pgsql-arpp-target.postgres.database.azure.com
        export DATABASE=database_name
        pg_dump -h $SOURCE -U $USER --create --exclude-schema=pg_catalog $DATABASE | psql -h $TARGET -U $USER postgres
    
    1. Чтобы перенести базу данных, запустите скрипт.

    2. Настройте клиенты для указания на целевой сервер.

    3. Выполняйте функциональные тесты в приложениях.

      1. Убедитесь, что ignoreMissingVnetServiceEndpoint флаг задан False, поэтому IaC не может развернуть базу данных, если конечная точка службы не настроена в целевом регионе.