Migra usuarios de Oracle® a Cloud SQL para PostgreSQL: seguridad, operaciones, supervisión y registro

Este documento es parte de una serie que proporciona información clave y orientación relacionada con la planificación y realización de migraciones de bases de datos de Oracle® 11g/12c a Cloud SQL para PostgreSQL versión 12. Además de la sección de configuración de introducción, la serie incluye las siguientes partes:

Seguridad

En esta sección, se ofrece orientación sobre la encriptación, la auditoría y el control de acceso.

Encriptación

Oracle y Cloud SQL para PostgreSQL ofrecen mecanismos de encriptación de datos a fin de agregar una capa de protección adicional más allá de la autenticación básica de usuarios y la administración de privilegios de usuario.

Encriptación en reposo

Los datos que no se mueven a través de redes (almacenadas) se conocen como “datos en reposo”. Oracle ofrece el mecanismo de TDE (encriptación de datos transparente) para agregar una capa de encriptación a nivel del sistema operativo. En Cloud SQL, los datos se encriptan mediante el Estándar de encriptación avanzada de 256 bits (AES-256) o uno superior. Estas claves de datos cambian con frecuencia y se encriptan con una clave principal almacenada en un almacén de claves seguro. Para obtener más información sobre la encriptación en reposo, consulta Encriptación en reposo en Google Cloud.

Encriptación en tránsito

Oracle ofrece seguridad avanzada para controlar la encriptación de los datos a través de la red. Cloud SQL encripta y autentica todos los datos en tránsito en una o más capas de red cuando los datos se transfieren fuera de los límites físicos no controlados por Google ni en su nombre. Por lo general, los datos en tránsito dentro de un límite físico controlado por Google o en su nombre se autentican, pero puede que no se encripten según la configuración predeterminada. Puedes elegir qué medidas de seguridad adicionales aplicar en función de tu modelo de amenaza. Por ejemplo, puedes configurar SSL para realizar conexiones a Cloud SQL dentro de la zona. Para obtener información sobre la encriptación en tránsito, consulta Encriptación en tránsito en Google Cloud.

En auditoría

Oracle proporciona varios métodos para la auditoría (por ejemplo, auditorías estándar y detalladas). En cambio, la auditoría en Cloud SQL para PostgreSQL se puede lograr de las siguientes maneras:

  • Extensión pgAudit. Registra y realiza un seguimiento de 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 que se realizan 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 PostgreSQL con una dirección IP estática autorizada o con el proxy de Cloud SQL, como cualquier otra conexión de base de datos. Para otras fuentes de conexión, como App Engine o Compute Engine, los usuarios tienen varias opciones, como el uso del proxy de Cloud SQL. Para obtener más información sobre estas opciones, consulta la página sobre el control de acceso a las instancias.

Cloud SQL para PostgreSQL se integra en Identity and Access Management (IAM) y proporciona un conjunto de funciones predefinidas diseñadas con el fin de ayudarte a controlar el acceso a tus recursos de Cloud SQL. Estas funciones permiten a los usuarios de IAM iniciar varias operaciones administrativas, como reinicios de instancias, copias de seguridad y conmutaciones por error. Consulta la sección Control de acceso a proyectos para obtener más información.

Operations

En esta sección, se ofrecen instrucciones sobre las operaciones de importación y exportación, las copias de seguridad y el restablecimiento a nivel de instancia, las instancias en espera para operaciones de solo lectura y la implementación de recuperación ante desastres.

Importar y exportar

El método principal de Oracle para realizar operaciones lógicas de importación y exportación es la utilidad de volcado de datos, con los comandos EXPDP o IMPDP (una versión anterior de la funcionalidad de importación y exportación de Oracle incluía los comandos exp y imp). Los comandos equivalentes de Cloud SQL para PostgreSQL son las utilidades de pg_dump y pg_restore, que generan archivos de volcado y, luego, se importan a nivel de la base de datos o del objeto (incluidas las exportaciones y la importación solo de metadatos).

