Руководство по проектированию База данных Azure для PostgreSQL с помощью Azure CLI

Область применения: отдельный сервер Базы данных Azure для PostgreSQL

Внимание

База данных Azure для PostgreSQL — одиночный сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для PostgreSQL — гибкий сервер. Дополнительные сведения о миграции на База данных Azure для PostgreSQL — гибкий сервер см. в статье "Что происходит с одним сервером База данных Azure для PostgreSQL?".

Из этого руководства вы узнаете, как с помощью Azure CLI (интерфейса командной строки) и других служебных программ выполнять следующие операции:

  • Создание сервера Базы данных Azure для PostgreSQL
  • настройка брандмауэра сервера;
  • использование служебной программы psql для создания базы данных;
  • Отправка примера данных
  • Запрос данных
  • Обновление данных
  • восстановление данных.

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

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

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

Запуск Azure Cloud Shell

Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье. Она включает предварительно установленные общие инструменты Azure и настроена для использования с вашей учетной записью.

Чтобы открыть Cloud Shell, просто выберите Попробовать в правом верхнем углу блока кода. Cloud Shell можно также запустить в отдельной вкладке браузера, перейдя на страницу https://shell.azure.com.

Когда откроется Cloud Shell, убедитесь, что для вашей среды выбран вариант Bash. В последующих сеансах в среде Bash будет использоваться Azure CLI. Нажмите кнопку Копировать, чтобы скопировать блоки кода. Вставьте код в Cloud Shell и нажмите клавишу ВВОД, чтобы выполнить его.

Вход в Azure

Проверка подлинности Cloud Shell автоматически производится с данными той учетной записи, с которой был осуществлен вход. Используйте следующий скрипт, чтобы войти с другой подпиской, указав вместо <Subscription ID> идентификатор нужной подписки Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

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

Установка значений параметра

Следующие значения используются в последующих командах для создания базы данных и требуемых ресурсов. Имена серверов должны быть глобально уникальными в Azure, поэтому для создания имени сервера используется функция $RANDOM.

Измените расположение на соответствующее вашей среде. Замените значения 0.0.0.0 в диапазоне IP-адресов в соответствии с конкретной средой. Воспользуйтесь общедоступным IP-адресом используемого компьютера, чтобы разрешить доступ к серверу только своему IP-адресу.

# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
location="East US"
resourceGroup="msdocs-postgresql-rg-$randomIdentifier"
tag="create-postgresql-server-and-firewall-rule"
server="msdocs-postgresql-server-$randomIdentifier"
sku="GP_Gen5_2"
login="azureuser"
password="Pa$$w0rD-$randomIdentifier"
# Specify appropriate IP address values for your environment
# to limit / allow access to the PostgreSQL server
startIp=0.0.0.0
endIp=0.0.0.0
echo "Using resource group $resourceGroup with login: $login, password: $password..."

Создание или изменение группы ресурсов

Создайте группу ресурсов с помощью команды az group create. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

# Create a resource group
echo "Creating $resourceGroup in $location..."
az group create --name $resourceGroup --location "$location" --tags $tag

Создание сервера

Создайте сервер с помощью команды az postgres server create.

# Create a PostgreSQL server in the resource group
# Name of a server maps to DNS name and is thus required to be globally unique in Azure.
echo "Creating $server in $location..."
az postgres server create --name $server --resource-group $resourceGroup --location "$location" --admin-user $login --admin-password $password --sku-name $sku

Примечание.

  • Имя сервера может содержать только строчные буквы, цифры и знак дефиса (-). Длина должна составлять от 3 до 63 символов. Дополнительные сведения см. в статье Правила именования в службе "База данных Azure для PostgreSQL".
  • В качестве имени пользователя для администратора нельзя использовать варианты azure_superuser, admin, administrator, root, guest или public.
  • Пароль должен содержать от 8 до 128 знаков трех из следующих категорий: прописные латинские буквы, строчные латинские буквы, цифры и другие символы.
  • Дополнительные сведения об SKU см. на странице Цены на Базу данных Azure для PostgreSQL.

Внимание

Настройка правила брандмауэра на уровне сервера

Создайте правило брандмауэра с помощью команды az postgres server firewall-rule create, чтобы предоставить вашей локальной среде доступ для подключения к серверу.

# Configure a firewall rule for the server 
echo "Configuring a firewall rule for $server for the IP address range of $startIp to $endIp"
az postgres server firewall-rule create --resource-group $resourceGroup --server $server --name AllowIps --start-ip-address $startIp --end-ip-address $endIp

Совет

Если вы не знаете свой IP-адрес, перейдите на сайт WhatIsMyIPAddress.com, чтобы его получить.

Примечание.

