教程:使用 Azure CLI 设计 Azure Database for PostgreSQL - 单个服务器
适用于: Azure Database for PostgreSQL - 单一服务器
重要
Azure Database for PostgreSQL - 单一服务器即将停用。 我们强烈建议升级到 Azure Database for PostgreSQL 灵活服务器。 有关迁移到 Azure Database for PostgreSQL - 灵活服务器的详细信息,请参阅 Azure Database for PostgreSQL 单一服务器会发生什么情况?。
在本教程中,需使用 Azure CLI(命令行接口)以及其他实用工具了解如何完成以下操作:
- 创建 Azure Database for PostgreSQL 服务器
- 配置服务器防火墙
- 使用 psql 实用工具创建数据库
- 加载示例数据
- 查询数据
- 更新数据
- 还原数据
如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅。
先决条件
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
登录 Azure
使用以下脚本通过其他订阅登录,将 <Subscription ID>
替换为 Azure 订阅 ID。 如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅。
az cloud set -n AzureChinaCloud
az login
subscription="<subscriptionId>" # add subscription here
az account set -s $subscription # ...or use 'az login'
设置参数值
后续命令使用以下值来创建数据库和所需资源。 服务器名称需要在整个 Azure 中全局唯一,因此使用 $RANDOM 函数创建服务器名称。
根据需要更改环境的位置。 替换 IP 地址范围中的 0.0.0.0
,以匹配你的特定环境。 使用正在使用的计算机的公共 IP 地址将服务器限制为只允许你的 IP 地址访问。
# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
location="China East 2"
resourceGroup="msdocs-postgresql-rg-$randomIdentifier"
tags="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 资源的逻辑容器。 以下示例在“chinaeast2”位置创建名为“myResourceGroup”的资源组:
# Create a resource group
echo "Creating $resourceGroup in $location..."
az group create --name $resourceGroup --location "$location" --tag $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 Database for PostgreSQL 命名规则。
- 管理员用户的用户名不能是“azure_superuser”、“admin”、“administrator”、“root”、“guest”或“public”。
- 密码必须包含以下字符类别中的三类(8 到 128 个字符):英文大写字母、英文小写字母、数字及非字母数字字符。
- 有关 SKU 的信息,请参阅 Azure Database for PostgreSQL 定价。
重要
- 服务器上的默认 PostgreSQL 版本为 9.6。 若要查看支持的所有版本,请参阅支持的 PostgreSQL 主要版本。
- 默认情况下,服务器上启用 SSL。 有关 SSL 的详细信息,请参阅配置 SSL 连接。
配置基于服务器防火墙规则
使用 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 Database for 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 值 。
使用 psql 连接到 Azure Database for PostgreSQL 服务器
psql 客户端是连接到 PostgreSQL 服务器的热门选择。 可以在本地环境中使用 psql
(如果可用)。 将使用新的 PostgreSQL 服务器自动创建空数据库 postgres。 可以使用该数据库与 psql
连接,如下面的代码所示。
psql --host=<server_name>.postgres.database.chinacloudapi.cn --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.chinacloudapi.cn:5432/postgres
创建空数据库
连接到服务器后,在出现提示时创建空数据库:
CREATE DATABASE mypgsqldb;
出现提示时,请执行以下命令,将连接切换到新建的数据库 mypgsqldb :
\c mypgsqldb
在数据库中创建表
现已介绍了如何连接 Azure Database for 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);
现已将两行示例数据添加到了之前创建的表中。
查询和更新表中的数据
执行以下查询,从库存表中检索信息:
SELECT * FROM inventory;
还可以更新库存表中的数据:
UPDATE inventory SET quantity = 200 WHERE name = 'banana';
检索数据时,可以看到更新后的值:
SELECT * FROM inventory;
将数据库还原到以前的时间点
假设你意外删除了某个表。 这是不能轻易还原的内容。 使用 Azure Database for 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-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 | 要从其还原的源服务器的名称或 ID。 |
将服务器还原到某个时间点会创建一个新服务器,该服务器是通过复制所指定的时间点之前那段时间的原始服务器而生成的。 还原的服务器的位置值和定价层值与源服务器相同。
该命令是同步的,且会在服务器还原后返回。 还原完成后,找到创建的新服务器。 验证数据是否按预期还原。
清理资源
使用 az group delete 命令删除资源组以及与其关联的所有资源 - 除非你持续需要这些资源。 其中一些资源在创建和删除时可能要稍等片刻。
az group delete --name $resourceGroup
后续步骤
本教程介绍如何使用 Azure CLI(命令行接口)以及其他实用工具完成以下任务:
- 创建 Azure Database for PostgreSQL 服务器
- 配置服务器防火墙
- 使用 psql 实用工具创建数据库
- 加载示例数据
- 查询数据
- 更新数据
- 还原数据