Migrazione degli utenti Oracle® a Cloud SQL per PostgreSQL: sicurezza, operazioni, monitoraggio e logging

Questo documento fa parte di una serie che fornisce informazioni chiave e indicazioni relative alla pianificazione e all'esecuzione delle migrazioni dei database Oracle® 11g/12c in Cloud SQL per PostgreSQL versione 12. Oltre alla parte introduttiva della configurazione, la serie include le seguenti parti:

Sicurezza

Questa sezione offre indicazioni sulla crittografia, l'auditing e controllo dell'accesso.

Crittografia

Sia Oracle che Cloud SQL per PostgreSQL offrono meccanismi di crittografia dei dati per aggiungere un ulteriore livello di protezione oltre all'autenticazione utente di base e alla gestione dei privilegi utente.

Crittografia at-rest

I dati che non si spostano attraverso le reti (memorizzati) sono chiamati "dati at-rest". Oracle offre il meccanismo TDE (Transparent Data Encryption) per aggiungere un livello di crittografia a livello di sistema operativo. In Cloud SQL, i dati vengono criptati utilizzando l'algoritmo Advanced Encryption Standard (AES-256) a 256 bit o superiore. Queste chiavi di dati vengono criptate usando una chiave master archiviata in un archivio chiavi sicuro e modificata regolarmente. Per ulteriori informazioni sulla crittografia dei dati inattivi, consulta Crittografia at-rest in Google Cloud.

Crittografia dei dati in transito

Oracle offre una sicurezza avanzata per la gestione della crittografia dei dati sulla rete. Cloud SQL cripta e autentica tutti i dati in transito su uno o più livelli di rete quando i dati si spostano al di fuori dei confini fisici non controllati da Google o per conto di Google. I dati in transito all'interno di un confine fisico controllato da Google o per conto di Google sono generalmente autenticati, ma potrebbero non essere criptati per impostazione predefinita. Puoi scegliere quali misure di sicurezza aggiuntive applicare in base al tuo modello di minaccia. Ad esempio, puoi configurare SSL per le connessioni tra zone a Cloud SQL. Per informazioni sulla crittografia dei dati in transito, consulta Crittografia dei dati in transito in Google Cloud.

Controllo

Oracle offre diversi metodi per il controllo, ad esempio quello standard e granulare. Al contrario, il controllo in Cloud SQL per PostgreSQL può essere eseguito nel seguente modo:

  • pgAudit. Registra e monitora le operazioni SQL eseguite su una determinata istanza di database.
  • Audit log di Cloud. Controlla le operazioni di amministrazione e manutenzione eseguite su un'istanza Cloud SQL per PostgreSQL.

Controllo dell'accesso

Gli utenti possono connettersi all'istanza Cloud SQL per PostgreSQL utilizzando un client PostgreSQL con un indirizzo IP statico autorizzato oppure utilizzando un proxy Cloud SQL, come qualsiasi altra connessione di database. Per altre origini di connessione come App Engine o Compute Engine, gli utenti hanno diverse opzioni a disposizione, ad esempio l'utilizzo del proxy Cloud SQL. Per ulteriori informazioni su queste opzioni, consulta Controllo dell'accesso alle istanze.

Cloud SQL per PostgreSQL si integra con Identity and Access Management (IAM) e fornisce un insieme di ruoli predefiniti progettati per aiutarti a controllare l'accesso alle tue risorse Cloud SQL. Questi ruoli consentono agli utenti IAM di avviare varie operazioni amministrative come riavvii delle istanze, backup e failover. Per ulteriori informazioni, consulta la pagina relativa al controllo dell'accesso al progetto.

Suite operativa

Questa sezione offre indicazioni sulle operazioni di esportazione e importazione, di backup e ripristino a livello di istanza e di istanze in standby per operazioni di sola lettura e implementazione di 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/imp). I comandi equivalenti di Cloud SQL per PostgreSQL sono le utilità pg_dump e pg_restore, che generano file di dump e poi importano a livello di database o di oggetto (tra cui solo esportazione e importazione dei metadati).

Non esiste una soluzione diretta equivalente a Cloud SQL per PostgreSQL per l'utilità DBMS_DATAPUMP di Oracle (il metodo Oracle per applicare la funzionalità EXPDP/IMPDP interagisce direttamente con il pacchetto DBMS_DATAPUMP). Per convertire dal codice PL/SQL Oracle DBMS_DATAPUMP, usa codice alternativo (ad esempio Bash e Python) per implementare elementi logici, mentre i programmi Cloud SQL per PostgreSQL pg_dump e pg_restore per eseguire operazioni di esportazione/importazione.

