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

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

Sicurezza

Questa sezione fornisce indicazioni su crittografia, controllo e 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 dei dati inattivi

I dati che non si muovono attraverso le reti (archiviati) sono noti come "dati at-rest". Oracle offre il meccanismo TDE (Transparent Data Encryption) per aggiungere di crittografia a livello di sistema operativo. In Cloud SQL, i dati vengono È criptato con Advanced Encryption Standard (AES-256) a 256 bit o superiore. Queste chiavi di dati vengono criptate utilizzando una chiave principale archiviata in un keystore sicuro e modificata regolarmente. Per ulteriori informazioni sulla crittografia at-rest, consulta Crittografia at-rest in Google Cloud.

Crittografia dei dati in transito

Oracle offre Advanced Security per la gestione della crittografia dei dati su in ogni rete. Cloud SQL cripta e autentica tutti i dati in transito uno o più livelli di rete quando i dati si spostano fuori dai 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 modello di minaccia. Ad esempio, puoi configurare SSL per le connessioni tra zone a Cloud SQL. Per informazioni su la crittografia dei dati in transito, consulta Crittografia dei dati in transito in Google Cloud.

Controllo

Oracle fornisce diversi metodi di controllo (ad esempio, controllo standard e granulare). Al contrario, il controllo in Cloud SQL per PostgreSQL puoi essere eseguito con i seguenti mezzi:

  • Estensione pgAudit. Registra e monitora le operazioni SQL eseguite su un determinato un'istanza del database.
  • Audit log di Cloud. Verificare le operazioni amministrative e di manutenzione eseguite su un Cloud SQL per PostgreSQL.

Controllo degli accessi

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

Cloud SQL per PostgreSQL si integra con Identity and Access Management (IAM) e fornisce una serie di ruoli predefiniti progettati per aiutarti a controllare l'accesso le 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 il controllo dell'accesso ai progetti.

Operazioni

Questa sezione fornisce indicazioni sulle operazioni di esportazione e importazione, sul backup e sul ripristino a livello di istanza e sulle istanze di standby per le operazioni in sola lettura e l'implementazione del piano di risposta agli incidenti.

Esporta e importa

Il metodo principale di Oracle per eseguire operazioni di esportazione e importazione logica è 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 li importano a livello di database o di oggetto (inclusa l'esportazione e l'importazione solo dei metadati).

Non esiste una soluzione diretta di Cloud SQL per PostgreSQL equivalente per Utilità Oracle DBMS_DATAPUMP (il metodo Oracle per applicare EXPDP/IMPDP che interagisce direttamente con il pacchetto DBMS_DATAPUMP). Per convertire da codice PL/SQL Oracle DBMS_DATAPUMP, usa codice alternativo (ad esempio Bash e Python) per implementare elementi logici e Cloud SQL per PostgreSQL programmi 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), che contiene i metadati utilizzati da SQL*Loader per determinare in che modo i dati devono essere analizzati e caricati nel database Oracle. SQL*Loader supporta origini sia fisse che variabili .

Le utilità pg_dump e pg_restore vengono eseguite a livello di client e si connettono remotely all'istanza Cloud SQL per PostgreSQL. I file di dump vengono creati in sul lato client. Per caricare file esterni in Cloud SQL per PostgreSQL, utilizza il comando COPY dall'interfaccia client psql, oppure usa Dataflow Dataproc. Questa sezione si concentra 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 tuo database Cloud SQL per PostgreSQL, prendi in considerazione l'utilizzo di Dataflow o Dataproc, comporta la creazione di un processo ETL.

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

pg_dump

La pg_dump l'utilità client esegue backup coerenti e output in script o file di archivio formati. Il dump dello script è un insieme di istruzioni SQL che possono essere eseguite riprodurre le definizioni originali degli oggetti di database e i dati della tabella. Queste query SQL le istruzioni possono essere inviate a qualsiasi client PostgreSQL per il ripristino. I backup nei formati di file di archiviazione devono essere utilizzati con pg_restore durante le operazioni di ripristino, ma consentono di ripristinare oggetti selettivi e sono progettati per essere trasportabili 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 non viene specificato un nome di database, pg_restore genera uno script contenente i comandi SQL necessari per ricostruire il database in modo 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 psql COPY

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 inoltra 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 l'interfaccia a riga di comando gcloud 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 recupero vengono gestite tramite backup automatici e on demand dei database.

