Configurazione delle repliche di lettura
È possibile impostare la distribuzione IBM Cloud® Databases for MySQL come replica in lettura di un'altra distribuzione Databases for MySQL.
Una replica di lettura è impostata per replicare tutti i dati dall'istanza di origine all'implementazione di replica utilizzando una replica asincrona. Come suggerisce il nome, le repliche di lettura supportano le transazioni di lettura e possono essere utilizzate per bilanciare database con operazioni sia di scrittura che di lettura. È inoltre possibile utilizzare la promozione della replica in lettura per il recupero dei dati in caso di guasto dell'istanza del database di origine. La replica di lettura ha un singolo MySQL e viene fatturata alle stesse tariffe di consumo per membro dell'istanza del database di origine.
Leggi le considerazioni sulla replica
-
Una replica di lettura può esistere nella stessa regione dell'istanza del database di origine o in una diversa, consentendo di replicare i dati tra le regioni.
-
Una replica di lettura deve avere la stessa versione principale della sua istanza di database di origine.
-
I backup sono disabilitati sulle repliche di lettura. I backup vengono eseguiti solo sulle istanze del database di origine.
-
La replica in lettura non è supportata all'interno o all'esterno delle regioni abilitate a EU Cloud (attualmente
eu-de). È supportato all'interno di queste regioni. -
C'è un limite di cinque repliche di lettura per istanza sorgente.
-
La replica di lettura non partecipa alle elezioni dell'istanza del database di origine e il failover alla replica di lettura non è automatizzato. La promozione della replica di lettura a distribuzione completa è un'operazione manuale avviata dall'utente.
-
La dimensione minima di una replica di lettura è di 2 GB di RAM e 20 GB di disco. Questo vale anche se la distribuzione dell'istanza del database di origine è più piccola.
-
Le repliche di lettura non si autoscalano per adattarsi all'istanza del database di origine. Se la quantità di dati archiviati supera il disco allocato alle distribuzioni, scalare il disco sulle repliche di lettura e quindi sull'istanza del database di origine. Scalare prima la replica di lettura assicura che non si esaurisca lo spazio sulle repliche di lettura. Se il disco dell'istanza del database di origine è stato scalato per le prestazioni e non per lo spazio, non è necessario scalare le repliche di lettura.
-
La replica è asincrona e potrebbe essere soggetta a ritardi di replica. Per impostazione predefinita, non c'è comunicazione tra il primario e la replica per quanto riguarda la consistenza. È possibile che una replica di lettura rimanga indietro abbastanza da dover essere risincronizzata. Il ritardo della replica può essere maggiore quando la replica si trova in una regione geograficamente lontana dall'istanza del database di origine.
-
Una replica di 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 avete applicazioni che si basano su repliche di lettura, assicuratevi di avere una logica per riprovare le query non riuscite o il bilanciamento del carico su più repliche di lettura.
Il leader
Nella scheda Read Replicas di un'implementazione Databases for MySQL prima del provisioning di qualsiasi replica di lettura, il riquadro centrale nota che non esistono repliche di lettura e fornisce un pulsante Create.
Se un'installazione client è leader e ha una replica di lettura già collegata, il riquadro Replicazione contiene un elenco di distribuzioni di replica e un collegamento a ciascuna di esse.
Provisioning di una replica di lettura
È possibile fornire una replica di lettura dalla scheda Read Replicas del leader facendo clic su Create Read Replica. L'istanza di origine viene compilata automaticamente. Il nome della replica di lettura viene generato automaticamente nel campo Nome 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 dell'installazione del database di origine.
Se si utilizza Key Protect, Bring Your Own Key (BYOK) è supportato solo durante il provisioning da CLI e API. Altrimenti, la replica letta viene crittografata con una chiave generata.
Provisioning tramite API o CLI
Il provisioning di una replica di lettura tramite la CLI e l'API funziona in modo simile a provisioning di una distribuzione standard Databases for MySQL.
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.
Ad esempio, per eseguire il provisioning di una replica di lettura tramite la CLI,
ibmcloud resource service-instance-create <replica_name> databases-for-mysql standard <region> \
-p \ '{
"remote_leader_id": "crn:v1:bluemix:public:databases-for-mysql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
"members_memory_allocation_mb": "2048",
"members_disk_allocation_mb": "10240"
}'
Lo stesso parametro viene utilizzato per il provisioning di una replica di lettura tramite l'API Resource Controller.
curl -X POST \
https://resource-controller.cloud.ibm.com/v2/resource_instances \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"name": "<replica_name>",
"target": "<region>",
"resource_group": "<your_resource_group_id>",
"resource_plan_id": "databases-for-mysql-standard",
"remote_leader_id": "crn:v1:bluemix:public:databases-for-mysql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
"members_memory_allocation_mb": "2048",
"members_disk_allocation_mb": "10240"
}'
Sia per i comandi CLI che per quelli API, è necessario specificare le quantità di RAM e di disco, tenendo presente che la dimensione minima è di 2 GB di RAM e 20 GB di disco. È possibile specificare se la replica di lettura utilizza endpoint pubblici o privati. Non è possibile specificare una versione per la replica di lettura. La versione viene impostata automaticamente sulla stessa versione principale dell'istanza di database di origine.
La replica di lettura
Nella scheda Repliche di lettura di una replica di lettura, il riquadro Repliche contiene il suo nome e la sua regione, nonché il nome e la regione della sua istanza di database di origine. Dispone inoltre di pulsanti per risincronizzare la replica di lettura e per promuoverla.
Controllo dello stato della replica
Lo stato della replica non viene monitorato automaticamente; è necessario monitorare la replica.
È possibile verificare lo stato di replica e il ritardo di replica di una replica di lettura con mysql dalla sua istanza di database di origine. Connettersi all'istanza del database di origine con mysql utilizzando le credenziali admin. Una volta effettuata la connessione, eseguire il seguente comando:
mysql> SHOW SLAVE STATUS \G
Un campo chiave del rapporto di stato del comando sarà Seconds_Behind_Master: _. È il numero di secondi in cui il thread SQL di replica è in ritardo nell'elaborazione del registro binario dell'origine.
Per ulteriori informazioni, vedere MySQL's Checking Replication Status.
Leggere Utenti e privilegi di Replica
-
Qualsiasi utente sull'istanza del database di origine, anche quelli presenti prima del provisioning della replica di lettura, può accedere ed eseguire letture su una replica di lettura con gli stessi privilegi sugli oggetti che ha sull'istanza del database di origine.
-
Se si dispone di più di una replica di lettura collegata a un'istanza del database di origine, un utente creato sull'origine viene creato anche su tutte le altre repliche di lettura.
-
Gli utenti creati sull'istanza del database di origine persistono sulla replica di lettura quando questa viene promossa a distribuzione autonoma, compreso l'utente
admin. Quando la replica di lettura viene promossa, gli utenti e i privilegi di tutti gli utenti dell'istanza del database di origine vengono trasferiti all'installazione promossa. -
Le operazioni di scrittura sulla replica di lettura per tutti gli utenti non vengono filtrate o rifiutate, ma falliscono a livello di database.
-
Gli utenti della replica di lettura creati su una replica di lettura sono in grado di connettersi all'istanza del database di origine con il permesso
SELECT.
Risincronizzazione di una replica di lettura
Se è necessario risincronizzare una replica di lettura, fare clic sul pulsante Resync Read Replica. La risincronizzazione è un'operazione dirompente e l'esecuzione di una risincronizzazione comporta la distruzione e la ricostruzione dei dati nella replica di lettura. La replica di lettura non è in grado di eseguire altre operazioni o query mentre è in corso la risincronizzazione. Le query non vengono reindirizzate all'istanza del database di origine, per cui tutte le connessioni alla replica di lettura falliscono finché non viene terminata la risincronizzazione.
Il tempo necessario per risincronizzare una replica di lettura varia, ma il processo può essere molto lungo.
Per avviare una risincronizzazione tramite la CLI, utilizzare il comando cdb read-replica-resync.
ibmcloud cdb read-replica-resync <deployment name>
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 lettura
Una replica di lettura può essere promossa a un cluster indipendente che può accettare operazioni di scrittura e di lettura. Se succede qualcosa all'istanza del database di origine, la replica di lettura può essere promossa a cluster autonomo e iniziare ad accettare le scritture dall'applicazione.
Per promuovere una replica di lettura dall'interfaccia utente, fare clic sul pulsante Promuovi replica di lettura.
Al momento della promozione, la replica di lettura termina la connessione all'istanza del database di origine e diventa una distribuzione autonoma Databases for MySQL. 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 di dati e l'installazione diventa un cluster con tre membri di dati. Questo aumenta il costo, poiché viene fatturata la stessa tariffa di consumo per membro, ma lo schieramento ha tre membri invece di uno.
Quando si promuove una replica di 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 lettura viene promossa a distribuzione indipendente, non è possibile riportarla a una replica di lettura o farla rientrare in un'istanza del database di origine.
Per promuovere tramite la CLI, utilizzare il comando cdb read-replica-promote.
ibmcloud cdb read-replica-promote <deployment name>
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
La ricetta 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 della ricetta.
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, vengono aggiunti altri due membri come repliche. Il tempo necessario dipende dalla dimensione dei dati. Quando i database crescono, la loro creazione può richiedere una notevole quantità di tempo. L'operazione di promozione non viene completata finché non viene completata la creazione di entrambe le repliche.
- Se si sceglie di eseguire un backup come parte della promozione, anche il completamento di tale backup deve avvenire prima del completamento della ricetta. Anche in questo caso, dipende dalle dimensioni del database.
Ricordate che non esiste alcun membro ad alta disponibilità finché non viene completata la ricetta 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.