Oracle SQL*Loader può essere utilizzato per caricare file esterni nelle tabelle di database. SQL*Loader può utilizzare un file di configurazione (chiamato file di controllo) contenente i metadati utilizzati da SQL*Loader per determinare in che modo i dati devono essere analizzati e caricati nel database Oracle. SQL*Loader supporta file di origine fissi e variabili.

Le utilità pg_dump e pg_restore vengono eseguite a livello di client e si connettono da remoto all'istanza Cloud SQL per PostgreSQL. I file di dump vengono creati sul lato client. Per caricare file esterni in Cloud SQL per PostgreSQL, utilizza il comando COPY dall'interfaccia client psql oppure utilizza Dataflow o Dataproc. Questa sezione è incentrata principalmente sul comando COPY di Cloud SQL per PostgreSQL, che è un equivalente più diretto dell'utilità SQL*Loader di Oracle.

Per caricamenti di dati più complessi nel database Cloud SQL per PostgreSQL, valuta l'utilizzo di Dataflow o Dataproc, che prevede la creazione di un processo ETL.

Per ulteriori informazioni su Dataflow, consulta la documentazione di Dataflow e, per maggiori informazioni su Dataproc, consulta la documentazione di Dataproc.

pg_dump

L'utilità client pg_dump esegue backup e output coerenti in formati di file di script o di archivio. Il dump dello script è un insieme di istruzioni SQL che possono essere eseguite per riprodurre le definizioni degli oggetti del database e i dati delle tabelle originali. Queste istruzioni SQL possono essere inviate a qualsiasi client PostgreSQL per il ripristino. I backup nei formati file di archivio devono essere utilizzati con pg_restore durante le operazioni di ripristino, ma i backup consentono il ripristino di oggetti selettivi e sono progettati per la portabilità tra architetture.

Utilizzo:

-- Single database backup & specific tables backup
# pg_dump database_name > outputfile.sql
# pg_dump -t table_name database_name > outputfile.sql

-- Dump all tables in a given schema with a prefix and ignore a given table
# pg_dump -t 'schema_name.table_prefixvar>*' -T schema_name.ignore_table database_name > outputfile.sql

-- Backup metadata only - Schema only
# pg_dump -s database_name > metadata.sql

-- Backup in custom-format archive
pg_dump -Fc database_name > outputfile.dump

pg_restore

Il programma client pg_restore ripristina un database PostgreSQL da un archivio creato da pg_dump. Se il nome di un database non è specificato, pg_restore genera uno script contenente i comandi SQL necessari per ricreare il database, simile a pg_dump.

Utilizzo:

-- Connect to an existing database and restore the backup archive
pg_restore -d database_name outputfile.dump

-- Create and restore the database from the backup archive
pg_restore -C -d database_name outputfile.dump

Comando COPY psql

psql è un'interfaccia client a riga di comando per Cloud SQL per PostgreSQL. Con il comando COPY, psql legge il file specificato negli argomenti del comando e instrada i dati tra il server e il file system locale.

Utilizzo:

-- Connect to an existing database and restore the backup archive
psql -p 5432 -U username -h cloud_sql_instance_ip -d database_name -c "\copy emps from '/opt/files/inputfile.csv' WITH csv;" -W

Esportazione/importazione di Cloud SQL per PostgreSQL:

I seguenti link alla documentazione illustrano come utilizzare gsutil e Google Cloud 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

In Cloud SQL, le attività di backup e ripristino sono gestite tramite backup dei database automatizzati e on demand.

I backup consentono di ripristinare l'istanza Cloud SQL al fine di recuperare i dati persi o risolvere un problema con l'istanza. Ti consigliamo di abilitare i backup automatici per ogni istanza contenente dati che devi proteggere da perdite o danni.

Puoi creare un backup in qualsiasi momento, il che è utile se stai per eseguire un'operazione rischiosa sul tuo database o se hai bisogno di un backup e non vuoi attendere la finestra di backup. Puoi creare backup on demand per qualsiasi istanza, indipendentemente dal fatto che i backup automatici siano abilitati o meno.

