Questo documento fa parte di una serie che fornisce informazioni e indicazioni chiave relative alla pianificazione ed esecuzione delle migrazioni dei database Oracle® 11g/12c a Cloud SQL per MySQL versione 5.7, istanze di seconda generazione. La serie include le seguenti parti:
- Migrazione degli utenti Oracle a Cloud SQL per MySQL: terminologia e funzionalità
- Migrazione degli utenti Oracle a Cloud SQL per MySQL: tipi di dati, utenti e tabelle
- Migrazione degli utenti Oracle a Cloud SQL per MySQL: query, stored procedure, funzioni e trigger
- Migrazione degli utenti Oracle a Cloud SQL per MySQL: sicurezza, operazioni, monitoraggio e registrazione (questo documento)
Sicurezza
Questa sezione spiega le differenze nella crittografia dei dati tra Oracle Cloud SQL per MySQL e illustra il controllo dell'accesso di Cloud SQL per MySQL.
Crittografia dei dati Oracle
Oltre all'autenticazione utente di base e alla gestione dei privilegi utente, Oracle offre il meccanismo TDE (Transparent Data Encryption) per aggiungere un ulteriore livello di crittografia per la sicurezza dei dati at-rest a livello di sistema operativo. Una volta configurato, Oracle TDE viene implementato automaticamente dal sistema e non richiede alcuna interazione manuale da parte degli utenti. Per implementare Oracle TDE, ti consigliamo di configurarlo esplicitamente (tramite comando) sugli oggetti database richiesti e supportati che possono accettare questo tipo di crittografia, ad esempio tablespace, tabella o colonna. Per gestire la sicurezza dei dati in transito, ti consigliamo di implementare una soluzione di sicurezza di rete.
Crittografia dei dati di Cloud SQL per MySQL
Google Cloud fornisce diversi livelli di crittografia per proteggere i dati inattivi dei clienti nei prodotti Google Cloud, tra cui Cloud SQL. Cloud SQL viene criptato utilizzando la crittografia AES-128 o AES-256. Per ulteriori informazioni, consulta il seguente argomento sulla crittografia at-rest. A differenza della crittografia Oracle (che deve essere implementata tramite azioni di configurazione), Google Cloud cripta i dati at-rest dei clienti senza alcuna azione richiesta. Dal punto di vista della conversione dello schema, non sono richieste azioni e la crittografia rimane trasparente per l'utente.
Per comprendere meglio in che modo Google Cloud gestisce la crittografia dei dati in transito, consulta Come viene gestita la crittografia per i dati in transito.
Controllo
Oracle fornisce diversi metodi di controllo, ad esempio il controllo standard e granulare. Al contrario, MySQL per impostazione predefinita non fornisce soluzioni di controllo equivalenti. Per superare questa limitazione, puoi utilizzare le dashboard e il monitoraggio di Google Cloud, ma per acquisire le operazioni DML/DDL del database, puoi utilizzare i log di query lente, generali ed errori come una soluzione di controllo più solida.
Per implementare questa soluzione, ti consigliamo di utilizzare l'istanzaFLAGS
per attivare il log delle query lente e il log generale. Inoltre, devi gestire la conservazione di questi log in base alle esigenze della tua attività.
Puoi utilizzare gli audit log di Google Cloud per raccogliere informazioni di controllo. Questi log coprono tre livelli principali:
- Audit log delle attività di amministrazione (abilitati per impostazione predefinita)
- Audit log di accesso ai dati (disattivati per impostazione predefinita)
- Scopri come configurare i log di accesso ai dati.
- Tieni presente che gli audit log di accesso ai dati non registrano le operazioni di accesso ai dati sulle risorse a cui è possibile accedere senza accedere a Google Cloud.
- Audit log degli eventi di sistema (abilitati per impostazione predefinita)
Visualizzazione degli audit log di Google Cloud
Di seguito è riportato il percorso di accesso per la visualizzazione degli audit log: Console Google Cloud > Home > Attività
Puoi filtrare la granularità delle informazioni tra i livelli di controllo. Lo screenshot seguente mostra un controllo delle attività dell'amministratore.
Pagina Cloud Logging
Ecco il percorso di accesso alla pagina di logging: Console Google Cloud > Cloud Logging
Puoi filtrare la granularità delle informazioni tra i tipi di log. Lo screenshot seguente mostra un controllo dei log generici (dati di controllo per utente, host e statement SQL).
Controllo dell'accesso Cloud SQL per MySQL
Gli utenti possono connettersi all'istanza Cloud SQL per MySQL utilizzando un client MySQL con un indirizzo IP statico autorizzato o utilizzando il proxy Cloud SQL, in modo simile a qualsiasi altra connessione al database. Per altre origini di connessione come App Engine o Compute Engine, gli utenti hanno a disposizione diverse opzioni, ad esempio l'utilizzo di Cloud SQL Proxy. Queste opzioni sono descritte in maggiore dettaglio in Controllo dell'accesso alle istanze.
Operazioni
Questa sezione illustra l'esportazione e l'importazione, il backup e il ripristino a livello di istanza, il pianificatore degli eventi MySQL (per i job del database) e le istanze di standby per le operazioni di sola lettura e il ripristino di emergenza.
Esportazione e importazione
Il metodo principale di Oracle per eseguire operazioni di esportazione e importazione logiche è l'utilità Data Pump
, che utilizza i comandi EXPDP
/IMPDP
(una versione precedente della funzionalità di esportazione/importazione di Oracle includeva i comandi exp
e imp
). I comandi equivalenti di MySQL sono le utilità mysqldump
e mysqlimport
, che generano file di dump e poi eseguono l'importazione a livello di database o oggetto (inclusa l'esportazione e l'importazione solo dei metadati).
Non esiste una soluzione equivalente diretta di MySQL per l'utilità DBMS_DATAPUMP
di Oracle (il metodo Oracle per applicare la funzionalità EXPDP
/IMPDP
interagendo direttamente con il pacchetto DBMS_DATAPUMP
). Per eseguire la conversione
da codice PL/SQL DBMS_DATAPUMP
di Oracle, utilizza
codice alternativo (ad esempio Bash o Python) per implementare elementi
logici e utilizza MySQL mysqldump
e mysqlimport
per eseguire operazioni di esportazione/importazione.
Le utilità mysqldump
e mysqlimport
di MySQL vengono eseguite a livello di client (come parte dei programmi client di MySQL) e si connettono da remoto all'istanza Cloud SQL per MySQL. I file dump vengono creati sul lato client.
mysqldump
:
Un'utilità client esegue backup logici e importazioni di dati (come sql
). Questo
produce un insieme di istruzioni SQL che possono essere eseguite per riprodurre le definizioni degli oggetti di database e i dati delle tabelle originali. L'utilità mysqldump
può anche generare output in formato CSV, in altro testo delimitato o in formato XML. Il
principale vantaggio di questo formato di output è che ti consente di visualizzare o modificare l'output
dell'esportazione prima del ripristino, in quanto si tratta di un file di testo. Lo svantaggio principale è che non è intesa come una soluzione rapida o scalabile per il backup di quantità sostanziali di dati.
Utilizzo di mysqldump
:
-- Single database backup & specific tables backup # mysqldump database_name > outpitfile.sql # mysqldump database_name tbl1 tbl2 > outpitfile.sql -- Back up all databases # mysqldump --all-databases > all_databases.sql -- Ignore a given table # mysqldump --databases db1 --ignore-table db1.tbl > outpitfile.sql -- Back up metadata only - Schema only # mysqldump --no-data db1 > bck.sql -- Include stored procedures and functions (routines) # mysqldump db1 --routines > db1.sql -- Back up only rows by a given WHERE condition # mysqldump db1 tbl1 --where="col1=1" > bck.sql -- Include triggers for each dumped table (default) # mysqldump db1 tbl1 —triggers > bck.sql
mysqlimport
:
Si tratta di un programma client che fornisce un'interfaccia a riga di comando per l'istruzione SQL LOAD
DATA INFILE
. mysqlimport
viene spesso utilizzato per importare
dati da file di testo o CSV in una tabella MySQL con una struttura corrispondente.
Oracle SQL*Loader può essere convertito in mysqlimport
poiché entrambi condividono la stessa funzionalità di caricamento dei dati da un file esterno.
Utilizzo di mysqlimport
:
-- Example of loading data from a CSV file into a table: -- Create a table named csv_file mysql> create table file(col1 int, col2 varchar(10)); -- Create a CSV file (delimited by tab) # echo 1 A > file.csv # echo 2 B >> file.csv # echo 3 C >> file.csv -- Import the CSV file into the csv_file table -- Note that the file and table name must be named identically # mysqlimport -u USER -p -h HOSTNAME/IP DB_NAME --local file.csv csv_file: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0 -- Verify # mysql -u USER -p -h HOSTNAME/IP DB_NAME -e "SELECT * FROM file" +------+------+ | col1 | col2 | +------+------+ | 1 | A | | 2 | B | | 3 | C | +------+------+ -- Example of using LOAD DATA INFILE to load a CSV file (using the same table from the previous example, with the CSV delimiter defined by comma) mysql> LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE file FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (col1, col2); mysql> SELECT * FROM file; +------+------+ | col1 | col2 | +------+------+ | 1 | A | | 2 | B | | 3 | C | +------+------+
Esportazione/importazione di Cloud SQL per MySQL:
I seguenti link alla documentazione illustrano come utilizzare gcloud CLI per interagire con l'istanza Cloud SQL e con Cloud Storage al fine di applicare le operazioni di esportazione e importazione.
Backup e ripristino a livello di istanza
Eseguire la migrazione da Oracle RMAN o Data Pump e includere opzioni di backup e ripristino aggiuntive (ad esempio snapshot VM, backup a freddo o strumenti di terze parti) in Cloud SQL per MySQL è un'operazione semplice. Non è richiesto codice o conoscenza aggiuntiva. Puoi gestire questa procedura utilizzando la console Google Cloud o lGoogle Cloud CLI. Gli esempi precedenti sono stati compilati con istanze Cloud SQL di seconda generazione.
I tipi di metodi di backup del database MySQL sono backup on demand e backup automatici.
Puoi utilizzare il ripristino dell'istanza di database Cloud SQL per MySQL per eseguire il ripristino nella stessa istanza, sovrascrivendo i dati esistenti o in un'altra istanza. Cloud SQL per MySQL ti consente anche di ripristinare un database MySQL a un momento specifico utilizzando il logging binario con l'opzione di backup automatico abilitata.
Cloud SQL per MySQL offre la possibilità di clonare una versione indipendente del database di origine. Questa funzionalità si applica solo al database principale (master) o a un'altra copia e non può essere estratta da un'istanza di replica di lettura. Puoi anche utilizzare questa funzionalità per ripristinare un'istanza MySQL da un punto in tempo, consentendo il recupero dei dati, se necessario. Puoi applicare il recupero del database Cloud SQL per MySQL utilizzando la console Google Cloud o lgcloud CLI.
Programma degli eventi MySQL (job di database)
Per avviare procedure di database predefinite, la funzionalità di MySQL
event scheduler
è equivalente a Oracle DBMS_JOBS
o Oracle DBMS_SCHEDULER
. Per impostazione predefinita, il parametro del database event_scheduler
è impostato su OFF
. Se necessario, deve essere impostato su ON
utilizzando i flag Cloud SQL.
Puoi utilizzare lo scheduler degli eventi MySQL per eseguire un comando DML/DDL esplicito o per pianificare una funzione o una stored procedure in un momento specifico e con una determinata logica.
Considerazione sulla conversione per Oracle DBMS_JOBS
o DBMS_SCHEDULER
:
Tutti i job Oracle devono essere convertiti in sintassi e funzionalità MySQL manualmente o utilizzando strumenti di conversione PL/SQL disponibili in commercio.
Utilizza la seguente istruzione per verificare il valore corrente del parametro event_scheduler
da un'esecuzione del client:
mysql> SHOW VARIABLES LIKE '%event_s%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
Esempi di pianificatori di eventi:
Oracle DBMS_SCHEDULER
SQL> BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'job_sessions_1d_del', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN DELETE FROM sessions WHERE session_date < SYSDATE - 1; END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=DAILY', end_date => NULL, enabled => TRUE, comments => 'Deletes last day data from the sessions table'); END; /
Conversione EVENT di MySQL:
mysql> CREATE EVENT job_sessions_1d_del ON SCHEDULE EVERY 1 DAY COMMENT 'Deletes last day data from the sessions table' DO DELETE FROM sessions WHERE session_date < DATE_SUB(SYSDATE(), INTERVAL 1 DAY);
Metadati del programma degli eventi MySQL:
mysql> SELECT * FROM INFORMATION_SCHEMA.EVENTS \G; -- OR mysql> SHOW EVENTS FROM HR;
Istanze di standby per operazioni di sola lettura e implementazione del ripristino di emergenza
Oracle Active Data Guard consente a un'istanza di standby di fungere da endpoint di sola lettura mentre i nuovi dati vengono ancora applicati tramite i log di reintegrazione e di archivio. Puoi anche utilizzare Oracle GoldenGate per attivare un'istanza aggiuntiva a scopo di lettura mentre le modifiche ai dati vengono applicate in tempo reale, fungendo da soluzione Change Data Capture (CDC).
Cloud SQL per MySQL supporta la separazione in lettura/scrittura utilizzando repliche di lettura per indirizzare eventuali letture o carichi di lavoro di analisi dall'origine principale a un'origine alternativa replicata quasi in tempo reale. Puoi applicare le impostazioni per le repliche di lettura di Cloud SQL per MySQL utilizzando la console Google Cloud o la gcloud CLI.
Cloud SQL per MySQL supporta opzioni di replica aggiuntive: la replica in un'istanza MySQL esterna e la replica da un'istanza MySQL esterna.
Puoi implementare Oracle Active Data Guard e Oracle GoldenGate come soluzione di ripristino di emergenza (RE), aggiungendo un'istanza di standby già sincronizzata con l'istanza principale.
Le repliche di lettura di Cloud SQL per MySQL non sono destinate a fungere da istanze di standby per gli scenari di RE, a questo scopo Cloud SQL offre la possibilità di configurare un'istanza MySQL per l'alta disponibilità (utilizzando la console Google Cloud o gcloud CLI).
Alcune operazioni potrebbero richiedere il riavvio di un'istanza (ad esempio l'aggiunta di HA a un'istanza principale esistente). Dal punto di vista di un SLA ad alta disponibilità (HA), se l'istanza principale non risponde per circa 60 secondi, l'istanza in standby HA sarà disponibile al ricoinvolgimento. Per attivare l'HA per Cloud SQL per MySQL, consulta le seguenti istruzioni.
Logging e monitoraggio
Il file del log degli avvisi di Oracle è la fonte principale per identificare gli eventi di sistema e gli eventi di errore generali al fine di comprendere il ciclo di vita di qualsiasi istanza del database Oracle (principalmente la risoluzione dei problemi relativi agli eventi di errore e di errore).
Il log degli avvisi Oracle mostra informazioni su quanto segue:
- Errori e avvisi dell'istanza del database Oracle (
ORA-
+ numero di errore). - Eventi di avvio e arresto dell'istanza del database Oracle.
- Problemi relativi alla rete e alla connessione.
- Eventi di commutazione dei log di ripristino del database.
- I file di traccia di Oracle potrebbero essere menzionati con un link per ulteriori dettagli su un evento specifico del database.
Inoltre, Oracle fornisce file di log dedicati per diversi servizi come LISTENER, ASM ed Enterprise Manager (OEM), che non hanno componenti equivalenti in Cloud SQL per MySQL.
Tipi di log di Cloud SQL per MySQL:
Tipo di log MySQL | Descrizione | Note |
---|---|---|
Log delle attività | Contiene dati su chiamate API o altre azioni amministrative che modificano la configurazione o i metadati di un'istanza Cloud SQL per MySQL. | Questo log è uno dei tre log del gruppo Cloud Audit Logs. |
Log di accesso ai dati | Contiene dati sulle chiamate API che leggono la configurazione o i metadati delle risorse, nonché chiamate API effettuate dagli utenti che creano, modificano o leggono i dati delle risorse forniti dall'utente. | Questo log è uno dei tre log del gruppo Cloud Audit Logs. Tieni presente che questo log registra solo le operazioni di accesso ai dati sulle istanze MySQL per gli eventi a cui è possibile accedere senza accedere a Google Cloud. |
mysql.err |
Si tratta del file log principale di MySQL, che può essere confrontato con il log degli avvisi di Oracle. Entrambi i log contengono logging degli eventi delle istanze di database, ad esempio eventi di avvio e arresto e eventi di errore e avviso. | Guida ai messaggi di errore di MySQL 5.7. |
mysql-slow.log |
Il log delle query lente di MySQL raccoglie i dati sulle query che superano la configurazione predefinita, ad esempio ogni query con un tempo di esecuzione superiore a 2 secondi (il valore predefinito è 10 secondi). | Disattivata per impostazione predefinita. Per attivare questo log, imposta le seguenti variabili
(parametri del database):
|
mysql-general.log |
Questo log raccoglie i dati sulle connessioni e sui disconnessioni dei client e su qualsiasi istruzione SQL eseguita sull'istanza del database MySQL. Questo log è utile per la risoluzione dei problemi e di solito viene impostato su OFF al termine dell'operazione. |
Disattivato per impostazione predefinita, per attivare le variabili general_log deve essere impostato su ON . |
Log binario | Il server MySQL utilizza il logging binario per registrare tutte le istruzioni che hanno modificato i dati. L'utilizzo principale di questo log è per il backup e la replica. | Per impostazione predefinita, il parametro di logging binario è abilitato in
Cloud SQL per MySQL per abilitare il recupero e il deployment delle repliche di lettura.
Per attivare il logging binario, imposta il parametro di configurazione log_bin su
ON . |
Log di inoltro | Contiene gli statement ricevuti dai log binari principali per implementare tutte le modifiche ai dati nell'istanza secondaria (replica di lettura). | Si applica solo alle istanze secondarie (slave) e alle repliche di lettura. |
Visualizzazione dei log delle operazioni di Cloud SQL per MySQL
Cloud Logging è la piattaforma principale per visualizzare tutti i dettagli dei log. Puoi selezionare diversi log e filtrare in base al livello dell'evento di log (ad esempio Critico, Errore o Avviso). Sono inoltre disponibili il periodo di tempo dell'evento e il filtro di testo libero.
Esempio
Lo screenshot seguente mostra la ricerca di una query specifica nel
mysql-slow.log
utilizzando un periodo di tempo personalizzato come criterio di filtro.
Monitoraggio delle istanze del database MySQL
Le dashboard di monitoraggio dell'interfaccia utente principale di Oracle fanno parte dei prodotti OEM e Grid/Cloud Control (ad esempio, i grafici delle attività principali) e sono utili per il monitoraggio in tempo reale delle istanze di database a livello di sessione o di istruzione SQL. Cloud SQL per MySQL offre funzionalità di monitoraggio simili utilizzando la console Google Cloud. Puoi visualizzare informazioni riepilogative sulle istanze di database Cloud SQL per MySQL con più metriche di monitoraggio, come utilizzo della CPU, utilizzo dello spazio di archiviazione, utilizzo della memoria, operazioni di lettura/scrittura, byte in entrata/in uscita, connessioni attive e altro ancora.
Cloud Logging supporta metriche di monitoraggio aggiuntive per Cloud SQL per MySQL. Lo screenshot seguente mostra il grafico delle query MySQL per le ultime 12 ore.
Monitoraggio delle repliche di lettura MySQL
Puoi monitorare le repliche di lettura in modo simile a un'istanza principale, utilizzando le metriche di monitoraggio della console Google Cloud (come descritto in precedenza). Inoltre, esiste una metrica di monitoraggio dedicata per il monitoraggio del ritardo della replica, che determina il ritardo tra l'istanza principale e l'istanza di replica di lettura in secondi (può essere monitorata dalla scheda Panoramica dell'istanza di replica di lettura nella console Google Cloud).
Puoi utilizzare l'interfaccia alla gcloud CLI per recuperare lo stato della replica:
gcloud sql instances describe REPLICA_NAME
Puoi anche eseguire il monitoraggio della replica utilizzando i comandi di un client MySQL, che fornisce uno stato per i database principali e secondari e per il log binario e il log di inoltro.
Puoi utilizzare il seguente istruzione SQL per verificare lo stato della replica di lettura:
mysql> SHOW SLAVE STATUS;
Monitoraggio di MySQL
Questa sezione descrive i metodi di monitoraggio di MySQL di base considerati attività di routine eseguite da un DBA (Oracle o MySQL).
Monitoraggio delle sessioni
Il monitoraggio delle sessioni Oracle viene eseguito eseguendo query sulle visualizzazioni dinamiche del rendimento, note come visualizzazioni "V$". Le visualizzazioni V$SESSION
e V$PROCESS
vengono comunemente utilizzate per ottenere informazioni in tempo reale sull'attività corrente del database utilizzando le istruzioni SQL. Puoi monitorare l'attività della sessione in MySQL utilizzando comandi e
comandi SQL. Ad esempio, il comando MySQL
SHOW PROCESSLIST
fornisce i seguenti dettagli sull'attività della sessione:
mysql> SHOW PROCESSLIST;
Puoi anche eseguire query e filtrare i risultati SHOW PROCESSLIST
utilizzando un
statement SELECT
:
mysql> SELECT * FROM information_schema.processlist;
Monitoraggio delle transazioni lunghe
Per identificare in tempo reale le transazioni in esecuzione prolungata che potrebbero causare problemi di prestazioni, puoi eseguire query sulla visualizzazione dinamica information_schema.innodb_trx
. Questa visualizzazione mostra i record solo per le transazioni aperte in esecuzione nell'istanza del database MySQL.
Monitoraggio della serratura
Puoi monitorare i blocchi del database utilizzando la visualizzazione dinamica information_schema.innodb_locks
, che fornisce informazioni in tempo reale sulle occorrenze dei blocchi che potrebbero causare problemi di prestazioni.