Condividi tramite


Creare e gestire le repliche in lettura dall'interfaccia della riga di comando di Azure, API REST

SI APPLICA A: Database di Azure per PostgreSQL - Server singolo

Importante

Database di Azure per PostgreSQL - Il server singolo è in fase di ritiro. È consigliabile eseguire l'aggiornamento a Database di Azure per PostgreSQL - Server flessibile. Per altre informazioni sulla migrazione a Database di Azure per PostgreSQL - Server flessibile, vedere Cosa succede a Database di Azure per PostgreSQL - Server singolo?.

Questo articolo illustra come creare e gestire le repliche in lettura nel Database di Azure per PostgreSQL utilizzando l'interfaccia della riga di comando di Azure e API REST. Per altre informazioni sulle repliche in lettura, vedere la panoramica.

Supporto replica di Azure

Le repliche in lettura e la decodifica logica dipendono dal log di scrittura in avanti Postgres (WAL) per informazioni. Queste due funzionalità richiedono livelli diversi di registrazione da Postgres. La decodifica logica richiede un livello superiore di registrazione rispetto alle repliche in lettura.

Per configurare il livello corretto di registrazione, usare il parametro di supporto della replica di Azure. Il supporto della replica di Azure include tre opzioni di impostazione:

  • Off : inserisce le informazioni meno contenute nel WAL. Questa impostazione non è disponibile nella maggior parte dei server di Database di Azure per PostgreSQL.
  • Replica : più dettagliato rispetto a Off. Si tratta del livello minimo di registrazione necessario per il funzionamento delle repliche in lettura. Questa impostazione è l'impostazione predefinita nella maggior parte dei server.
  • Logico : più dettagliato rispetto a Replica. Si tratta del livello minimo di registrazione per il funzionamento della decodifica logica. Le repliche di lettura funzionano anche in questa impostazione.

Nota

Quando si distribuiscono repliche per carichi di lavoro primari persistenti, pesanti e a elevato utilizzo di scrittura, l'intervallo di replica può continuare ad aumentare senza mai raggiungere il database primario. Ciò può anche aumentare l'utilizzo dell'archiviazione nel database primario, perché i file WAL non vengono eliminati fino a quando non vengono ricevuti dalla replica.

Interfaccia della riga di comando di Azure

È possibile creare e gestire repliche in lettura usando l'interfaccia della riga di comando di Azure.

Prerequisiti

Preparare il server primario

  1. Controllare il valore azure.replication_support del server primario. Dovrebbe essere almeno REPLICA perché le repliche in lettura possano funzionare.

    az postgres server configuration show --resource-group myresourcegroup --server-name mydemoserver --name azure.replication_support
    
  2. Se azure.replication_support non è almeno REPLICA, impostarlo.

    az postgres server configuration set --resource-group myresourcegroup --server-name mydemoserver --name azure.replication_support --value REPLICA
    
  3. Riavviare il server per applicare la modifica.

    az postgres server restart --name mydemoserver --resource-group myresourcegroup
    

Creare una replica in lettura

Il comando az postgres server replica create richiede i parametri seguenti:

Impostazione Valore di esempio Descrizione
resource-group myresourcegroup Gruppo di risorse in cui verrà creato il server di replica.
name mydemoserver-replica Nome del nuovo server di replica creato.
source-server mydemoserver Nome o ID risorsa del server primario esistente da cui eseguire la replica. Usare l'ID risorsa se si desidera che i gruppi di risorse della replica e del database primario siano diversi.

Nell'esempio dell'interfaccia della riga di comando seguente la replica viene creata nella stessa area del database primario.

az postgres server replica create --name mydemoserver-replica --source-server mydemoserver --resource-group myresourcegroup

Per creare una replica in lettura tra più aree, usare il parametro --location. L'esempio dell'interfaccia della riga di comando seguente crea la replica negli Stati Uniti occidentali.

az postgres server replica create --name mydemoserver-replica --source-server mydemoserver --resource-group myresourcegroup --location westus

Nota

Per altre informazioni sulle aree in cui è possibile creare una replica, vedere l'articolo Concetti relativi alle repliche in lettura.

Se il parametro azure.replication_support non è stato impostato su REPLICA nel server primario di Utilizzo generico o Con ottimizzazione per la memoria e il server non è stato riavviato, si riceverà un errore. Completare questi due passaggi prima di creare una replica.

