Progettare il primo Database di Azure per PostgreSQL tramite l'interfaccia della riga di comando di Azure

In questa esercitazione, si usano l'interfaccia della riga di comando di Azure e altre utilità per informazioni su come:

  • Creare un database di Azure per PostgreSQL
  • Configurare il firewall del server
  • Usare l'utilità psql per creare un database
  • Caricare dati di esempio
  • Eseguire query sui dati
  • Aggiornare i dati
  • Ripristinare i dati

È possibile usare Azure Cloud Shell nel browser o installare l'interfaccia della riga di comando di Azure 2.0 nel computer in uso per eseguire i blocchi di codice di questa esercitazione.

Avviare Azure Cloud Shell

Azure Cloud Shell è una shell Bash gratuita che può essere eseguita direttamente nel portale di Azure. Include l'interfaccia della riga di comando di Azure preinstallata e configurata per l'uso con l'account. Fare clic sul pulsante Cloud Shell nel menu nel riquadro in alto a destra nel portale di Azure.

Cloud Shell

Il pulsante avvia una shell interattiva che è possibile usare per eseguire tutti i passaggi in questo argomento:

Screenshot che mostra la finestra di Cloud Shell nel portale

Se si sceglie di installare e usare l'interfaccia della riga di comando in locale, per questo argomento è necessario eseguire la versione 2.0 o successiva dell'interfaccia della riga di comando di Azure. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure 2.0.

Se si dispone di più sottoscrizioni, scegliere la sottoscrizione appropriata in cui la risorsa esiste o per cui è configurata. Selezionare un ID di sottoscrizione specifico sotto l'account tramite il comando az account set.

az account set --subscription 00000000-0000-0000-0000-000000000000

Creare un gruppo di risorse

Creare un gruppo di risorse di Azure con il comando az group create. Un gruppo di risorse è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite come gruppo. Nell'esempio seguente viene creato un gruppo di risorse denominato myresourcegroup nella posizione westus.

az group create --name myresourcegroup --location westus

Creare un database di Azure per il server PostgreSQL

Creare un database di Azure per il server PostgreSQL tramite il comando az postgres server create. Un server contiene un gruppo di database gestiti come gruppo.

Nell'esempio seguente viene creato un server denominato mypgserver-20170401 nel gruppo di risorse myresourcegroup con account di accesso dell'amministratore del server mylogin. Il nome di un server esegue il mapping al nome DNS e pertanto deve essere univoco a livello globale in Azure. Sostituire <server_admin_password> con il proprio valore.

az postgres server create --resource-group myresourcegroup --name mypgserver-20170401 --location westus --admin-user mylogin --admin-password <server_admin_password> --performance-tier Basic --compute-units 50 --version 9.6
Importante

L'account di accesso amministratore server e la password qui specificati sono necessari per accedere al server e ai relativi database più avanti in questa guida introduttiva. Prendere nota di queste informazioni per usarle in seguito.

Per impostazione predefinita, il database postgres viene creato al di sotto del server. Il database postgres è un database predefinito che può essere usato da utenti, utilità e applicazioni di terze parti.

Configurare una regola del firewall a livello di server

Creare una regola del firewall a livello di server per PostgreSQL Azure tramite il comando az postgres server firewall-rule create. Una regola del firewall a livello di server consente a un'applicazione esterna, ad esempio psql o PgAdmin, di connettersi al server tramite il firewall del servizio PostgreSQL Azure.

È possibile impostare una regola del firewall relativa a un intervallo IP per consentire la connessione dalla rete. L'esempio seguente usa az postgres server firewall-rule create per creare una regola del firewall AllowAllIps per un intervallo di indirizzi IP. Per aprire tutti gli indirizzi IP, usare 0.0.0.0 come indirizzo IP iniziale e 255.255.255.255 come indirizzo finale.

az postgres server firewall-rule create --resource-group myresourcegroup --server mypgserver-20170401 --name AllowAllIps --start-ip-address 0.0.0.0 --end-ip-address 255.255.255.255
Nota

Il server PostgreSQL Azure comunica sulla porta 5432. Quando si esegue la connessione da una rete aziendale, il traffico in uscita sulla porta 5432 potrebbe non essere consentito dal firewall della rete. Richiedere al reparto IT di aprire la porta 5432 per connettersi al server di database SQL di Azure.

Ottenere le informazioni di connessione

Per connettersi al server, è necessario specificare le informazioni sull'host e le credenziali di accesso.

az postgres server show --resource-group myresourcegroup --name mypgserver-20170401

Il risultato è in formato JSON. Annotare l'administratorLogin e il fullyQualifiedDomainName.

{
  "administratorLogin": "mylogin",
  "fullyQualifiedDomainName": "mypgserver-20170401.postgres.database.azure.com",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.DBforPostgreSQL/servers/mypgserver-20170401",
  "location": "westus",
  "name": "mypgserver-20170401",
  "resourceGroup": "myresourcegroup",
  "sku": {
    "capacity": 50,
    "family": null,
    "name": "PGSQLS2M50",
    "size": null,
    "tier": "Basic"
  },
  "sslEnforcement": null,
  "storageMb": 51200,
  "tags": null,
  "type": "Microsoft.DBforPostgreSQL/servers",
  "userVisibleState": "Ready",
  "version": "9.6"
}