Во избежание проблем с подключением убедитесь, что в брандмауэре сети разрешен порт 5432. Серверы службы "База данных Azure для PostgreSQL" используют этот порт.

Список правил брандмауэра на основе сервера

Чтобы вывести список имеющихся правил брандмауэра сервера, запустите команду az postgres server firewall-rule list.

# List firewall rules for the server
echo "List of server-based firewall rules for $server"
az postgres server firewall-rule list --resource-group $resourceGroup --server-name $server
# You may use the switch `--output table` for a more readable table format as the output.

Выходные данные будут содержать правила брандмауэра (если они имеются) в используемом по умолчанию формате JSON. Вы можете использовать --output table, чтобы получить выходные данные в виде более удобной таблицы.

Получение сведений о подключении

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

az postgres server show --resource-group $resourceGroup --name $server

Запишите значения administratorLogin и fullyQualifiedDomainName.

Подключение к Базе данных Azure для PostgreSQL с помощью psql

Клиент psql — популярное средство, используемое для подключения к серверам PostgreSQL. Вы можете подключиться к серверу, используя psql в Azure Cloud Shell. Вы можете также использовать psql в локальной среде, если она доступна. С новым сервером PostgreSQL автоматически создается пустая база данных postgres. Эту базу данных можно использовать для подключения к psql, как показано в следующем коде.

psql --host=<server_name>.postgres.database.azure.com --port=5432 --username=<admin_user>@<server_name> --dbname=postgres

Совет

Если вы предпочитаете использовать URL-путь для подключения к Postgres, закодируйте с помощью URL-адреса знак @ в имени пользователя с использованием %40. Например, строка подключения для psql будет выглядеть так:

psql postgresql://<admin_user>%40<server_name>@<server_name>.postgres.database.azure.com:5432/postgres

Создание пустой базы данных

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

    CREATE DATABASE mypgsqldb;
    
  2. Чтобы подключиться к созданной базе данных mypgsqldb, выполните следующую команду в командной строке:

    \c mypgsqldb
    

Создание таблиц в базе данных

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

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

CREATE TABLE inventory (
  id serial PRIMARY KEY, 
  name VARCHAR(50), 
  quantity INTEGER
);

Вы можете просмотреть созданную таблицу в списке таблиц, введя:

\dt

Загрузка данных в таблицу

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

INSERT INTO inventory (id, name, quantity) VALUES (1, 'banana', 150); 
INSERT INTO inventory (id, name, quantity) VALUES (2, 'orange', 154);

Итак, в созданной ранее таблице добавлено две строки демонстрационных данных.

Запрос и обновление данных в таблицах

Чтобы извлечь сведения из таблицы inventory, выполните приведенный ниже запрос:

SELECT * FROM inventory;

Вы можете также обновить данные в таблице inventory:

UPDATE inventory SET quantity = 200 WHERE name = 'banana';

При извлечении данных вы увидите обновленные значения:

SELECT * FROM inventory;

Восстановление базы данных до предыдущей точки во времени

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

Указанная ниже команда позволяет восстановить демонстрационный сервер до точки во времени, когда таблица еще не была создана:

az postgres server restore --resource-group myresourcegroup --name mydemoserver-restored --restore-point-in-time 2017-04-13T13:59:00Z --source-server mydemoserver

Для команды az postgres server restore необходимо настроить следующие параметры:

Параметр Предлагаемое значение Описание
resource-group  myresourcegroup  Группа ресурсов, в которой находится исходный сервер. 
name mydemoserver-restored Имя нового сервера, созданного командой restore.
restore-point-in-time 2017-04-13T13:59:00Z Выберите точку во времени, до которой необходимо выполнить восстановление. Значения даты и времени должны находиться в пределах срока хранения резервной копии исходного сервера. Используйте формат даты и времени ISO8601. Например, вы можете использовать свой местный часовой пояс, например 2017-04-13T05:59:00-08:00, или использовать формат UTC Zulu 2017-04-13T13:59:00Z.
source-server mydemoserver Имя или идентификатор исходного сервера, с которого необходимо выполнить восстановление.

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

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

Очистка ресурсов

Если вам больше не нужны определенные ресурсы, вы можете удалить их и соответствующую группу ресурсов с помощью команды az group delete. Как создание, так и удаление определенных ресурсов может занять некоторое время.

az group delete --name $resourceGroup

Следующие шаги

Из этого руководства вы узнали, как с помощью Azure CLI (интерфейса командной строки) и других служебных программ выполнить следующие операции:

  • Создание сервера Базы данных Azure для PostgreSQL
  • настройка брандмауэра сервера;
  • использование служебной программы psql для создания базы данных;
  • Отправка примера данных
  • Запрос данных
  • Обновление данных
  • восстановление данных.