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:
- Migra usuarios de Oracle a Cloud SQL para PostgreSQL: terminología y funcionalidad.
- Migra usuarios de Oracle a Cloud SQL para PostgreSQL: tipos de datos, usuarios y tablas.
- Migra usuarios de Oracle a Cloud SQL para PostgreSQL: consultas, procedimientos almacenados, funciones y activadores.
- Migra usuarios de Oracle a Cloud SQL para PostgreSQL: seguridad, operaciones, supervisión y registro (este documento).
- Migra usuarios y esquemas de base de datos de Oracle a Cloud SQL para PostgreSQL.
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 para 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 usando el Estándar de encriptación avanzada de 256 bits (AES-256) o uno superior. Estas claves de datos se encriptan a sí mismas con una clave principal almacenada en un almacén de claves seguro y cambian con regularidad. 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 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.
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 usando 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 el control de acceso a las instancias.
Cloud SQL para PostgreSQL se integra en 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 la sección Control de acceso a proyectos para obtener más información.
Operaciones
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.
Importa y exporta
El método principal de Oracle para realizar operaciones lógicas de importación y exportación es la
utilidad de volcado de datos,
usando los comandos EXPDP/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 para 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 sentencias 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 sentencias
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
estos respaldos 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 la manera de usar la gcloud CLI a fin de interactuar con la instancia de Cloud SQL y Cloud Storage para aplicar operaciones de importación y exportación.
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, sin importar si tienen habilitadas las copias de seguridad automáticas.
Las copias de seguridad a pedido no se borran automáticamente 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 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 para 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 automática habilitada.
Para obtener más información para 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
|
gcloud sql backups list --instance INSTANCE_NAME
|
| Diferencial incremental | BACKUP INCREMENTAL LEVEL 0 DATABASE;
|
Todas las copias de seguridad son incrementales y no existe la opción de elegir el tipo de incremento. |
| Acumulativo incremental | BACKUP INCREMENTAL LEVEL 0 CUMULATIVE DATABASE;
|
Todas las copias de seguridad son incrementales y no existe la opción de elegir el tipo de incremento. |
| Restablece la base de datos a un momento específico | RUN
|
gcloud sql instances clone SOURCE_INSTANCE_NAME NEW_INSTANCE_NAME \
|
| 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 para habilitar una instancia adicional para 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 para 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, los roles se intercambian y la nueva instancia 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 para 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 deGoogle Cloud o la gcloud CLI. 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.
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 sentencia de SQL. Cloud SQL para PostgreSQL proporciona capacidades de supervisión similares con la consola deGoogle 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 el uso de CPU, uso del 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 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.
Supervisión de 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, usando 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 el retraso de replicación, que define el retraso entre la instancia principal y la instancia de réplica de lectura en bytes (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 gcloud CLI para recuperar el estado de replicación:
gcloud sql instances describe REPLICA_NAME
También puedes realizar la supervisión de la replicación con comandos desde un cliente PostgreSQL, que proporciona el estado de las bases de datos principales y en espera.
Puedes usar la siguiente sentencia 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 consultando 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 usando sentencias de SQL. Puedes supervisar la actividad de la sesión consultando 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 aplicando 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?
- Obtén más información sobre las cuentas de usuario de Cloud SQL para PostgreSQL.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta el Cloud Architecture Center.