No hay una solución directa de Cloud SQL para PostgreSQL para la utilidad DBMS_DATAPUMP de Oracle (el método de Oracle a fin de aplicar la funcionalidad EXPDP/IMPDP interactúa directamente con el paquete DBMS_DATAPUMP). Convierte desde el código Oracle DBMS_DATAPUMP PL/SQL, usa código alternativo (por ejemplo, Bash y Python) para implementar elementos lógicos y los programas de Cloud SQL para PostgreSQL pg_dump y pg_restore a fin de ejecutar operaciones de importación y exportació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. La creación de los archivos de volcado se realiza por parte del cliente. Para cargar archivos externos en Cloud SQL para PostgreSQL, usa el comando COPY desde la interfaz del cliente psql, también puedes usar Dataflow o Dataproc. En esta sección, nos enfocamos principalmente en el comando COPY de Cloud SQL para PostgreSQL, que es un equivalente más directo a la utilidad SQL*Loader de Oracle.

Para cargas de datos más complejas en tu base de datos de Cloud SQL para PostgreSQL, considera usar Dataflow o Dataproc, que implica crear un proceso ETL.

Para obtener más información sobre Dataflow, consulta la documentación de Dataflow y, para obtener más información sobre Dataproc, consulta la documentación de Dataproc.

pg_dump

La utilidad del cliente pg_dump realiza copias de seguridad y resultados coherentes en formatos de archivo de secuencia de comandos o de archivo. El volcado de secuencia de comandos es un conjunto de instrucciones de SQL que se pueden ejecutar para reproducir los datos de la tabla y las definiciones de objetos de la base de datos original. Estas instrucciones de SQL se pueden enviar a cualquier cliente PostgreSQL para su restablecimiento. Las copias de seguridad en formatos de archivo se deben usar con pg_restore durante las operaciones de restablecimiento, pero las copias de seguridad permiten que los objetos selectivos se restablezcan y estén diseñados para ser portátiles en varias 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 restablece una base de datos PostgreSQL a partir de un archivo creado por pg_dump. Si no se especifica un nombre de base de datos, pg_restore genera una secuencia de comandos que contiene los comandos de SQL necesarios para volver a compilar la base de datos de manera 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 destinada a Cloud SQL para PostgreSQL. Con el comando COPY, psql lee el archivo especificado en los argumentos del comando y enruta 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

Importación y exportación de Cloud SQL para PostgreSQL:

En los siguientes vínculos de documentación, se ilustra cómo gsutil y Google Cloud CLI para interactuar con la instancia de Cloud SQL y con Cloud Storage a fin de aplicar las operaciones Exportar e Importar.

Copia de seguridad y restablecimiento a nivel de instancia

En Cloud SQL, las tareas de copia de seguridad y recuperación se controlan a través de copias de seguridad de bases de datos automatizadas y a pedido.

Las copias de seguridad proporcionan una manera de restablecer la instancia de Cloud SQL para recuperar los datos perdidos o reponerse de un problema con tu instancia. Te recomendamos habilitar las copias de seguridad automáticas para cualquier instancia que contenga datos que necesites proteger contra pérdidas o daños.

Puedes crear una copia de seguridad en cualquier momento, lo que es útil si estás a punto de realizar una operación riesgosa en la base de datos o si necesitas una copia de seguridad y no deseas esperar el período asignado. Puedes crear copias de seguridad a pedido para cualquier instancia, ya sea que tengan o no habilitadas las copias de seguridad automáticas.

Las copias de seguridad a pedido no se borran de forma automática como sucede con las copias de seguridad automáticas. Estas persisten hasta que las borres o hasta que se borre su instancia. Como no se borran de forma automática, las copias de seguridad a pedido pueden tener un efecto a largo plazo en tus cargos de facturación si no las borras.

Cuando habilitas las copias de seguridad automáticas, debes especificar un período de copia de seguridad de 4 horas. La copia de seguridad se inicia durante este período. De ser posible, programa las copias de seguridad en los momentos en los que la instancia tiene poca actividad. Si tus datos no cambiaron desde la última copia de seguridad, no se realizará una nueva.

