Перенос приложений

Завершено

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

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

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

Создание ролей пользователей вручную

При переносе базы данных PostgreSQL в Базу данных Azure для PostgreSQL с помощью Azure Database Migration Service роли и назначения ролей не копируются. Необходимо вручную повторно создать необходимые роли и учетные записи пользователей для администратора и пользователей таблиц в целевой базе данных. Эти задачи выполняются с помощью служебных программ psql или pgAdmin. Выполните команду CREATE ROLE. Команда GRANT используется для назначения необходимых привилегий роли. Рассмотрим пример.

CREATE ROLE myuseraccount WITH LOGIN NOSUPERUSER CREATEDB PASSWORD 'mY!P@ss0rd';
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuseraccount;

Примечание.

Кроме того, для создания ролей можно использовать команду createuser в командной строке Bash.

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

SELECT rolname
FROM pg_roles;

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

                              List of roles
   Role name   |               Attributes                                   | Member of
---------------+------------------------------------------------------------+-----------
 azureuser     | Superuser, Create DB                                       | {}
 myuseraccount | Create DB                                                  | {}
 postgres      | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

Примечание.

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

Перенастройка приложений

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

Рекомендации по перенастройке приложений PostgreSQL

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

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

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

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

Перенастройка приложения

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

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

Image showing the Connection strings page for Azure Database for PostgreSQL item in the Azure portal

Открытие сетевых портов

Как отмечалось на занятии 1 этого модуля, База данных Azure для PostgreSQL — это служба, защищенная брандмауэром. Клиенты не смогут подключиться, пока служба не определит их IP-адрес. Необходимо добавить IP-адреса или диапазоны блоков адресов для клиентов, работающих с приложениями, которым требуется подключение к базам данных.

Тестирование и проверка приложений

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

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

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

Теперь можно начать развертывание системы для пользователей. Может быть целесообразным реализовать некую форму начального тестирования, когда в систему незаметно вводится несколько пользователей. Это позволит сделать беспристрастное заключение о качестве работы с новой базой данных: то же самое, лучше или хуже.