Краткое руководство. Использование библиотек Azure (SDK) для Python для управления экземпляром гибкого сервера PostgreSQL
В этом кратком руководстве вы узнаете, как использовать пакет Azure SDK для Python для взаимодействия с экземпляром гибкого сервера базы данных Azure для PostgreSQL.
Гибкий сервер Базы данных Azure для PostgreSQL — это управляемая служба для запуска, управления и масштабирования высокодоступных баз данных PostgreSQL в облаке. Пакет SDK для Python можно использовать для подготовки гибкого экземпляра сервера Azure Database для PostgreSQL, нескольких серверов или нескольких баз данных на одном сервере.
С помощью этой библиотеки можно выполнить следующие операции:
- Создание гибкого сервера PostgreSQL
- Управление базами данных
- Настройка правил брандмауэра
- Операции масштабирования
- Резервное копирование и восстановление
Это руководство поможет вам изучить основные функциональные возможности этого пакета SDK, включая создание гибкого экземпляра сервера, просмотр созданного сервера, создание базы данных и удаление экземпляра.
Предварительные условия
Учетная запись с активной подпиской
Учетная запись Azure с активной подпиской создайте ее бесплатно.
Установка библиотек
Установите следующие библиотеки Azure Python.
pip install azure-mgmt-resource
pip install azure-identity
pip install azure-mgmt-postgresqlflexibleservers
Выполните команду входа
Войдите в учетную запись, используя azurecli
для проверки подлинности своей учетной записи.
az login
После выполнения этой команды выберите действительную учетную запись для входа и затем выберите идентификатор подписки из списка, чтобы войти в систему.
Создание сервера
create_postgres_flexible_server.py
Создайте файл и добавьте следующий код.
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient
def main():
client = PostgreSQLManagementClient(
credential=DefaultAzureCredential(),
subscription_id="<subscription-id>",
)
response = client.servers.begin_create(
resource_group_name="<resource-group-name>",
server_name="<server-name>",
parameters={
"location": "<region>",
"properties": {
"administratorLogin": "<admin-username>",
"administratorLoginPassword": "<password>",
"availabilityZone": "1",
"backup": {"backupRetentionDays": 7, "geoRedundantBackup": "Disabled"},
"createMode": "Create",
"highAvailability": {"mode": "ZoneRedundant"},
"network": {
"delegatedSubnetResourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>",
"privateDnsZoneArmResourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Network/privateDnsZones/<private-DNS-zone-name>.postgres.database.azure.com",
},
"version": "<pg-version>",
},
"sku": {"name": "<sku-name>", "tier": "<tier-type>"},
"tags": {"ElasticServer": "1"},
},
).result()
print(response)
if __name__ == "__main__":
main()
Замените следующие параметры данными:
- идентификатор подписки: собственный идентификатор подписки.
- группа ресурсов: назовите группу ресурсов, которую вы хотите использовать. Если он не существует, скрипт создает новый.
-
имя сервера: уникальное имя, определяющее гибкий экземпляр сервера Azure Database для PostgreSQL. Доменное имя
postgres.database.azure.com
добавляется к указанному имени сервера. Имя сервера должно быть не менее трех символов и не более 63 символов и может содержать только строчные буквы, цифры и дефисы. -
Расположение: регион Azure, в котором вы хотите создать гибкий экземпляр сервера базы данных Azure для PostgreSQL. Он определяет географическое расположение, в котором находится ваш сервер и его данные. Выберите регион, близкий к пользователям для уменьшения задержки. Расположение должно быть указано в формате коротких имен в регионе Azure, например
westus2
,eastus
илиnortheurope
. - admin-username: имя пользователя основного администратора для сервера. После создания сервера можно создать дополнительных пользователей.
- пароль: пароль для основного администратора сервера. Пароль должен содержать от 8 до 128 символов. Пароль должен содержать символы из трех категорий: английские прописные буквы, строчные буквы английского языка, цифры (от 0 до 9) и нефанно-цифровые символы (!, $, #, %, и т. д.).
Можно также добавить значения для других параметров, таких как имя виртуальной сети, имя подсети, частная зона DNS и настройка других параметров, таких как размер хранилища, версия ядра и т. д.
Примечание.
Класс DefaultAzureCredential пытается пройти проверку подлинности с помощью различных методов, таких как переменные среды, управляемые удостоверения или Azure CLI.
Убедитесь, что у вас есть один из этих методов. Дополнительные сведения о проверке подлинности см. в документации по пакету SDK Azure.
Выполнение этого кода инициирует процесс создания экземпляра, который может занять несколько минут.
Просмотр развернутых ресурсов
Вы можете использовать пакет SDK для Python, портал Azure, Azure CLI, Azure PowerShell и различные другие средства для проверки развертывания и проверки развернутых ресурсов. Ниже приведены некоторые примеры.
Проверка развертывания с помощью пакета SDK для Python
Добавьте функцию check_server_created
в существующий скрипт, чтобы использовать атрибут серверов экземпляра PostgreSQLManagementClient для проверки, был ли создан экземпляр гибкого сервера в базе данных Azure для PostgreSQL.
def check_server_created(subscription_id, resource_group, server_name):
# Authenticate with your Azure account
credential = DefaultAzureCredential()
# Create PostgreSQL management client
postgres_client = PostgreSQLManagementClient(credential, subscription_id)
try:
server = postgres_client.servers.get(resource_group, server_name)
if server:
print(f"Server '{server_name}' exists in resource group '{resource_group}'.")
print(f"Server state: {server.state}")
else:
print(f"Server '{server_name}' not found in resource group '{resource_group}'.")
except Exception as e:
print(f"Error occurred: {e}")
print(f"Server '{server_name}' not found in resource group '{resource_group}'.")
Вызовите его с соответствующими параметрами.
check_server_created(subscription_id, resource_group, server_name)
Примечание.
Функция check_server_created
возвращает состояние сервера сразу после его обеспечения. Тем не менее, сервер может занять несколько минут, чтобы стать полностью доступным. Перед подключением к нему убедитесь, что сервер будет готов. Он вернет состояние, идентификатор, имя, расположение и другие параметры в ответ на метод postgres_client.servers.get.
Создание базы данных с помощью Python
Создание базы данных на гибком сервере с помощью этого примера кода
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient
def main():
client = PostgreSQLManagementClient(
credential=DefaultAzureCredential(),
subscription_id=<subscription-id>,
)
# Create database
response = client.databases.begin_create(
resource_group_name="<resource-group-name>",
server_name="<server-name>",
database_name="<database-name>",
parameters={"properties": {"charset": "utf8", "collation": "en_US.utf8"}},
).result()
print(response)
if __name__ == "__main__":
main()
Замените следующие параметры данными
- идентификатор подписки: собственный идентификатор подписки.
- имя группы ресурсов: назовите группу ресурсов, которую вы хотите использовать. Сценарий создает новую группу ресурсов, если она не существует.
- sever-name: имя гибкого экземпляра сервера базы данных Azure, созданного ранее
- имя базы данных: имя базы данных, которую вы хотите создать.
Очистка ресурсов
Если вам больше не нужен гибкий экземпляр сервера База данных Azure для PostgreSQL, его можно удалить и связанную группу ресурсов с помощью портала, пакета SDK для Python или Azure CLI.
Удаление экземпляра с помощью пакета SDK для Python
Создайте файл delete_server.py, чтобы удалить созданный экземпляр сервера Базы данных Azure для PostgreSQL.
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient
def main():
client = PostgreSQLManagementClient(
credential=DefaultAzureCredential(),
subscription_id=<subscription-id>,)
client.servers.begin_delete(
resource_group_name=<rg-name>,
server_name=<server-name>,
).result()
if __name__ == "__main__":
main()