Nota:

Eseguire la migrazione di Google Cloud Platform CloudSQL per MySQL su Oracle Cloud Infrastructure MySQL Heatwave utilizzando la replica

Introduzione

Questa esercitazione spiega come eseguire la migrazione attiva di Google Cloud Platform CloudSQL per MySQL a Oracle Cloud Infrastructure (OCI) MySQL Heatwave Database Service. Con l'aiuto di questo articolo, saremo in grado di capire come possiamo utilizzare la replica MySQL tra due diversi provider cloud e questo fungerà da documento per una corretta migrazione a OCI Heatwave. In questo tutorial, faremo uso dei seguenti prodotti :-

  1. GCP CloudSQL per MySQL
  2. MySQL Heatwave per l'elaborazione delle transazioni online (OLTP)
  3. OCI Object Storage
  4. Computazione OCI come bastion
  5. Shell MySQL

Obiettivi

Connettere Google Cloud Platform CloudSQL per MySQL a MySQL Heatwave Database Service e avviare la replica in entrata nel sistema DB OCI. Copriremo la panoramica di alto livello della connettività tra Google Cloud Platform e MySQL, ma le possibilità di rete dettagliate tra Google Cloud Platform CloudSQL e MySQL Heatwave possono essere referenziate nella documentazione ufficiale.

Architettura

Di seguito è riportato un esempio di architettura di alto livello della soluzione.

Principale immagine

La linea tratteggiata rappresenta il flusso dei dati, ad esempio da Cloud SQL di GCP per MySQL allo storage degli oggetti per il data set iniziale. Una volta disponibili i dati nello storage degli oggetti, utilizzeremo ulteriormente i canali di replica offerti con il sistema DB Heatwave MySQL OCI.

Prerequisiti

Nell'ambito di questa esercitazione, verrà utilizzata la replica in entrata. Con l'aiuto della replica in entrata, utilizziamo il canale di replica configurato in MySQL Heatwave Database Service e con questo possiamo inviare transazioni da una posizione all'altra. Le nostre fonti possono essere diverse: on-premise, Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform e così via. In questa esercitazione, ci stiamo concentrando su Google Cloud Platform Cloud SQL per MySQL e la nostra destinazione è MySQL Heatwave Database Service.

Puoi consultare ulteriori informazioni sulla panoramica di MySQL Replication in entrata qui. Questa esercitazione è utile in quanto fornisce anche una descrizione dettagliata sulla configurazione di origine, la creazione di un utente di replica, la creazione di un canale di replica e le relative limitazioni.

Stiamo dividendo l'intero processo di migrazione nei seguenti passi di alto livello.

  1. Accesso a Cloud SQL esistente di Google Cloud Platform per MySQL
  2. Preparazione di Cloud SQL di Google Cloud Platform per MySQL
  3. Bastion su OCI con shell MySQL
  4. Considerazione del networking tra Google Cloud Platform Cloud SQL per MySQL e il sistema DB Heatwave OCI
  5. Configurazione del bucket di storage degli oggetti in OCI
  6. Esportazione dei dati nello storage degli oggetti OCI
  7. Creazione di un nuovo sistema DB su OCI
  8. Creazione del canale di replica su OCI

Task 1: accedere a Google Cloud Platform Cloud SQL esistente per MySQL

Stiamo utilizzando il database di esempio ospitato su Cloud SQL di Google Cloud Platform per MySQL per il nostro scopo di migrazione. L'istanza MySQL esistente viene ospitata in una subnet pubblica consentita da Google Cloud Platform, pertanto viene utilizzata come database di origine. Supponiamo che Google Cloud Platform CloudSQL per MySQL esegua l'edizione enterprise con MySQL versione 8.0.

Immagine 1

Immagine 2

Una volta conosciuto l'IP pubblico, possiamo inserire la lista di inclusione del nostro indirizzo IP e connetterci facilmente con il client MySQL. È inoltre possibile utilizzare la shell MySQL o la utility gcloud per connettersi al database. Possiamo fare la lista di inclusione del nostro IP pubblico aggiungendo la sezione di rete per Google Cloud Platform Cloud SQL per MySQL e facendo clic su Salva modifiche.

Immagine 3

Nota: anche qui vengono aggiunti altri IP, ne parleremo nelle sezioni successive.

Una volta che siamo in grado di connettersi, possiamo eseguire query sui database esistenti nell'istanza di Google Cloud Platform CloudSQL per MySQL. Ai fini della migrazione, ci concentreremo solo su un database di esempio Sakila.

Immagine 4

Task 2: Preparare Google Cloud Platform Cloud SQL per MySQL

