Tutorial: Diseño de una instancia de Azure Database for PostgreSQL: servidor único con la CLI de Azure

Se aplica a: Azure Database for PostgreSQL: servidor único

Importante

El servicio de servidor único de Azure Database for PostgreSQL está en proceso de retirada. Es muy recomendable actualizar al servidor flexible de Azure Database for PostgreSQL. Para más información sobre la migración al servidor flexible de Azure Database for PostgreSQL, vea ¿Qué sucede con el servicio de servidor único de Azure Database for PostgreSQL?.

En este tutorial, usa la CLI (interfaz de la línea de comandos) de Azure y otras utilidades para aprender a hacer lo siguiente:

  • Creación de un servidor de Azure Database for PostgreSQL
  • Configuración del firewall del servidor
  • Uso de la utilidad psql para crear una base de datos
  • Carga de datos de muestra
  • Consultar datos
  • Actualización de datos
  • Restauración de datos

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Requisitos previos

Inicio de Azure Cloud Shell

Azure Cloud Shell es un shell interactivo gratuito que puede usar para ejecutar los pasos de este artículo. Tiene las herramientas comunes de Azure preinstaladas y configuradas para usarlas en la cuenta.

Para abrir Cloud Shell, seleccione Pruébelo en la esquina superior derecha de un bloque de código. También puede ir a https://shell.azure.com para iniciar Cloud Shell en una pestaña independiente del explorador.

Cuando se abra Cloud Shell, compruebe que Bash está seleccionado para el entorno. En las sesiones siguientes se usará la CLI de Azure en un entorno de Bash, seleccione Copiar para copiar los bloques de código, péguelos en Cloud Shell y, luego, presione Entrar para ejecutarlos.

Inicio de sesión en Azure

Cloud Shell se autentica de forma automática en la cuenta inicial con la que ha iniciado sesión. Use el script siguiente para iniciar sesión con otra suscripción, y reemplace <Subscription ID> con el id. de la suscripción de Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

subscription="<subscriptionId>" # add subscription here

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

Para más información, vea Establecimiento de la suscripción activa o Inicio de sesión de forma interactiva

Establecer Valores de parámetros

Los siguientes valores se usan en los comandos siguientes para crear la base de datos y los recursos necesarios. Los nombres de servidor deben ser únicos globalmente en todo Azure, por lo que la función $RANDOM se usa para crear el nombre del servidor.

Modifique la ubicación del modo adecuado para el entorno. Reemplace 0.0.0.0 por el intervalo de direcciones IP para que coincidan con el entorno específico. Use la dirección IP pública del equipo que usa para restringir el acceso al servidor solo a la dirección 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..."

Crear un grupo de recursos

Para crear un grupo de recursos, use el comando az group create. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus:

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

Creación de un servidor

Cree un servidor con el comando 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

Nota

  • El nombre del servidor solo puede contener letras minúsculas, números y el carácter de guion (-). Debe contener entre 3 y 63 caracteres. Para más información, consulte las reglas de nomenclatura de Azure Database for PostgreSQL.
  • El nombre del usuario administrador no puede ser azure_superuser, admin, administrator, root, guest o public.
  • La contraseña debe contener entre 8 y 128 caracteres de tres de las siguientes categorías: letras en mayúsculas, letras en minúscula, números y caracteres no alfanuméricos.
  • Para más información sobre las SKU, consulte Precios de Azure Database for PostgreSQL.

Importante

Configuración de una regla de firewall basada en servidor

Cree una regla de firewall con el comando az postgres server firewall-rule create para proporcionar al entorno local acceso para conectarse al servidor.

# 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

Sugerencia

Si no conoce su dirección IP, vaya a WhatIsMyIPAddress.com para obtenerla.

Nota

Para evitar problemas de conectividad, asegúrese de que el firewall de la red permite el puerto 5432. Los servidores de Azure Database for PostgreSQL usan ese puerto.

Enumeración de reglas de firewall basadas en servidor

Para enumerar las reglas de firewall de servidor existentes, ejecute el comando 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.

La salida enumera las reglas de firewall, si existen, en formato JSON de forma predeterminada. Puede usar el modificador --output table para obtener una salida en formato de tabla más legible.

Obtención de la información de conexión

Para conectarse a su servidor, especifique las credenciales de acceso y la información del host.

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

Tome nota de los valores de administratorLogin y fullyQualifiedDomainName.

Conexión al servidor de Azure Database for PostgreSQL mediante psql