Importante

Rivedere la sezione considerazioni della panoramica di Replica in lettura.

Prima che un'impostazione del server primario venga aggiornata a un nuovo valore, aggiornare l'impostazione della replica su un valore uguale o maggiore. Questa azione fa sì che le repliche siano sempre aggiornate con le modifiche apportate al primario.

Elencare repliche

È possibile visualizzare l'elenco delle repliche di un server primario usando il comando az postgres server replica list .

az postgres server replica list --server-name mydemoserver --resource-group myresourcegroup 

Arrestare la replica in un server di replica

È possibile arrestare la replica tra un server primario e una replica in lettura usando il comando az postgres server replica stop.

L'arresto della replica in un server primario e una replica in lettura è irreversibile. La replica in lettura diventa un server autonomo che supporta sia la lettura che la scrittura. Il server autonomo non può essere di nuovo impostato come replica.

az postgres server replica stop --name mydemoserver-replica --resource-group myresourcegroup 

Eliminare un server primario o di replica

Per eliminare un server primario o di replica, usare il comando az postgres server delete.

Quando viene eliminato un server primario, la replica viene arrestata per tutte le repliche in lettura. Le repliche in lettura diventano server autonomi che supportano sia la lettura che la scrittura.

az postgres server delete --name myserver --resource-group myresourcegroup

REST API

È possibile creare e gestire repliche in lettura usando l'API REST di Azure.

Preparare il server primario

  1. Controllare il valore azure.replication_support del server primario. Dovrebbe essere almeno REPLICA perché le repliche in lettura possano funzionare.

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/configurations/azure.replication_support?api-version=2017-12-01
    
  2. Se azure.replication_support non è almeno REPLICA, impostarlo.

    PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/configurations/azure.replication_support?api-version=2017-12-01
    
    {
     "properties": {
     "value": "replica"
     }
    }
    
  3. Riavviare il server per applicare la modifica.

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/restart?api-version=2017-12-01
    

Creare una replica in lettura

È possibile creare una replica in lettura usando l'API di creazione:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{replicaName}?api-version=2017-12-01
{
  "location": "southeastasia",
  "properties": {
    "createMode": "Replica",
    "sourceServerId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}"
  }
}

Nota

Per altre informazioni sulle aree in cui è possibile creare una replica, vedere l'articolo Concetti relativi alle repliche in lettura.

Se il parametro azure.replication_support non è stato impostato su REPLICA nel server primario di Utilizzo generico o Con ottimizzazione per la memoria e il server non è stato riavviato, si riceverà un errore. Completare questi due passaggi prima di creare una replica.

Una replica viene creata usando le stesse impostazioni di calcolo e archiviazione del server primario. Dopo aver creato una replica, è possibile modificare diverse impostazioni in modo indipendente dal server primario: la generazione di calcolo, i vCore, l'archiviazione e il periodo di conservazione dei backup. È anche possibile modificare in modo indipendente il piano tariffario, tranne da o verso il livello Basic.

Importante

Prima che un'impostazione del server primario venga aggiornata a un nuovo valore, aggiornare l'impostazione della replica su un valore uguale o maggiore. Questa azione fa sì che le repliche siano sempre aggiornate con le modifiche apportate al primario.

Elencare repliche

È possibile visualizzare l'elenco delle repliche di un server primario usando l'API elenco di repliche:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/Replicas?api-version=2017-12-01

Arrestare la replica in un server di replica

È possibile arrestare la replica tra un server primario e una replica in lettura usando l'API di aggiornamento.

L'arresto della replica in un server primario e una replica in lettura è irreversibile. La replica in lettura diventa un server autonomo che supporta sia la lettura che la scrittura. Il server autonomo non può essere di nuovo impostato come replica.

PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{replicaServerName}?api-version=2017-12-01
{
  "properties": {
    "replicationRole":"None"  
   }
}

Eliminare un server primario o di replica

Per eliminare un server primario o la replica, usare l'API di eliminazione:

Quando viene eliminato un server primario, la replica viene arrestata per tutte le repliche in lettura. Le repliche in lettura diventano server autonomi che supportano sia la lettura che la scrittura.

DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}?api-version=2017-12-01

Passaggi successivi