Poiché si sta utilizzando la replica in entrata, è necessario eseguire due passi sul server di origine. Dobbiamo creare un utente che verrà utilizzato per la replica e dobbiamo anche garantire che abbiamo l'abilitazione di GTID sul nostro server di origine. Con GTID (Global Transaction Identifier), ogni transazione può essere identificata e tracciata in base al commit sul server di origine di origine. La stessa transazione viene applicata alla replica di destinazione.

  1. Creare l'utente di replica e assegnare i ruoli utilizzando i comandi riportati di seguito.

    mysql> create user repl@'%' IDENTIFIED BY 'yourreplpassword' REQUIRE SSL;
    mysql> grant replication slave on *.* to repl@'%';
    mysql> select user from mysql.user;;
    
  2. Assicurarsi che GTID sia abilitato. Per impostazione predefinita, i GTID sono abilitati, ma in caso contrario, è possibile abilitarli.

    mysql>show global variables like 'gtid%';

    Immagine 5

Task 3: distribuire il bastion su OCI con la shell MySQL

Con Oracle Cloud Infrastructure, gli endpoint del sistema DB MySQL non sono direttamente accessibili da Internet. Ciò è dovuto a una maggiore sicurezza e viene distribuita con l'ausilio dell'endpoint privato nella VCN configurata. Di conseguenza, per accedere all'endpoint privato, abbiamo bisogno di connettere il servizio di database Heatwave OCI MySQL utilizzando un load balancer di istanza di computazione, VPN, Bastion o di rete.

È possibile scegliere una delle opzioni sopra menzionate. Nel nostro caso, verrà utilizzata l'istanza di computazione che fungerà da bastion per il nostro servizio di database a onde di calore MySQL. Per informazioni sull'uso delle altre opzioni, fai clic qui.

Mentre stiamo utilizzando l'istanza di computazione, dobbiamo distribuire la computazione nella subnet pubblica della nostra rete VCN la cui subnet privata ospiterà il servizio di database Heatwave MySQL. Durante la configurazione dell'istanza di computazione, non è necessario preoccuparsi della configurazione delle risorse per la computazione in quanto verrà utilizzata solo per installare la shell MySQL o il client MySQL e per la connessione a Google Cloud Platform Cloud SQL per MySQL.

Puoi trovare la procedura per creare un'istanza di computazione qui.

Come puoi vedere nell'immagine riportata di seguito, abbiamo creato l'istanza di computazione nella subnet pubblica della VCN in cui verrà ospitato il servizio di database Heatwave MySQL. Questo server Bastion fungerà da intermedio tra OCI e Google Cloud Platform, dove è possibile accedere a entrambe le istanze MySQL. Per connettersi all'istanza di database MySQL, è possibile utilizzare la shell MySQL o il client MySQL.

Immagine 6

Si installa Mysql Shell eseguendo il comando seguente.

`sudo yum install mysql-shell`

Per ulteriori informazioni, puoi anche fare riferimento alla documentazione.

Task 4: verifica delle considerazioni sul networking tra Cloud SQL per MySQL e OCI MySQL Heatwave Database Service

Una cosa importante qui è garantire che la comunicazione tra il server di origine e il server di destinazione sia stabilita con successo.

Nella console di Google Cloud Platform, è necessario garantire che anche l'IP pubblico per la nostra istanza di Bastion sia incluso nella lista di inclusione. Questo può essere ottenuto utilizzando lo stesso processo che abbiamo seguito sopra per connettere il database con il nostro client MySQL.

Nella console OCI, è necessario stabilire la comunicazione tra l'istanza di computazione Bastion gestita in hosting nella subnet pubblica di MySQLVCN e il servizio di database Heatwave MySQL hosted su una subnet privata all'interno della stessa VCN. Dobbiamo consentire il traffico e possiamo aprire le regole di entrata con la subnet privata e consentire le connessioni.

Task 5: Configurazione del bucket di storage degli oggetti in OCI

È necessario configurare lo storage degli oggetti in OCI per memorizzare il dump dei dati iniziale da Google Cloud Platform CloudSQL per MySQL. Si tratta di un'attività occasionale che verrà utilizzata per creare il database in MySQL Heatwave Database Service.

Per informazioni sulla creazione di un bucket in OCI, vedere Creazione di un bucket.

Immagine 7

Una volta creato il bucket sopra, è necessario stabilire un collegamento tra il bucket di storage degli oggetti e l'istanza Bastion. A questo scopo, verrà utilizzato il file di configurazione oci che verrà utilizzato dalla shell MySQL.

Nota: il parametro key_file deve essere aggiornato con la posizione della chiave privata generata nella console OCI durante la creazione della chiave API.

Task 6: Esporta i dati nello storage degli oggetti OCI

Utilizzeremo la utility MySQL Shell sul server Bastion per esportare i dati dal cloud SQL di Google Cloud Platform per MySQL. La utility shell MySQL è uno strumento molto potente che consente di esportare l'intera istanza contemporaneamente e fornire varie opzioni.

Per questo esercizio, esporteremo lo schema dal database CloudSQL di Google Cloud Platform per Mysql nello storage degli oggetti OCI.

Prima, creiamo la connessione all'istanza MySQL dal nostro Bastion Compute.

Immagine 12

util.dumpSchemas(["sakila"], "", { osBucketName: "MysqlBucket", osNamespace: "orasenatdpltintegration01", ocimds: true, ociParManifest: true, threads: 8, compatibility: ["force_innodb", "skip_invalid_accounts", "strip_definers", "strip_restricted_grants",  "strip_tablespaces"], dryRun: "true"})

