Se gestisci un database di produzione, è molto probabile che tu abbia dovuto clonare il tuo database su un server diverso da quello di produzione. Il metodo di base per creare un clone consiste nel ripristinare un database da un backup recente su un altro server di database. Un altro metodo consiste nel replicare da un database di origine mentre è ancora in esecuzione, nel qual caso è importante che il database originale non sia influenzato da alcuna procedura di clonazione.
Perché dovresti clonare un database?
Un cluster di database clonato è utile in diversi scenari:
- Risolvi i problemi del tuo cluster di produzione clonato nella sicurezza del tuo ambiente di test mentre esegui operazioni distruttive sul database.
- Test di patch/aggiornamento di un database clonato per convalidare il processo di aggiornamento prima di applicarlo al cluster di produzione.
- Convalida il backup e il ripristino di un cluster di produzione utilizzando un cluster clonato.
- Convalida o testa nuove applicazioni su un cluster di produzione clonato prima di distribuirlo sul cluster di produzione live.
- Clonare rapidamente il database per i requisiti di verifica o conformità delle informazioni, ad esempio entro la fine del trimestre o dell'anno in cui il contenuto del database non deve essere modificato.
- È possibile creare un database di rapporti a intervalli per evitare modifiche ai dati durante la generazione dei rapporti.
- Migrare un database su nuovi server, nuovo ambiente di distribuzione o nuovo data center.
Quando esegui la tua infrastruttura di database sul cloud, il costo di possedere un host (macchina virtuale condivisa o dedicata) è significativamente inferiore rispetto al modo tradizionale di affittare spazio in un datacenter o possedere un server fisico. Inoltre, la maggior parte dell'implementazione cloud può essere automatizzata facilmente tramite le API del provider, il software client e lo scripting. Pertanto, la clonazione di un cluster può essere un modo comune per duplicare l'ambiente di distribuzione, ad esempio, dallo sviluppo allo staging fino alla produzione o viceversa.
Non abbiamo visto questa funzionalità offerta da nessuno sul mercato, quindi è nostro privilegio mostrare come funziona con ClusterControl.
Clone di un cluster MySQL Galera
Una delle fantastiche funzionalità di ClusterControl è che ti consente di clonare rapidamente un cluster MySQL Galera esistente in modo da avere una copia esatta del set di dati sull'altro cluster. ClusterControl esegue l'operazione di clonazione in linea, senza alcun blocco o tempi di inattività del cluster esistente. È come un'operazione di scalabilità orizzontale del cluster, tranne per il fatto che entrambi i cluster sono indipendenti l'uno dall'altro al termine della sincronizzazione. Il cluster clonato non deve necessariamente avere le stesse dimensioni del cluster di quello esistente. Potremmo iniziare con un cluster a un nodo e scalarlo con più nodi di database in una fase successiva.
In questo esempio, abbiamo un cluster chiamato "Staging" che vorremmo clonare come un altro cluster chiamato "Production". La premessa è che il cluster di staging ha già archiviato i dati necessari che saranno presto in produzione. Il cluster di produzione è composto da altri 3 nodi, con le specifiche di produzione.
Il diagramma seguente riassume l'architettura finale di ciò che vogliamo ottenere:
La prima cosa da fare è configurare un SSH senza password dal server ClusterControl ai server di produzione. Sul server ClusterControl eseguire quanto segue:
$ whoami
root
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
Inserisci la password di root del server di destinazione, se richiesto.
Dall'elenco dei cluster di database ClusterControl, fare clic sul pulsante Cluster Action e scegliere Clona cluster. Apparirà la seguente procedura guidata:
Specifica gli indirizzi IP o i nomi host del nuovo cluster e assicurati di ottenere tutto il segno di spunta verde accanto all'host specificato. L'icona verde indica che ClusterControl è in grado di connettersi all'host tramite SSH senza password. Fare clic sul pulsante "Clona Cluster" per avviare la distribuzione.
I passaggi per la distribuzione sono:
- Crea un nuovo cluster composto da un nodo.
- Sincronizza il nuovo cluster a un nodo tramite SST. Il donatore è uno dei server di origine.
- I nuovi nodi rimanenti si uniranno al cluster dopo che il donatore del cluster clonato sarà sincronizzato con il cluster.
Una volta terminato, un nuovo cluster MySQL Galera verrà elencato nella dashboard del cluster ClusterControl una volta completato il processo di distribuzione.
Si noti che la clonazione del cluster clona solo i server di database e non l'intero stack del cluster. Ciò significa che altri componenti di supporto relativi al cluster come bilanciatori di carico, indirizzo IP virtuale, arbitro Galera o slave asincrono non verranno clonati da ClusterControl. Tuttavia, se desideri clonare come una copia esatta dell'infrastruttura del database esistente, puoi ottenerlo con ClusterControl distribuendo questi componenti separatamente al termine dell'operazione di clonazione del database.
Creazione di un cluster di database da un backup
Un'altra funzionalità simile offerta da ClusterControl è "Crea cluster da backup". Questa funzionalità è stata introdotta in ClusterControl 1.7.1, in particolare per i cluster Galera Cluster e PostgreSQL in cui è possibile creare un nuovo cluster dal backup esistente. Contrariamente alla clonazione del cluster, questa operazione non apporta ulteriore carico al cluster di origine con un compromesso del cluster clonato che non sarà nello stato corrente del cluster di origine.
Per creare un cluster da un backup, devi avere un backup funzionante creato. Per Galera Cluster, tutti i metodi di backup sono supportati mentre per PostgreSQL, solo pgbackrest non è supportato per la nuova distribuzione del cluster. Da ClusterControl è possibile creare o pianificare facilmente un backup in ClusterControl -> Backup -> Crea backup. Dall'elenco del backup creato, fai clic su Ripristina backup, scegli il backup dall'elenco e scegli "Crea cluster da backup" dall'opzione di ripristino:
In questo esempio, implementeremo un nuovo cluster PostgreSQL Streaming Replication per l'ambiente di staging, in base al backup esistente che abbiamo nel cluster di produzione. Il diagramma seguente illustra l'architettura finale:
La prima cosa da fare è configurare un SSH senza password dal server ClusterControl ai server di produzione. Sul server ClusterControl eseguire quanto segue:
$ whoami
root
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
Quando scegli Crea cluster da backup, ClusterControl aprirà una finestra di dialogo della procedura guidata di distribuzione per assisterti nella configurazione del nuovo cluster:
Una nuova istanza di PostgreSQL Streaming Replication verrà creata dal backup selezionato, che verrà utilizzato come set di dati di base per il nuovo cluster. Il backup selezionato deve essere accessibile dai nodi nel nuovo cluster o archiviato nell'host ClusterControl.
Facendo clic su "Continua" si aprirà la procedura guidata di distribuzione del cluster di database standard:
Si noti che la password utente root/admin per questo cluster deve essere uguale a la password di amministratore/root di PostgreSQL inclusa nel backup. Segui la procedura guidata di configurazione di conseguenza e ClusterControl quindi esegui la distribuzione nel seguente ordine:
- Installa i software e le dipendenze necessari su tutti i nodi PostgreSQL.
- Avvia il primo nodo.
- Streaming e ripristino del backup sul primo nodo.
- Configura e aggiungi il resto dei nodi.
Al termine, un nuovo cluster di replica PostgreSQL verrà elencato nella dashboard del cluster ClusterControl una volta completato il processo di distribuzione.