Cloud SQL retiene hasta 7 copias de seguridad automáticas por cada instancia. El almacenamiento usado para las copias de seguridad se cobra a una tarifa reducida según la región en la que se almacenen. Si deseas obtener más información sobre la lista de precios, consulta Precios de Cloud SQL para PostgreSQL.

Puedes usar el restablecimiento de la instancia de base de datos de Cloud SQL para PostgreSQL a fin de restablecer a la misma instancia, reemplazar datos existentes o restablecer a una instancia diferente. Cloud SQL para PostgreSQL también te permite restablecer una base de datos de PostgreSQL a un momento determinado específico con la opción de copia de seguridad automatizada habilitada.

Para obtener más información sobre cómo crear o administrar copias de seguridad automáticas y bajo demanda, consulta Crea y administra copias de seguridad automáticas y bajo demanda.

En la siguiente tabla, se enumeran las operaciones comunes de copia de seguridad y restablecimiento en Oracle y sus equivalentes en Cloud SQL para PostgreSQL:

Descripción Oracle (administrador de recuperación: RMAN) Cloud SQL para PostgreSQL
Copias de seguridad automáticas programadas Crea un trabajo 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 manuales de las bases de datos BACKUP DATABASE PLUS ARCHIVELOG; gcloud sql backups create --async --instance INSTANCE_NAME
Restablece bases de datos 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
Diferencial incremental BACKUP INCREMENTAL LEVEL 0 DATABASE;
BACKUP INCREMENTAL LEVEL 1 DATABASE;
Todas las copias de seguridad son incrementales, sin ninguna opción para elegir el tipo incremental.
Acumulativo incremental BACKUP INCREMENTAL LEVEL 0 CUMULATIVE DATABASE;
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
Todas las copias de seguridad son incrementales, sin ninguna opción para elegir el tipo incremental.
Restablece la base de datos a un momento específico 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
Registros de archivo de la base de datos de copia de seguridad BACKUP ARCHIVELOG ALL; No compatible.

Instancias en espera para la implementación de recuperación ante desastres y operaciones de solo lectura

Active Data Guard de Oracle permite que una instancia en espera funcione como extremo de solo lectura mientras que los datos nuevos se siguen aplicando a los registros de rehacer y de archivo. También puedes usar Oracle GoldenGate a fin de habilitar una instancia adicional para fines de lectura, mientras que las modificaciones de datos se aplican en tiempo real y sirven como solución de captura de datos modificados (CDC).

Cloud SQL para PostgreSQL usa una instancia en espera a fin de tener alta disponibilidad. Esta instancia se mantiene sincronizada con la instancia principal a través de la replicación a nivel de disco. A diferencia de Active Data Guard, no está abierto para operaciones de lectura o escritura. Cuando la instancia principal falla o deja de responder durante 60 segundos aproximadamente, se conmuta por error de forma automática a la instancia en espera. Luego de unos segundos, las funciones se intercambian y el nuevo nodo principal toma el control.

Cloud SQL para PostgreSQL también ofrece réplicas de lectura para escalar las solicitudes de lectura. Están diseñadas a fin de descargar lecturas de la instancia principal y no funcionan como instancia en espera para la recuperación ante desastres. A diferencia de la instancia en espera, las réplicas de lectura se mantienen sincronizadas con la instancia principal de forma asíncrona. Pueden estar en una zona o región diferente a la principal. Puedes crear una réplica de lectura con la consola de Google Cloud o la CLI de gcloud. Ten en cuenta que algunas operaciones requieren que se reinicie la instancia (por ejemplo, agregar alta disponibilidad a una instancia principal existente).

Registro y supervisión

El archivo de registro de alertas de Oracle es la fuente principal que permite identificar los eventos generales del sistema y los eventos de errores para comprender cualquier ciclo de vida de la instancia de base de datos de Oracle (en especial, con el fin de solucionar los eventos de fallas y de errores).