Connettersi al Database di Azure per il database PostgreSQL tramite psql

Se nel computer client è installato PostgreSQL, è possibile usare un'istanza locale di psql o la console Cloud di Azure per connettersi a un server PostgreSQL di Azure. Si usi ora l'utilità della riga di comando psql per connettersi al Database di Azure per il server PostgreSQL.

  1. Eseguire il comando psql seguente per connettersi a un database di Azure per il server PostgreSQL

    psql --host=<servername> --port=<port> --username=<user@servername> --dbname=<dbname>
    

    Ad esempio, il comando seguente permette di connettersi al database predefinito chiamato postgres nel server PostgreSQL mypgserver-20170401.postgres.database.azure.com usando le credenziali di accesso. Immettere il valore di <server_admin_password> scelto quando viene chiesta la password.

    psql --host=mypgserver-20170401.postgres.database.azure.com --port=5432 --username=mylogin@mypgserver-20170401 ---dbname=postgres
    
  2. Dopo aver eseguito la connessione al server, creare un database vuoto nel prompt.

    CREATE DATABASE mypgsqldb;
    
  3. Nel prompt, eseguire il comando seguente per cambiare la connessione nel database appena creato mypgsqldb:

    \c mypgsqldb
    

Creare tabelle nel database

Dopo aver appreso come connettersi al Database di Azure per PostgreSQL, si può passare al completamento di alcune attività di base.

In primo luogo, è possibile creare una tabella e caricarla con alcuni dati. Creare una tabella che tiene traccia delle informazioni riguardanti l'inventario.

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

È possibile visualizzare ora la tabella appena creata nell'elenco di tabelle digitando:

\dt

Caricare i dati nelle tabelle

Ora che abbiamo una tabella, possiamo inserire alcuni dati al suo interno. Nella finestra del prompt dei comandi aperta, eseguire la query seguente per inserire alcune righe di dati

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

A questo punto, sono presenti due righe di dati di esempio nella tabella creata in precedenza.

Eseguire una query e aggiornare i dati nelle tabelle

Eseguire la query seguente per recuperare informazioni dalla tabella del database.

SELECT * FROM inventory;

Si possono anche aggiornare i dati nelle tabelle

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

La riga viene aggiornata di conseguenza quando si recuperano dati.

SELECT * FROM inventory;

Ripristinare un database a un momento precedente

Si supponga di aver eliminato accidentalmente una tabella. Si tratta di un elemento che non è facile da ripristinare. Il Database di Azure per PostgreSQL consente di tornare in qualsiasi punto nel tempo (negli ultimi 7 giorni (Basic) e 35 giorni (Standard)) e ripristinare questo punto nel tempo in un nuovo server. È possibile usare questo nuovo server per ripristinare i dati eliminati. La procedura seguente consente di ripristinare il server di esempio in un punto precedente all'aggiunta della tabella.

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

Il comando az postgres server restore richiede i parametri seguenti:

Impostazione Valore consigliato Descrizione
--resource-group myResourceGroup Il gruppo di risorse in cui si trova il server di origine.
--name mypgserver-restored Il nome del nuovo server creato con il comando di ripristino.
restore-point-in-time 2017-04-13T13:59:00Z Selezionare un punto di ripristino temporizzato. La data e l'ora devono trovarsi all'interno del periodo di conservazione dei backup del server di origine. Usare il formato ISO8601 per la data e l'ora. È possibile usare il fuso orario locale, ad esempio 2017-04-13T05:59:00-08:00, o il formato UTC Zulu 2017-04-13T13:59:00Z.
--source-server mypgserver-20170401 Il nome o l'ID del server di origine da cui eseguire il ripristino.

Il ripristino temporizzato di un server crea un nuovo server, ovvero una copia del server originale nel momento specificato. I valori relativi al percorso e al piano tariffario del server ripristinato sono gli stessi del server di origine.

Il comando è sincrono e il risultato verrà restituito dopo il ripristino del server. Una volta terminato il ripristino, individuare il nuovo server creato. Verificare che i dati siano stati ripristinati come previsto.

Passaggi successivi

In questa esercitazione è stato illustrato come usare l'interfaccia della riga di comando di Azure e altre utilità per:

  • Creare un database di Azure per PostgreSQL
  • Configurare il firewall del server
  • Usare l'utilità psql per creare un database
  • Caricare dati di esempio
  • Eseguire query sui dati
  • Aggiornare i dati
  • Ripristinare i dati

Successivamente, per informazioni su come usare il portale di Azure per eseguire attività simili, esaminare questa esercitazione: Progettare il primo Database di Azure per PostgreSQL tramite il portale di Azure