I backup on demand non vengono eliminati automaticamente come avviene per i backup automatici. Vengono mantenuti finché non li elimini o fino a quando la loro istanza non viene eliminata. Poiché non vengono eliminati automaticamente, i backup on demand possono influire a lungo termine sui tuoi addebiti di fatturazione, se non li elimini

Quando abiliti i backup automatici, specifichi una finestra di backup di 4 ore. Il backup viene avviato durante questo periodo. Se possibile, pianifica i backup quando l'istanza ha l'attività minima. Se i dati non sono cambiati dall'ultimo backup, non viene eseguito alcun backup.

Cloud SQL conserva fino a 7 backup automatici per ogni istanza. Lo spazio di archiviazione utilizzato dai backup viene addebitato a una tariffa ridotta a seconda della regione in cui sono archiviati i backup. Per ulteriori informazioni sul listino prezzi, consulta la pagina relativa ai prezzi di Cloud SQL per PostgreSQL.

Puoi utilizzare il ripristino delle istanze di database di Cloud SQL per PostgreSQL per ripristinare la stessa istanza, sovrascrivere i dati esistenti o eseguire il ripristino in un'istanza diversa. Cloud SQL per PostgreSQL ti consente inoltre di ripristinare un database PostgreSQL in un momento temporale specifico con l'opzione di backup automatico abilitata.

Per saperne di più su come creare o gestire backup on demand e automatici, consulta Creazione e gestione di backup on demand e automatici.

La tabella seguente elenca le operazioni di backup e ripristino più comuni in Oracle e l'equivalente in Cloud SQL per PostgreSQL:

Descrizione Oracle (Recovery Manager - RMAN) Cloud SQL per PostgreSQL
Backup automatici pianificati Crea un job DBMS_SCHEDULER che eseguirà lo script RMAN su base pianificata. gcloud sql instances patch INSTANCE_NAME --backup-start-time HH:MM
Backup manuali completi dei database BACKUP DATABASE PLUS ARCHIVELOG; gcloud sql backups create --async --instance INSTANCE_NAME
Ripristina database RUN
{
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN;
}
gcloud sql backups list --instance INSTANCE_NAME
gcloud sql backups restore BACKUP_ID --restore-instance=INSTANCE_NAME
Differenziale incrementale BACKUP INCREMENTAL LEVEL 0 DATABASE;
BACKUP INCREMENTAL LEVEL 1 DATABASE;
Tutti i backup sono incrementali, senza la possibilità di scegliere il tipo incrementale.
Cumulativo incrementale BACKUP INCREMENTAL LEVEL 0 CUMULATIVE DATABASE;
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
Tutti i backup sono incrementali, senza la possibilità di scegliere il tipo incrementale.
Ripristina il database in un momento specifico RUN
{
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
SET UNTIL TIME "TO_DATE('19-SEP-2017 23:45:00','DD-MON-YYYY HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
}
gcloud sql instances clone SOURCE_INSTANCE_NAME NEW_INSTANCE_NAME \
--point-in-time TIMESTAMP
Log di archiviazione del database di backup BACKUP ARCHIVELOG ALL; Non supportati.

Istanze in standby per l'implementazione di operazioni di sola lettura e 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 ripetizione e archiviazione. Puoi anche utilizzare Oracle GoldenGate per abilitare un'istanza aggiuntiva per scopi di lettura mentre le modifiche ai dati vengono applicate in tempo reale, fungendo da soluzione Change Data Capture (CDC).

Cloud SQL per PostgreSQL utilizza un'istanza in standby per garantire l'alta disponibilità. Questa istanza viene mantenuta sincronizzata con l'istanza principale tramite la replica a livello di disco. A differenza di Active Data Guard, non è aperto per letture o scritture. Quando l'istanza principale non risponde o non risponde per circa 60 secondi, l'istanza principale esegue automaticamente il failover sull'istanza in standby. Nell'arco di pochi secondi, i ruoli si scambiano e prende il posto del nuovo ruolo principale.