El cliente de psql es una opción que se usa con frecuencia para conectarse a servidores PostgreSQL. Puede conectarse a un servidor mediante psql con Azure Cloud Shell. También puede usar psql en su entorno local, en caso de que esté disponible. Se crea automáticamente una base de datos vacía, postgres, con cada servidor PostgreSQL nuevo. Esa base de datos se puede usar para conectarse con psql, como se muestra en el código siguiente.

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

Sugerencia

Si prefiere usar una ruta URL para conectarse a Postgres, codifique la URL con el signo @ en el nombre de usuario con %40. Por ejemplo, la cadena de conexión de psql sería:

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

Crear una base de datos en blanco

  1. Una vez conectado al servidor, cree una base de datos vacía en el símbolo del sistema:

    CREATE DATABASE mypgsqldb;
    
  2. En el símbolo del sistema, ejecute el siguiente comando para cambiar la conexión a la base de datos mypgsqldb recién creada:

    \c mypgsqldb
    

Creación de tablas en la base de datos

Ahora que sabe cómo conectarse a la base de datos de Azure Database for PostgreSQL, puede completar algunas tareas básicas:

En primer lugar, cree una tabla y cárguela con algunos datos. Por ejemplo, vamos a crear una tabla que haga un seguimiento de la información del inventario:

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

Puede ver la tabla recién creada ahora en la lista de tablas si escribe lo siguiente:

\dt

Carga de datos en la tabla

Ahora que ya hay una tabla creada, inserte algunos datos en ella. En la ventana de símbolo del sistema abierta, ejecute la consulta siguiente para insertar algunas filas de datos:

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

Ahora ha agregado dos filas de datos de ejemplo en la tabla que creó anteriormente.

Consulta y actualización de los datos en las tablas

Ejecute la siguiente consulta para recuperar información de la tabla del inventario:

SELECT * FROM inventory;

También puede actualizar los datos en la tabla del inventario:

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

Puede ver los valores actualizados cuando recupera los datos:

SELECT * FROM inventory;

Restauración de una base de datos a un momento anterior en el tiempo

Imagine que ha eliminado accidentalmente una tabla. No se puede recuperar con facilidad. Azure Database for PostgreSQL permite volver a cualquier momento dado para el cual haya copias de seguridad del servidor (en función del período de retención de copia de seguridad que se configuró) y restaurar este momento dado en un nuevo servidor. Puede usar este servidor nuevo para recuperar los datos eliminados.

El comando siguiente restaura el servidor de ejemplo a un punto antes de que se agregara la tabla:

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

El comando az postgres server restore necesita los parámetros siguientes:

Configuración Valor sugerido Descripción
resource-group  myresourcegroup  Grupo de recursos en el que existe el servidor de origen. 
name mydemoserver-restored Nombre del nuevo servidor que se crea mediante el comando de restauración.
restore-point-in-time 2017-04-13T13:59:00Z Seleccione un momento dado en el que quiere restaurar. Esta fecha y hora debe estar dentro del período de retención de copia de seguridad del servidor de origen. Use el formato de fecha y hora ISO8601. Por ejemplo, puede usar su propia zona horaria local, como 2017-04-13T05:59:00-08:00, o usar el formato de hora Zulú UTC 2017-04-13T13:59:00Z.
source-server mydemoserver Nombre o identificador del servidor de origen desde el que se va a restaurar.

Al restaurar un servidor a un momento dado, se crea un servidor que se copia como servidor original a un momento dado que especifique. Los valores de ubicación y plan de tarifa del servidor restaurado son los mismos que los del servidor de origen.

El comando es sincrónico y se devolverá después de que se haya restaurado el servidor. Una vez finalizada la restauración, busque el servidor que se ha creado. Compruebe que los datos se han restaurado del modo esperado.

Limpieza de recursos

Use el comando siguiente para quitar el grupo de recursos y todos los recursos asociados con él mediante el comando az group delete, a menos que tenga una necesidad constante de estos recursos. Algunos de estos recursos pueden tardar un tiempo en crearse, así como en eliminarse.

az group delete --name $resourceGroup

Pasos siguientes

En este tutorial, aprendió a usar la CLI (interfaz de la línea de comandos) de Azure y otras utilidades para hacer lo siguiente:

  • Creación de un servidor de Azure Database for PostgreSQL
  • Configuración del firewall del servidor
  • Uso de la utilidad psql para crear una base de datos
  • Carga de datos de muestra
  • Consultar datos
  • Actualización de datos
  • Restauración de datos