Este documento forma parte de una serie que proporciona información y directrices clave relacionadas con la planificación y la realización de migraciones de bases de datos Oracle® 11g/12c a la versión 12 de Cloud SQL para PostgreSQL. Además de la parte de configuración inicial, la serie incluye las siguientes partes:
- Migrar usuarios de Oracle a Cloud SQL para PostgreSQL: terminología y funciones
- Migrar usuarios de Oracle a Cloud SQL para PostgreSQL: tipos de datos, usuarios y tablas
- Migrar usuarios de Oracle a Cloud SQL para PostgreSQL: consultas, procedimientos almacenados, funciones y activadores
- Migrar usuarios de Oracle a Cloud SQL para PostgreSQL: seguridad, operaciones, monitorización y registro (este documento)
- Migrar usuarios y esquemas de bases de datos de Oracle a Cloud SQL para PostgreSQL
Seguridad
En esta sección se ofrecen directrices sobre el cifrado, la auditoría y el control de acceso.
Cifrado
Tanto Oracle como Cloud SQL para PostgreSQL ofrecen mecanismos de cifrado de datos para añadir una capa de protección adicional más allá de la autenticación básica de usuarios y la gestión de privilegios de usuario.
Encriptado en reposo
Los datos que no se mueven por las redes (almacenados) se denominan "datos en reposo". Oracle ofrece el mecanismo TDE (Transparent Data Encryption) para añadir una capa de cifrado a nivel del sistema operativo. En Cloud SQL, los datos se encriptan mediante el estándar de cifrado avanzado (AES) de 256 bits o un algoritmo mejor. Estas claves de datos se cifran con una clave maestra almacenada en un almacén de claves seguro y se cambian periódicamente. Para obtener más información sobre el cifrado en reposo, consulta Cifrado en reposo en Google Cloud.
Encriptado en tránsito
Oracle ofrece Advanced Security para gestionar el cifrado de datos en la red. Cloud SQL encripta y autentica todos los datos en tránsito en una o más capas de la red cuando estos salen de los límites físicos no controlados por Google o en su nombre. Los datos en tránsito que se encuentran dentro de un límite físico controlado por Google o en su nombre suelen estar autenticados, pero no necesariamente encriptados. Tú eres quien decide las medidas de seguridad que quieres adoptar, en función de cuál sea tu modelo de protección contra amenazas. Por ejemplo, puede configurar SSL para las conexiones entre zonas a Cloud SQL. Para obtener información sobre el cifrado en tránsito, consulta el artículo Cifrado en tránsito en Google Cloud.
Auditoría
Oracle ofrece varios métodos de auditoría (por ejemplo, auditoría estándar y detallada). Por el contrario, la auditoría en Cloud SQL para PostgreSQL se puede llevar a cabo de las siguientes formas:
- Extensión pgAudit. Registra y monitoriza las operaciones de SQL realizadas en una instancia de base de datos determinada.
- Registros de auditoría de Cloud. Audita las operaciones administrativas y de mantenimiento realizadas en una instancia de Cloud SQL para PostgreSQL.
Control de acceso
Los usuarios pueden conectarse a la instancia de Cloud SQL para PostgreSQL mediante un cliente de PostgreSQL con una dirección IP estática autorizada o mediante el proxy de Cloud SQL, como con cualquier otra conexión de base de datos. En el caso de otras fuentes de conexión, como App Engine o Compute Engine, los usuarios tienen varias opciones, como usar el proxy de Cloud SQL. Para obtener más información sobre estas opciones, consulta Control de acceso a instancias.
Cloud SQL para PostgreSQL se integra con Identity and Access Management (IAM) y proporciona un conjunto de roles predefinidos diseñados para ayudarte a controlar el acceso a tus recursos de Cloud SQL. Estos roles permiten a los usuarios de IAM iniciar varias operaciones administrativas, como reinicios de instancias, copias de seguridad y conmutaciones por error. Consulta Control de acceso a proyectos para obtener más información.
Operaciones
En esta sección se ofrecen directrices sobre las operaciones de exportación e importación, la copia de seguridad y la restauración a nivel de instancia, y las instancias de espera para las operaciones de solo lectura y la implementación de la recuperación ante desastres.
Exportar e importar
El método principal de Oracle para realizar operaciones de exportación e importación lógicas es la utilidad Data Pump, que usa los comandos EXPDP
/IMPDP
(una versión anterior de la función de exportación e importación de Oracle incluía los comandos exp
/imp
). Los comandos equivalentes de Cloud SQL para PostgreSQL son las utilidades pg_dump
y pg_restore
, que generan archivos de volcado y, a continuación, los importan a nivel de base de datos u objeto (incluida la exportación e importación de metadatos únicamente).
No hay ninguna solución equivalente directa de Cloud SQL para PostgreSQL para la utilidad DBMS_DATAPUMP
de Oracle (el método de Oracle para aplicar la funcionalidad EXPDP
/IMPDP
interactúa directamente con el paquete DBMS_DATAPUMP
). Para convertir código DBMS_DATAPUMP
PL/SQL de Oracle, usa código alternativo (por ejemplo, Bash y Python) para implementar elementos lógicos y los programas pg_dump
y pg_restore
de Cloud SQL para PostgreSQL para ejecutar operaciones de exportación e importación.
Oracle SQL*Loader se puede usar para cargar archivos externos en tablas de bases de datos. SQL*Loader puede usar un archivo de configuración (llamado archivo de control) que contiene los metadatos que usa SQL*Loader para determinar cómo se deben analizar y cargar los datos en la base de datos de Oracle. SQL*Loader admite archivos de origen fijos y variables.
Las utilidades pg_dump
y pg_restore
se ejecutan a nivel de cliente y se conectan de forma remota a la instancia de Cloud SQL para PostgreSQL. Los archivos de volcado se crean en el lado del cliente. Para cargar archivos externos en Cloud SQL para PostgreSQL, usa el comando COPY
de la interfaz del cliente psql o usa Dataflow o Dataproc. En esta sección se centra principalmente en el comando COPY
de Cloud SQL para PostgreSQL, que es un equivalente más directo de la utilidad SQL*Loader de Oracle.
Para cargas de datos más complejas en tu base de datos de Cloud SQL para PostgreSQL, te recomendamos que uses Dataflow o Dataproc, lo que implica crear un proceso de ETL.
Para obtener más información sobre Dataflow, consulta la documentación de Dataflow. Para obtener más información sobre Dataproc, consulta la documentación de Dataproc.
pg_dump
La utilidad de cliente
pg_dump
realiza copias de seguridad coherentes y genera resultados en formatos de secuencia de comandos o de archivo. Un volcado de la secuencia de comandos es un conjunto de instrucciones SQL que se pueden ejecutar para reproducir las definiciones de objetos de la base de datos original y los datos de las tablas. Estas instrucciones SQL se pueden proporcionar a cualquier cliente de PostgreSQL para restaurar la base de datos. Las copias de seguridad en formato de archivo deben usarse con pg_restore
durante las operaciones de restauración, pero permiten restaurar objetos de forma selectiva y están diseñadas para ser portátiles entre arquitecturas.
Uso:
-- 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
El programa cliente pg_restore
restaura una base de datos de PostgreSQL a partir de un archivo creado por pg_dump
. Si no se especifica ningún nombre de base de datos, pg_restore
genera una secuencia de comandos que contiene los comandos SQL necesarios para reconstruir la base de datos de forma similar a pg_dump
.
Uso:
-- 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
de psql
psql es una interfaz de cliente de línea de comandos para Cloud SQL para PostgreSQL. Con el comando COPY
, psql lee el archivo especificado en los argumentos del comando y dirige los datos entre el servidor y el sistema de archivos local.
Uso:
-- 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
Exportación e importación de Cloud SQL para PostgreSQL:
Los siguientes enlaces a la documentación muestran cómo usar gcloud CLI para interactuar con la instancia de Cloud SQL y con Cloud Storage para aplicar las operaciones de exportación y importación.
Copia de seguridad y restauración a nivel de instancia
En Cloud SQL, las tareas de copia de seguridad y recuperación se gestionan mediante copias de seguridad de bases de datos automáticas y bajo demanda.
Las copias de seguridad te permiten restaurar tu instancia de Cloud SQL para recuperar datos perdidos o recuperarte de un problema con tu instancia. Te recomendamos que habilites las copias de seguridad automáticas en cualquier instancia que contenga datos que necesites proteger frente a pérdidas o daños.
Puedes crear una copia de seguridad en cualquier momento, lo que resulta útil si vas a realizar una operación arriesgada en tu base de datos o si necesitas una copia de seguridad y no quieres esperar a que finalice la ventana. Puedes crear copias de seguridad bajo demanda de cualquier instancia, independientemente de si tiene habilitadas las copias de seguridad automáticas o no.
Las copias de seguridad bajo demanda no se eliminan automáticamente, a diferencia de lo que sucede con las automáticas. Permanecen hasta que las elimines o hasta que se elimine su instancia. Como no se eliminan automáticamente, las copias de seguridad bajo demanda pueden tener un efecto a largo plazo en los cargos de facturación si no las eliminas.
Al habilitar las copias de seguridad automáticas, se especifica un periodo de copia de seguridad de 4 horas. La copia de seguridad se inicia durante este periodo. Si es posible, programa las copias de seguridad cuando tu instancia tenga la menor actividad. Si tus datos no han cambiado desde la última copia de seguridad, no se creará ninguna.
Cloud SQL retiene hasta 7 copias de seguridad automatizadas de cada instancia. El almacenamiento utilizado por las copias de seguridad se cobra a una tarifa reducida en función de la región en la que se almacenen. Para obtener más información sobre la lista de precios, consulta la página Precios de Cloud SQL para PostgreSQL.
Puedes usar la restauración de instancias de bases de datos de Cloud SQL para PostgreSQL para restaurar la misma instancia, sobrescribir datos o restaurar una instancia diferente. Cloud SQL para PostgreSQL también te permite restaurar una base de datos de PostgreSQL a un momento específico si tienes habilitada la opción de copia de seguridad automática.
Para obtener más información sobre cómo crear o gestionar copias de seguridad automáticas y bajo demanda, consulta el artículo Crear y gestionar copias de seguridad automáticas y bajo demanda.
En la siguiente tabla se enumeran las operaciones de copia de seguridad y restauración habituales en Oracle y su equivalente en Cloud SQL para PostgreSQL:
Descripción | Oracle (Recovery Manager - RMAN ) |
Cloud SQL para PostgreSQL |
---|---|---|
Copias de seguridad automáticas programadas | Crea una tarea DBMS_SCHEDULER que ejecute tu secuencia de comandos RMAN de forma programada. |
gcloud sql instances patch INSTANCE_NAME --backup-start-time HH:MM
|
Copias de seguridad completas de bases de datos manuales | BACKUP DATABASE PLUS ARCHIVELOG;
|
gcloud sql backups create --async --instance INSTANCE_NAME
|
Restaurar base de datos | RUN
|
gcloud sql backups list --instance INSTANCE_NAME
|
Diferencial incremental | BACKUP INCREMENTAL LEVEL 0 DATABASE;
|
Todas las copias de seguridad son incrementales y no se puede elegir el tipo de incremento. |
Acumulativo incremental | BACKUP INCREMENTAL LEVEL 0 CUMULATIVE DATABASE;
|
Todas las copias de seguridad son incrementales y no se puede elegir el tipo de incremento. |
Restaurar una base de datos a un momento específico | RUN
|
gcloud sql instances clone SOURCE_INSTANCE_NAME NEW_INSTANCE_NAME \
|
Crear copias de seguridad de los registros de archivo de la base de datos | BACKUP ARCHIVELOG ALL;
|
No es compatible. |
Instancias de espera para operaciones de solo lectura e implementación de recuperación tras fallos
Oracle Active Data Guard permite que una instancia de espera actúe como endpoint de solo lectura mientras se aplican datos nuevos a través de los registros de rehacer y de archivo. También puedes usar Oracle GoldenGate para habilitar una instancia adicional con fines de lectura mientras se aplican modificaciones de datos en tiempo real, lo que sirve como solución de captura de datos de cambios (CDC).
Cloud SQL para PostgreSQL usa una instancia de espera para la alta disponibilidad. Esta instancia se mantiene sincronizada con la instancia principal mediante la replicación a nivel de disco. A diferencia de Active Data Guard, no está abierto para lecturas ni escrituras. Cuando la instancia principal deja de funcionar o no responde durante aproximadamente 60 segundos, se transfiere automáticamente a la instancia de espera. En cuestión de segundos, los roles cambian y el nuevo primario toma el control.
Cloud SQL para PostgreSQL también ofrece réplicas de lectura para escalar las solicitudes de lectura. Están diseñadas para descargar las lecturas de la instancia principal, no para servir como instancia de reserva en caso de recuperación tras desastre. A diferencia de la instancia de espera, las réplicas de lectura se mantienen sincronizadas con la principal de forma asíncrona. Pueden estar en una zona distinta a la principal y también en otra región. Puedes crear una réplica de lectura mediante laGoogle Cloud consola o la CLI de gcloud. Ten en cuenta que algunas operaciones requieren reiniciar una instancia (por ejemplo, añadir alta disponibilidad a una instancia principal ya creada).
Almacenamiento de registros y monitorización
El archivo de registro de alertas de Oracle es la fuente principal para identificar eventos generales del sistema y eventos de error con el fin de comprender el ciclo de vida de cualquier instancia de base de datos de Oracle (principalmente, para solucionar problemas de eventos de error).
El registro de alertas de Oracle muestra información sobre lo siguiente:
- Errores y advertencias de la instancia de base de datos Oracle (
ORA-
+ número de error). - Eventos de inicio y cierre de instancias de bases de datos de Oracle.
- Problemas relacionados con la red y la conexión.
- Eventos de cambio de registros de rehacer de la base de datos.
- Es posible que se mencionen archivos de seguimiento de Oracle con un enlace para obtener más información sobre un evento de base de datos específico.
Oracle proporciona archivos de registro específicos para diferentes servicios, como LISTENER, ASM y Enterprise Manager (OEM), que no tienen componentes equivalentes en Cloud SQL para PostgreSQL.
Ver los registros de operaciones de Cloud SQL para PostgreSQL
Cloud Logging es la plataforma principal para ver todas las entradas de registro de postgres.log
(el equivalente de alert.log
en Oracle). Puede filtrar por el nivel del evento de registro (por ejemplo, Crítico, Error o Advertencia). También se pueden filtrar por periodo y por texto libre.
Monitorización de instancias de bases de datos de Cloud SQL para PostgreSQL
Los principales paneles de control de monitorización de la interfaz de usuario de Oracle forman parte de los productos OEM y Grid/Cloud Control (por ejemplo, Gráficos de actividad principal) y son útiles para monitorizar instancias de bases de datos en tiempo real a nivel de sesión o de instrucción SQL. Cloud SQL para PostgreSQL ofrece funciones de monitorización similares mediante laGoogle Cloud consola. Puede ver información resumida sobre las instancias de base de datos de Cloud SQL para PostgreSQL con varias métricas de monitorización, como el uso de CPU, el uso de almacenamiento, el uso de memoria, las operaciones de lectura/escritura, los bytes de entrada/salida y las conexiones activas, entre otras.
Cloud Logging admite métricas de monitorización adicionales para Cloud SQL para PostgreSQL. En la siguiente captura de pantalla se muestra un gráfico de consultas de Cloud SQL para PostgreSQL de las últimas 12 horas.
Monitorización de réplicas de lectura de Cloud SQL para PostgreSQL
Puedes monitorizar las réplicas de lectura del mismo modo que monitorizas la instancia principal, usando las métricas de monitorización de la consola (como se ha descrito anteriormente). Google Cloud También hay una métrica de monitorización específica para monitorizar el retraso de la replicación, que determina el desfase entre la instancia principal y la instancia de réplica de lectura en bytes (se puede monitorizar desde la pestaña de vista general de la instancia de réplica de lectura en la consola de Google Cloud ).
Puedes usar gcloud CLI para obtener el estado de la réplica:
gcloud sql instances describe REPLICA_NAME
También puedes monitorizar la replicación mediante comandos de un cliente de PostgreSQL, que proporciona el estado de las bases de datos principal y de espera.
Puedes usar la siguiente instrucción SQL para verificar el estado de la réplica de lectura:
postgres=> select * from pg_stat_replication;
Monitorización de Cloud SQL para PostgreSQL
En esta sección se describen los métodos básicos de monitorización de Cloud SQL para PostgreSQL, que se consideran tareas rutinarias realizadas por un administrador de bases de datos (DBA), como Oracle o Cloud SQL para PostgreSQL.
Monitorización de sesiones
La monitorización de sesiones de Oracle se realiza consultando las vistas de rendimiento dinámicas, conocidas como vistas "V$". Las vistas V$SESSION
y V$PROCESS
se suelen usar para obtener estadísticas en tiempo real sobre la actividad actual de la base de datos mediante instrucciones SQL. Puedes monitorizar la actividad de las sesiones consultando la vista dinámica pg_stat_activity
:
postgres=> select * from pg_stat_activity;
Monitorización de transacciones largas
Puedes identificar las consultas de larga duración aplicando los filtros adecuados en columnas como query_start
y state
en la vista dinámica pg_stat_activity
.
Monitorización de cerraduras
Puede monitorizar los bloqueos de bases de datos mediante la vista dinámica pg_locks
, que proporciona información en tiempo real sobre las incidencias de bloqueo que pueden provocar problemas de rendimiento.
Siguientes pasos
- Consulta más información sobre las cuentas de usuario de Cloud SQL para PostgreSQL.
- Consulta arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Centro de arquitectura de Cloud.