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 PostgreSQL versione 12. Oltre alla parte introduttiva sulla configurazione, la serie include le seguenti parti:
- Migrazione degli utenti Oracle a Cloud SQL per PostgreSQL: terminologia e funzionalità
- Migrazione degli utenti Oracle a Cloud SQL per PostgreSQL: tipi di dati, utenti e tabelle
- Migrazione degli utenti Oracle a Cloud SQL per PostgreSQL: query, stored procedure, funzioni e trigger
- Migrazione degli utenti Oracle a Cloud SQL per PostgreSQL: sicurezza, operazioni, monitoraggio e registrazione (questo documento)
- Eseguire la migrazione di utenti e schemi di database Oracle in Cloud SQL per PostgreSQL
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 spostano attraverso le reti (archiviati) sono noti come "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 Advanced Encryption Standard (AES-256) a 256 bit o una versione successiva. 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 dei dati inattivi in Google Cloud.
Crittografia dei dati in transito
Oracle offre la sicurezza avanzata per gestire la 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 modello di minaccia. Ad esempio, puoi configurare SSL per le connessioni all'interno della zona a Cloud SQL. Per informazioni sulla 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 una determinata istanza di database.
- Audit log di Cloud. Controlla le operazioni amministrative e di manutenzione eseguite su un'istanza 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 App Engine o Compute Engine, gli utenti hanno a disposizione diverse opzioni, ad esempio l'utilizzo di Cloud SQL Proxy. 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 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 di sola lettura e l'implementazione del piano di risposta agli incidenti.
Esportazione e importazione
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 equivalente diretta di 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 eseguire la conversione
da codice PL/SQL DBMS_DATAPUMP
di Oracle, utilizza codice alternativo (ad esempio Bash
e Python) per implementare elementi logici e 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), 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 sia i file di origine fissi che quelli 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 dump vengono creati sul lato client. Per caricare file esterni in Cloud SQL per PostgreSQL, utilizza il comando COPY
dall'interfaccia del client psql oppure utilizza Dataflow o 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, considera la possibilità di utilizzare Dataflow o Dataproc, che prevedono 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
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 di database e i dati delle tabelle originali. Queste istruzioni SQL possono essere fornite 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 alla 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
In Cloud SQL, le attività di backup e recupero vengono gestite tramite backup automatici e on demand dei database.
I backup consentono di ripristinare l'istanza Cloud SQL per recuperare i dati persi o risolvere un problema con l'istanza. Ti consigliamo di attivare i backup automatici per qualsiasi 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 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 un effetto a lungo termine sugli addebiti di fatturazione se non li elimini.
Quando attivi i backup automatici, specifichi una finestra di backup di 4 ore. Il backup inizia durante questo intervallo di tempo. Se possibile, pianifica i backup quando l'attività della tua istanza è minima. Se i dati non sono stati modificati 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 un database PostgreSQL a un momento specifico con l'opzione di backup automatico abilitata.
Per ulteriori informazioni su come creare o gestire i backup on demand e automatici, consulta Creare e gestire i 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à lo script RMAN in base a una pianificazione. |
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
|
gcloud sql backups list --instance INSTANCE_NAME
|
Differenziale incrementale | BACKUP INCREMENTAL LEVEL 0 DATABASE;
|
Tutti i backup sono incrementali, senza la possibilità di scegliere il tipo di backup incrementale. |
Incrementale cumulativo | BACKUP INCREMENTAL LEVEL 0 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
|
gcloud sql instances clone SOURCE_INSTANCE_NAME NEW_INSTANCE_NAME \
|
Esegui il backup dei log dell'archivio del database | BACKUP ARCHIVELOG ALL;
|
Non supportati. |
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 PostgreSQL utilizza un'istanza di riserva 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 repliche di lettura per scalare le richieste di lettura. Sono progettate per scaricare le letture dall'istanza principale, non per fungere da istanza di riserva per il ripristino di emergenza. A differenza dell'istanza di standby, le repliche di lettura vengono mantenute 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 la console Google Cloud o la gcloud CLI. Tieni presente che alcune operazioni richiedono il riavvio di un'istanza (ad esempio l'aggiunta della disponibilità elevata a un'istanza principale esistente).
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.
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 dell'evento del log (ad es. Grave, Errore o Avviso). Sono inoltre disponibili il periodo di tempo dell'evento e il filtro di testo libero.
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 istruzione SQL. Cloud SQL per PostgreSQL offre funzionalità di monitoraggio simili utilizzando la 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.
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 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 PostgreSQL, che fornisce lo stato dei database principale e di standby.
Puoi utilizzare il 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 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 eseguendo una query sulla visualizzazione dinamica pg_stat_activity
:
postgres=> select * from pg_stat_activity;
Monitoraggio delle transazioni lunghe
Puoi identificare le query in esecuzione da molto tempo applicando filtri appropriati a colonne come query_start
e state
nella visualizzazione dinamica pg_stat_activity
.
Monitoraggio della serratura
Puoi monitorare i blocchi del database utilizzando la visualizzazione dinamica pg_locks
, che fornisce informazioni in tempo reale sulle occorrenze dei blocchi che potrebbero causare problemi di prestazioni.
Passaggi successivi
- Scopri di più sugli account utente di Cloud SQL per PostgreSQL.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.