La replica di sola lettura
Una replica di sola lettura Databases for PostgreSQL replica tutti i dati dal deployment leader al deployment di replica tramite una replica asincrona. Come suggerisce il nome, le repliche di sola lettura supportano le transazioni in lettura e possono essere utilizzate per bilanciare database con operazioni sia in scrittura che in lettura. La replica di sola lettura ha un singolo PostgreSQL e viene fatturata alle stesse tariffe di consumo per membro del leader.
La replica di sola lettura ad alta disponibilità
Una replica di sola lettura ad alta disponibilità Databases for PostgreSQL offre vantaggi quali una migliore scalabilità in lettura, una maggiore disponibilità, una latenza di lettura ridotta, funzionalità di backup e disaster recovery e la possibilità di distribuire il traffico in lettura in modo efficiente. Contribuisce a creare un'infrastruttura di database più robusta e reattiva per l'applicazione. Per ulteriori informazioni, vedere La Databases for PostgreSQL replica di sola lettura ad alta disponibilità.
Il leader
Nella scheda Repliche di sola lettura di un'installazione Databases for PostgreSQL prima che siano state fornite repliche di sola lettura, il riquadro centrale rileva che non esistono repliche di lettura e fornisce un pulsante Crea.
Se un'installazione client è leader e ha una replica di sola lettura già collegata, il riquadro Replicazione contiene un elenco di distribuzioni di replica e un collegamento a ciascuna di esse. Fare clic sull'icona a forma di ingranaggio a destra del nome della replica di sola lettura per gestirla.
Provisioning di una replica di sola lettura
Le risorse per PostgreSQL le distribuzioni sono allocate per ogni distribuzione e le distribuzioni normali hanno due membri. Poiché una replica di sola lettura ha un solo membro e il provisioning utilizza attualmente valori che sono la metà di quelli richiesti per la memoria e lo storage, il provisioning può fallire. L'interfaccia web non può modificare il valore per la conservazione e utilizza automaticamente il valore dell'installazione principale, che viene dimezzato. Se i dati non sono sufficienti, è necessario utilizzare l'API o la CLI per specificare il doppio dello spazio di archiviazione che si desidera fornire. (Lo stesso vale per la memoria, anche se una quantità inferiore di memoria potrebbe non impedire il ripristino) È in corso un aggiornamento per porre rimedio a questa situazione.
Provisioning attraverso l'interfaccia utente
Predisporre una replica di sola lettura dalla scheda Read replicas del leader facendo clic su Create read-only replica. L'istanza sorgente viene completata automaticamente. Il nome della replica di sola lettura viene generato automaticamente nel campo Nome del servizio, ma è possibile rinominarlo liberamente. È possibile scegliere la regione in cui distribuirlo e la sua allocazione iniziale di memoria. Le dimensioni del disco, la versione e gli endpoint pubblici o privati sono configurati automaticamente per corrispondere alle impostazioni della distribuzione leader.
Se si utilizza Key Protect, Bring Your Own Key (BYOK) è supportato solo durante il provisioning dalla CLI e dall'API. Altrimenti, la replica di sola lettura viene crittografata con una chiave generata.
Provisioning tramite CLI
Il provisioning di una replica di sola lettura tramite la CLI e l'API funziona in modo simile a provisioning di una distribuzione standard Databases for PostgreSQL.
Il provisioning è gestito dal Resource Controller e utilizza un parametro {"remote_leader_id": "crn:v1:..."} per specificare il leader della replica di cui si sta effettuando il provisioning.
Per eseguire il provisioning di una replica di sola lettura tramite la CLI, utilizzare un comando come:
ibmcloud resource service-instance-create <REPLICA_NAME_OR_CRN> databases-for-postgresql standard <REGION> \
-p \ '{
"remote_leader_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
"members_memory_allocation_mb": "2048",
"members_disk_allocation_mb": "10240"
}'
È necessario specificare sia la quantità di RAM che di disco, tenendo presente che la dimensione minima è di 8 GB di RAM e 10 GB di disco. È possibile specificare se la replica di sola lettura utilizza endpoint pubblici o privati. Non è possibile specificare una versione per la replica di sola lettura. La versione viene impostata automaticamente sulla stessa versione principale dell'installazione principale.
Provisioning tramite API
Il provisioning di una replica di sola lettura tramite l'API funziona in modo simile a provisioning di una distribuzione standard Databases for PostgreSQL.
Il provisioning è gestito dal Resource Controller e utilizza un parametro {"remote_leader_id": "crn:v1:..."} per specificare il leader della replica di cui si sta effettuando il provisioning.
Per eseguire il provisioning di una replica di sola lettura tramite l'API, utilizzare un comando come:
curl -X POST \
https://resource-controller.cloud.ibm.com/v2/resource_instances \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"name": "<REPLICA_NAME_OR_CRN>",
"target": "<REGION>",
"resource_group": "<RESOURCE_GROUP_ID>",
"resource_plan_id": "databases-for-postgresql-standard",
"parameters": {
"remote_leader_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
"members_memory_allocation_mb": "2048",
"members_disk_allocation_mb": "10240"
}
}'
È necessario specificare sia la quantità di RAM che di disco, tenendo presente che la dimensione minima è di 8 GB di RAM e 10 GB di disco. È possibile specificare se la replica di sola lettura utilizza endpoint pubblici o privati. Non è possibile specificare una versione per la replica di sola lettura. La versione viene impostata automaticamente sulla stessa versione principale dell'installazione principale.
La replica di sola lettura
Nella scheda Ripliche di lettura di una replica di sola lettura, Replicazione contiene il suo nome e la sua regione, nonché il nome e la regione del suo leader. Sono presenti anche i pulsanti per risincronizzare la replica di sola lettura e per promuoverla.
Controllo dello stato della replica
È necessario monitorare la replica, poiché lo stato della replica non viene monitorato automaticamente.
Controllare lo stato di replica di una replica di sola lettura con psql, ma solo dal suo leader. Connettersi alla distribuzione leader con psql utilizzando le credenziali admin. Una volta connesso, esegui il seguente comando:
SELECT * from pg_stat_replication;
Quando si controlla l'output per il ritardo delle repliche, si noti che application_name si riferisce all'ID di formazione delle repliche: l'ultima sezione popolata del nome della risorsa cloud (CRN). Cerca un sync_state valore "async", un state valore "Streaming" durante la replica e le statistiche temporali.
L'installazione client ha sempre una replica per il nodo HA accoppiato, application_name sarà lo stesso dell'installazione principale e il valore sync_state sarà "sync". Ci si deve aspettare un'ulteriore
riga di output per ogni replica di sola lettura, application_name sarà diverso e sync_state sarà "async". È quindi possibile valutare se è in sintonia con le informazioni aggiuntive fornite dai risultati
della query.
Per ulteriori informazioni, vedere pg_stat_replication.
Utenti e privilegi della replica in sola lettura
-
Qualsiasi utente sul leader, anche quelli presenti prima del provisioning della replica di sola lettura, può accedere ed eseguire letture su una replica di sola lettura con gli stessi privilegi sugli oggetti che ha sul leader.
-
Se si dispone di più di una replica di sola lettura collegata a un leader, un utente creato sul leader viene creato anche su tutte le altre repliche di sola lettura.
-
Gli utenti creati sul leader persistono sulla replica di sola lettura quando questa viene promossa a distribuzione autonoma, compreso l'utente
admin. Quando la replica di sola lettura viene promossa, gli utenti e i privilegi di tutti gli utenti del leader vengono trasferiti alla distribuzione promossa. -
Le operazioni di scrittura sulla replica di sola lettura per tutti gli utenti non vengono filtrate o rifiutate, ma falliscono a livello di database.
È anche possibile creare utenti con accesso alla replica di sola lettura e nessun accesso al leader dalla replica di sola lettura. Se si dispone di più di una replica di sola lettura collegata a un leader, un utente creato su una qualsiasi delle repliche di sola lettura viene creato anche su tutte le altre repliche di sola lettura.
Gli utenti della replica di sola lettura creati su una replica di sola lettura sono in grado di connettersi alle repliche ed eseguire letture. Gli utenti della replica in sola lettura non possono connettersi ed eseguire operazioni sul leader. Inoltre, non persistono quando una replica di sola lettura viene promossa a distribuzione autonoma.
Gli utenti creati in replica di sola lettura ricevono i privilegi dal leader, sono assegnati al ruolo ibm-cloud-base-user-ro e sono membri del gruppo ibm-cloud-base-user. Hanno accesso a tutti gli oggetti creati dagli
altri membri di questo gruppo, compresi gli utenti del leader creati tramite Credenziali di servizio, la CLI o l'API. Coerentemente con i privilegi di ibm-cloud-base-user, un utente creato per la replica in sola lettura
non ha accesso agli oggetti creati dall'utente admin o da altri utenti creati tramite psql. Per ulteriori informazioni, consultare la pagina PostgreSQL Ruoli e privilegi.
Risincronizzazione di una replica di sola lettura
Se è necessario risincronizzare una replica di sola lettura, fare clic sul pulsante Resync read-only replica. La risincronizzazione è un'operazione dirompente e l'esecuzione di una risincronizzazione comporta la distruzione e la ricostruzione dei dati nella replica di sola lettura. La replica di sola lettura non è in grado di eseguire altre operazioni o query mentre è in corso la risincronizzazione. Le query non vengono reindirizzate al leader, quindi qualsiasi connessione alla replica di sola lettura fallisce finché non viene terminata la risincronizzazione.
Il tempo necessario per risincronizzare una replica di sola lettura varia, ma il processo può essere lungo.
Risincronizzazione di una replica di sola lettura tramite la CLI
Per avviare una risincronizzazione tramite la CLI, utilizzare il comando cdb read-replica-resync.
ibmcloud cdb read-replica-resync <DEPLOYMENT_NAME_OR_CRN>
Risincronizzazione di una replica di sola lettura tramite API
Per avviare una risincronizzazione tramite l'API, inviare un POST all'endpoint /deployments/{id}/remotes/resync.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/resync \
-H 'Authorization: Bearer <>'
Promozione di una replica di sola lettura
Una replica di sola lettura può essere promossa a un cluster indipendente che può accettare operazioni di scrittura e di lettura. Se succede qualcosa alla distribuzione leader, la replica di sola lettura può essere promossa a cluster autonomo e iniziare ad accettare le scritture dall'applicazione. La promozione di un cluster read-replica a un cluster autonomo sarà più rapida se il cluster read-replica ha già più di un membro dati.
Al momento della promozione, la replica di sola lettura termina la connessione al leader e diventa una distribuzione autonoma Databases for PostgreSQL. L'installazione può iniziare ad accettare ed eseguire operazioni di lettura e scrittura, i backup sono abilitati e viene assegnato un proprio utente amministratore. Viene aggiunto un nuovo membro dei dati e l'installazione diventa un cluster con due membri dei dati. Questo aumenta il costo, in quanto viene fatturata la stessa tariffa di consumo per membro, ma lo schieramento ha due membri invece di uno.
Quando si promuove una replica di sola lettura, è possibile saltare il backup iniziale che verrebbe normalmente eseguito al momento della promozione. Saltando il backup iniziale, la replica diventa disponibile più rapidamente, ma non è disponibile un backup immediato. È possibile avviare un backup on-demand una volta completato il processo di promozione.
Una volta che una replica di sola lettura viene promossa a distribuzione indipendente, non è possibile riportarla a una replica di sola lettura o farla rientrare in un leader.
Promozione di una replica di sola lettura nell'interfaccia utente
Per promuovere una replica di sola lettura dall'interfaccia utente, fare clic su Promuovi replica di sola lettura.
Promozione di una replica di sola lettura nella CLI
Per promuovere tramite la CLI, utilizzare il comando cdb read-replica-promote.
ibmcloud cdb read-replica-promote <DEPLOYMENT_NAME_OR_CRN>
Promozione di una replica di sola lettura tramite API
Per promuovere attraverso l'API, inviare un POST all'endpoint /deployments/{id}/remotes/promotion.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/promotion \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{"promotion": {}}' \
Per promuovere e saltare il backup iniziale dopo la promozione, impostare anche skip_initial_backup nel corpo JSON.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/promotion \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{"promotion": {"skip_initial_backup": true}}' \
Tempo di completamento
L'attività di promozione viene completata solo quando il database è altamente disponibile. Tuttavia, la disponibilità di lettura/scrittura si verifica dopo circa 10 minuti con un'avvertenza importante: il database non è altamente disponibile fino al completamento dell'attività.
Il tempo di promozione completo di una replica di lettura è determinato dalla dimensione dei dati in due modi possibili:
- Le repliche di lettura sono membri singoli. Quando viene promossa, la specifica di formazione viene modificata a due membri, creando una seconda replica. Il tempo di creazione della replica dipende dalla dimensione dei dati. La creazione della replica avviene a 25 MB/s per evitare di saturare la rete. Quando i database crescono, la loro creazione può richiedere una notevole quantità di tempo. L'attività non viene completata fino a quando la creazione di quella replica non è terminata.
- Se si sceglie di eseguire un backup come parte della promozione, anche il completamento di tale backup deve avvenire prima del completamento dell'attività. Anche in questo caso, dipende dalle dimensioni del database.
Non c'è alcun membro ad alta disponibilità fino al completamento dell'attività di promozione. Allo stesso modo, se si è scelto di avere un backup iniziale, non esiste alcun backup fino al completamento del secondo punto o alla creazione di un backup manuale.
Aggiornamento durante la promozione
Se è necessario eseguire l'aggiornamento a una nuova versione principale del database, è possibile farlo quando si promuove una replica di sola lettura a una distribuzione autonoma. Per ulteriori informazioni, vedere Aggiornamento a una nuova versione principale.
Considerazioni sulla replica di sola lettura
-
La replica di sola lettura può esistere nella stessa regione della formazione di origine o in una diversa, consentendo di replicare i dati tra le regioni.
-
Una replica di sola lettura deve avere la stessa versione principale del suo leader.
-
I backup sono disabilitati sulle repliche di sola lettura. I backup vengono eseguiti solo sulle distribuzioni dei leader.
-
Le repliche sono ripristinabili in altre regioni, ad eccezione delle regioni abilitate per EU Cloud (attualmente
eu-de,eu-esepar-01), che sono ripristinabili solo tra loro (ad esempio, le repliche dipar-01possono essere ripristinate ineu-dee viceversa). -
C'è un limite di cinque repliche di sola lettura per leader.
-
La replica di sola lettura non partecipa alle elezioni leader->follower per il cluster leader e il failover alla replica di sola lettura non è automatizzato. La promozione della replica di sola lettura a una distribuzione completa è un'operazione manuale avviata dall'utente.
-
La dimensione minima di una replica di sola lettura è di 8 GB di RAM e 10 GB di disco. Questo vale anche se il vostro schieramento di leader è più piccolo.
-
Le repliche di sola lettura non scalano automaticamente per adattarsi al leader. Se la quantità di dati archiviati supera il disco allocato alle distribuzioni, scalare il disco sulle repliche di sola lettura e poi sul leader. Scalare prima la replica di sola lettura assicura che non si esaurisca lo spazio sulle repliche di sola lettura. Se il disco del leader è stato scalato per le prestazioni e non per lo spazio, non è necessario scalare le repliche di sola lettura.
-
La replica è asincrona e potrebbe essere soggetta a ritardi di replica. Per impostazione predefinita, non esiste una comunicazione coerente tra il primario e la replica. È possibile che una replica di sola lettura rimanga indietro abbastanza da dover essere risincronizzata. Il ritardo di replica può essere maggiore quando la replica si trova in una regione geograficamente lontana dal suo leader.
-
Se si monitora l'implementazione con il servizio IBM Cloud Monitoring, è possibile osservare la metrica del ritardo di replica di PostgreSQL Read per individuare le tendenze. Se per questa metrica viene visualizzato un valore di
-2, che potrebbe indicare un problema, completare i passaggi di Verifica dello stato della replica per determinare se la replica funziona come previsto. In caso di dubbi dopo aver controllato lo stato della replica, contattare l 'assistenza IBM Cloud per verificare la distribuzione prima di eseguire la risincronizzazione. -
Una replica di sola lettura è un'implementazione con un singolo membro di dati e non ha un'alta disponibilità interna. È soggetta a interruzioni temporanee e tempi di inattività durante la manutenzione. Se si dispone di applicazioni che si basano su repliche di sola lettura, assicurarsi di disporre di una logica che consenta di riprovare le query non riuscite o di effettuare il bilanciamento del carico su più repliche di sola lettura.
Stato della replica di sola lettura durante gli aggiornamenti della versione principale in loco
Con l'introduzione degli aggiornamenti delle versioni principali in loco nel nostro Databases for PostgreSQL servizio, le repliche di sola lettura possono aiutare a mantenere la continuità delle transazioni di lettura e rivelarsi particolarmente utili durante i processi di aggiornamento. Tuttavia, si noti che questa funzione non è ancora applicabile alle repliche di sola lettura. Tuttavia, se il servizio deve leggere i dati dall'istanza in cui è in corso l'aggiornamento, è possibile creare un'istanza di standby e aggiornare i dettagli di connessione dell'applicazione in modo che puntino all'istanza di standby. Questo ti assicura di avere una copia aggiornata del tuo database prima di iniziare l'aggiornamento. L'istanza di standby può anche essere promossa e utilizzata come istanza primaria se l'aggiornamento in loco non viene completato correttamente.
Durante un aggiornamento della versione principale in loco, l'istanza sorgente e le sue repliche di sola lettura perdono la funzionalità di replica, che non viene ripristinata automaticamente dopo l'aggiornamento (si noti inoltre che il cambio di versione le rende incompatibili). Tuttavia, le repliche di sola lettura rimangono pienamente operative come istanze autonome. Pertanto, è possibile promuovere in tutta sicurezza una replica di sola lettura a un'istanza primaria in qualsiasi momento, indipendentemente dal risultato dell'aggiornamento. In caso di errore dell'aggiornamento, la promozione di una replica di sola lettura consente di ripristinare rapidamente il database.