I backup offrono un modo per ripristinare l'istanza Cloud SQL o ripristinare i dati dopo un problema con l'istanza. Ti consigliamo di e abilitare i backup automatici per qualsiasi istanza contenente dati di cui devi eseguire proteggere da perdite o danni.

Puoi creare un backup in qualsiasi momento, il che è utile se stai per eseguire un'operazione rischiosa sul database o se hai bisogno di un backup e non vuoi attendere la finestra di backup. Puoi creare backup on demand per qualsiasi istanza, che si tratti di un'istanza con backup automatici attivati o meno.

I backup on demand non vengono eliminati automaticamente come i backup automatici. Rimangono visibili finché non li elimini o finché la loro istanza non viene eliminata. Poiché non vengono eliminati automaticamente, i backup on demand possono avere effetto sugli addebiti se non li elimini

Quando abiliti i backup automatici, specifichi una finestra di backup di 4 ore. La il backup viene avviato durante questo periodo. Se possibile, pianifica i backup con l'attività minore. 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 vengono archiviati. Per saperne di più sul listino prezzi, consulta Prezzi di Cloud SQL per PostgreSQL.

Puoi utilizzare il ripristino dell'istanza del database Cloud SQL per PostgreSQL per eseguire il ripristino nella stessa istanza, sovrascrivere i dati esistenti o eseguire il ripristino in un'altra istanza. Cloud SQL per PostgreSQL ti consente anche di ripristinare a uno specifico database in un determinato momento con l'opzione di backup automatico attivata.

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

La tabella seguente elenca le operazioni di backup e ripristino comuni in Oracle e il relativo 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à il tuo RMAN script in modo pianificato. gcloud sql instances patch INSTANCE_NAME --backup-start-time HH:MM
Backup completi manuali del 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 di backup incrementale.
Incrementale cumulativo BACKUP INCREMENTAL LEVEL 0 CUMULATIVE DATABASE;
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
Tutti i backup sono incrementali, senza la possibilità di scegliere il tipo di backup incrementale.
Ripristinare il database a 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
Esegui il backup dei log dell'archivio del database 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 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 PostgreSQL utilizza un'istanza di standby per 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 si arresta in modo anomalo o non risponde per circa 60 secondi, viene eseguito il failover automatico all'istanza di riserva. Entro pochi secondi, i ruoli vengono scambiati e il nuovo account principale prende il controllo.

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

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).

Nel log degli avvisi Oracle vengono visualizzate informazioni su quanto segue:

  • Errori e avvisi relativi alle istanze del database Oracle (ORA- + numero di errore).
  • Eventi di avvio e arresto delle istanze di database Oracle.
  • Problemi relativi alla rete e alla connessione.
  • Eventi di commutazione dei log di ripristino del database.
  • I file di traccia Oracle potrebbero essere menzionati con un link per ulteriori dettagli riguardo a uno specifico evento del database.

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 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). anche il periodo di tempo degli eventi e il filtro del testo libero disponibili.

Visualizzazione dei log nella console.

Monitoraggio delle istanze di database Cloud SQL per PostgreSQL

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 istruzioni SQL. Cloud SQL per PostgreSQL offre funzionalità di monitoraggio simili utilizzando nella console Google Cloud. Puoi visualizzare informazioni riepilogative 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 per le ultime 12 ore.

Grafico delle query delle ultime 12 ore.

Monitoraggio delle repliche di lettura 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). Inoltre, esiste una metrica di monitoraggio dedicata per il monitoraggio del ritardo della replica, che determina il ritardo in byte tra l'istanza principale e l'istanza di replica di lettura (può essere monitorata dalla scheda Panoramica dell'istanza di replica di lettura nella console Google Cloud).

Puoi utilizzare l'interfaccia a riga di comando gcloud per recuperare lo stato della replica:

gcloud sql instances describe REPLICA_NAME

Puoi anche eseguire il monitoraggio della replica utilizzando i comandi che fornisce lo stato dei database primario e in standby.

Puoi utilizzare il seguente statement 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 della sessione Oracle viene eseguito mediante una query sulle viste del rendimento dinamico noto come "V$" visualizzazioni. Le visualizzazioni V$SESSION e V$PROCESS sono di uso comune per ottenere insight in tempo reale sull'attività corrente dei database, utilizzando SQL istruzioni. 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 i filtri appropriati su come query_start e state nel pg_stat_activity visualizzazione dinamica.

Monitoraggio della serratura

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

Passaggi successivi