Le altre opzioni possono essere utilizzate in base alle tue esigenze. Per ulteriori informazioni, fai clic qui.

Immagine 13

Una volta completata l'esecuzione manuale, esaminare l'output e risolvere i problemi. Se non si verificano problemi di compatibilità, eseguire l'operazione senza dryRun come indicato di seguito :-

Immagine 14

Fornisce informazioni dettagliate sull'attività di esportazione e fornisce inoltre la durata del tempo. Poiché è un database di esempio, con circa 45k record, è finito rapidamente.

Una volta completato il processo, i dati saranno ora presenti nel bucket che fa parte dello storage degli oggetti.

Immagine 15

Task 7: creare un nuovo sistema DB su OCI

Per ulteriori informazioni su come configurare il sistema DB MySQL, consulta la sezione relativa alla creazione di un sistema DB.

L'unica cosa che dobbiamo tenere presente è la già disponibilità di dati nello storage degli oggetti, pertanto cerchiamo di utilizzarli per configurare il sistema DB. È anche possibile caricare i dati in un secondo momento, ma questa opzione consente di risparmiare molto tempo. Per usare questa opzione, dobbiamo creare una richiesta PAR.

Immagine 16

Immagine 17

Assicurarsi di aver salvato l'URL generato qui in quanto verrà utilizzato come indicato di seguito.

Immagine 18

Una volta specificato l'URL PAR, il sistema DB MySQL viene creato automaticamente con il database Sakila.

Per eseguire la convalida, eseguire il comando seguente.

Immagine 19

Ora abbiamo il database di origine nel sistema DB di destinazione. Ora, creeremo una replica tra origine e destinazione.

Task 8: Creare un canale di replica su OCI

I canali di replica vengono utilizzati per connettere il sistema di database di origine al sistema di database di destinazione. Tutte le transazioni vengono copiate con l'ausilio di questi canali. La creazione di questi canali è abbastanza facile in quanto abbiamo solo bisogno di fornire pochi dettagli sulla nostra fonte e destinazione. Si consiglia sempre di utilizzare la connessione cifrata ed è per questo che quando abbiamo creato l'utente, abbiamo specificato la parola chiave SSL nei passi precedenti.

Poiché l'origine della replica potrebbe essere diversa, possiamo anche consentire filtri di canale che variano per diversi provider di cloud pubblico. Puoi trovare ulteriori informazioni qui.

L'immagine riportata di seguito mostra diverse opzioni presenti quando si crea il canale di replica su OCI. È necessario fornire il nome host di origine o l'indirizzo IP pubblico insieme al numero di porta. Autenticheremo con l'aiuto dell'utente Repl creato in precedenza.

Immagine 20

Immagine 21

Specificare inoltre il sistema DB di destinazione creato per la replica e con i filtri di replica è disponibile un'opzione in cui scegliere i filtri di replica dal menu a discesa, se applicabile.

Se non vi è ulteriore carico sul sistema di origine dopo la nostra esportazione, il canale di replica deve essere attivato e completato. Tuttavia, vi sono possibilità che il carico sia incoerente a causa della mancata corrispondenza del GTID e che si debbano intraprendere le azioni necessarie. Esistono diverse fasi del canale di replica, i cui dettagli sono menzionati qui.

Per informazioni dettagliate sui messaggi di errore più comuni che potrebbero verificarsi durante la configurazione della replica in entrata, consultare la guida alla risoluzione dei problemi.

Inserire dati fittizi sull'origine Google Cloud Platform come mostrato nella seguente immagine.

Immagine 21

Eseguire una query sul database di esempio in MySQL Heatwave Database Service.

Immagine 22

Nella console è possibile vedere che non esiste alcun ritardo tra l'origine e la destinazione e che le transazioni vengono copiate e sottoposte a commit. Pertanto, possiamo utilizzare i canali di replica sia per il recupero da errori irreversibili che per lo scopo della migrazione. In base a tempi di inattività appropriati per la pianificazione e l'applicazione, possiamo eseguire l'attività di cutover e utilizzare il servizio di database Heatwave MySQL, che è la soluzione one-stop per le transazioni OLTP e i carichi di lavoro analitici.

Passi successivi

In questa esercitazione, abbiamo visto che il servizio di database Heatwave OCI MySQL offre un meccanismo abbastanza semplice per utilizzare la replica in entrata. Supporta più origini e fornisce anche filtri del canale di replica rispetto a queste origini. La replica in entrata può essere utilizzata per portare il set di dati in Oracle Cloud e utilizzarne l'offerta heatwave. Non solo, è stato introdotto MySQL Heatwave Lakehouse e puoi trasferire grandi quantità di dati in terabyte in più formati. Puoi trovare ulteriori informazioni su MySQL Heatwave Database Service e su come ottimizza le prestazioni delle query fornendo In-Memory Query Accelerator.

Approvazioni

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Explorer di Oracle Learning.

Per la documentazione sul prodotto, visitare il sito Oracle Help Center.