Cloud SQL per PostgreSQL offre anche repliche di lettura per scalare le richieste di lettura. Sono progettate per trasferire le letture dall'istanza principale e non fungere da istanza in standby per il ripristino di emergenza. A differenza dell'istanza in standby, le repliche di lettura vengono mantenute sincronizzate con quella principale in modo asincrono. Possono trovarsi in una zona diversa da quella principale e in un'altra regione. Puoi creare una replica di lettura utilizzando la console Google Cloud o gcloud CLI. Tieni presente che alcune operazioni richiedono il riavvio dell'istanza (ad esempio l'aggiunta dell'alta disponibilità a un'istanza principale esistente).

Logging e monitoraggio

Il file di log degli avvisi di Oracle è l'origine principale per identificare gli eventi generali di sistema e gli eventi di errore al fine di comprendere il ciclo di vita di qualsiasi istanza del database Oracle (principalmente per la risoluzione degli eventi di errore e degli eventi di errore).

Il log degli avvisi Oracle mostra informazioni su quanto segue:

  • Avvisi e errori 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 passaggio dei log di ripristino del database.
  • I file di traccia Oracle potrebbero essere menzionati con un link per ulteriori dettagli su un evento di database specifico.

Oracle fornisce file di log dedicati per diversi servizi come LISTENER, ASM ed Enterprise Manager (OEM), che non dispongono di componenti equivalenti in Cloud SQL per PostgreSQL.

Visualizzazione dei log delle operazioni di Cloud SQL per PostgreSQL

Cloud Logging è la piattaforma principale per visualizzare tutte le voci di log in postgres.log (l'equivalente di alert.log in Oracle). Puoi filtrare in base al livello di evento del log, ad esempio Critico, Errore o Avviso. Sono inoltre disponibili il periodo di tempo degli eventi e il filtro di testo gratuito.

Visualizzazione dei log nella concole.

Monitoraggio delle istanze di database Cloud SQL per PostgreSQL

Le dashboard di monitoraggio dell'interfaccia utente principali di Oracle fanno parte dei prodotti OEM e Grid/Cloud Control (ad esempio, Top Activity Graphs) e sono utili per il monitoraggio in tempo reale delle istanze di database a livello di sessione o di istruzione SQL. Cloud SQL per PostgreSQL fornisce funzionalità di monitoraggio simili utilizzando la console Google Cloud. Puoi visualizzare un riepilogo delle informazioni sulle istanze di database Cloud SQL per PostgreSQL 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 PostgreSQL. Lo screenshot seguente mostra un grafico delle query di Cloud SQL per PostgreSQL delle ultime 12 ore.

Grafico delle query per le ultime 12 ore.

Monitoraggio della replica di lettura di Cloud SQL per PostgreSQL

Puoi monitorare le repliche di lettura nello stesso modo in cui monitori l'istanza principale, utilizzando le metriche di monitoraggio della console Google Cloud (come descritto in precedenza). Esiste anche una metrica di monitoraggio dedicata per monitorare il ritardo di replica, che determina il ritardo tra l'istanza principale e l'istanza di replica di lettura in byte. Può essere monitorato dalla scheda della panoramica dell'istanza della replica di lettura nella console Google Cloud.

Puoi utilizzare gcloud CLI per recuperare lo stato di replica:

gcloud sql instances describe REPLICA_NAME

Puoi anche eseguire il monitoraggio della replica utilizzando i comandi di un client PostgreSQL, che indica lo stato dei database principali e di standby.

Puoi utilizzare la seguente istruzione SQL per verificare lo stato della replica di lettura:

postgres=> select * from pg_stat_replication;

Monitoraggio di Cloud SQL per PostgreSQL

Questa sezione descrive i metodi di monitoraggio di base di Cloud SQL per PostgreSQL, considerati attività di routine eseguite da un amministratore di database (DBA) come Oracle o Cloud SQL per PostgreSQL.

Monitoraggio delle sessioni

Il monitoraggio delle sessioni Oracle viene eseguito eseguendo una query sulle viste dinamiche delle prestazioni note come viste "V$". Le viste V$SESSION e V$PROCESS vengono comunemente utilizzate per ottenere insight in tempo reale sull'attività attuale del database utilizzando le istruzioni SQL. Puoi monitorare l'attività delle sessioni eseguendo una query sulla visualizzazione dinamica pg_stat_activity:

postgres=> select * from pg_stat_activity;

Monitoraggio delle transazioni lunghe

Puoi identificare le query a lunga esecuzione applicando filtri appropriati a colonne come query_start e state nella visualizzazione dinamica pg_stat_activity.

Monitoraggio blocchi

Puoi monitorare i blocchi del database utilizzando la visualizzazione dinamica pg_locks, che fornisce informazioni in tempo reale sulle occorrenze di blocco che potrebbero causare problemi di prestazioni.

Passaggi successivi