En el registro de alertas de Oracle, se muestra información sobre lo siguiente:

  • Errores y advertencias de la instancia de base de datos de Oracle (ORA- + número de error)
  • Eventos de inicio y cierre de la instancia de base de datos de Oracle
  • Problemas relacionados con la red y la conexión
  • Eventos de cambios de registros de rehacer de la base de datos
  • Los archivos de registro de Oracle pueden mencionarse con un vínculo para obtener detalles adicionales sobre un evento de base de datos específico

Oracle proporciona archivos de registro exclusivos de diferentes servicios, como LISTENER, ASM y Enterprise Manager (OEM), que no tienen componentes equivalentes en Cloud SQL para PostgreSQL.

Visualiza los registros de operaciones de Cloud SQL para PostgreSQL

Cloud Logging es la plataforma principal para ver todas las entradas de registro en postgres.log (el equivalente a alert.log en Oracle). Puedes filtrar por el nivel del evento de registro (por ejemplo, crítico, error o advertencia). También se encuentra disponible el filtrado por período y por texto libre.

Ver registros la consola

Supervisión de instancias de base de datos de Cloud SQL para PostgreSQL

Los paneles de supervisión de la IU principal de Oracle son parte de los productos Grid/Cloud Control y OEM (por ejemplo, gráficos de actividad principal) y son útiles para la supervisión de instancias de base de datos en tiempo real a nivel de la sesión o de la instrucción de SQL. Cloud SQL para PostgreSQL proporciona capacidades de supervisión similares con la consola de Google Cloud. Puedes ver información resumida sobre las instancias de bases de datos de Cloud SQL para PostgreSQL con varias métricas de supervisión, como uso de CPU, uso de almacenamiento, uso de memoria, operaciones de lectura y escritura, bytes de entrada y salida, conexiones activas y mucho más.

Cloud Logging admite métricas adicionales de supervisión destinadas a Cloud SQL para PostgreSQL. En la siguiente captura de pantalla, se muestra un gráfico de consultas de Cloud SQL para PostgreSQL durante las últimas 12 horas.

Gráfico de consultas de las últimas 12 horas

Réplica de lectura de Cloud SQL para PostgreSQL

Puedes supervisar réplicas de lectura de la misma manera en que supervisas la instancia principal, mediante las métricas de supervisión de la consola de Google Cloud (como se describió antes). Además, hay una métrica de supervisión dedicada para supervisar la demora de replicación, que define el retraso entre la instancia principal y la instancia de réplica de lectura en segundos (se puede supervisar desde la pestaña de descripción general de la instancia de réplica de lectura en la consola de Google Cloud).

Puedes usar la CLI de gcloud para recuperar el estado de replicación:

gcloud sql instances describe REPLICA_NAME

También puedes realizar la supervisión de la replicación mediante comandos desde un cliente PostgreSQL, que proporciona el estado de las bases de datos principales y en espera.

Puedes usar la siguiente instrucción de SQL para verificar el estado de la réplica de lectura:

postgres=> select * from pg_stat_replication;

Supervisión de Cloud SQL para PostgreSQL

En esta sección, se describen los métodos básicos de supervisión de Cloud SQL para PostgreSQL que se consideran tareas de rutina que realiza un administrador de base de datos (DBA), como Oracle o Cloud SQL para PostgreSQL.

Supervisión de la sesión

La supervisión de la sesión de Oracle se lleva a cabo mediante una consulta a las vistas de rendimiento dinámicas conocidas como vistas “V$”. Las vistas V$SESSION y V$PROCESS suelen usarse para obtener estadísticas en tiempo real sobre la actividad actual de la base de datos, mediante instrucciones de SQL. Puedes supervisar la actividad de la sesión si consultas la vista dinámica pg_stat_activity:

postgres=> select * from pg_stat_activity;

Supervisión de transacciones extensas

Puedes identificar las consultas de larga duración si aplicas los filtros adecuados en las columnas como query_start y state en la vista dinámica pg_stat_activity.

Supervisión de bloqueo

Puedes supervisar los bloqueos de la base de datos con la vista dinámica pg_locks, que proporciona información en tiempo real sobre los casos de bloqueo que podrían causar problemas de rendimiento.

¿Qué sigue?