Aprovisione OCI Database with PostgreSQL y migre desde entornos locales con un tiempo de inactividad mínimo mediante OCI GoldenGate
Introducción
Oracle Cloud Infrastructure Database con PostgreSQL (OCI Database with PostgreSQL) es un servicio compatible con PostgreSQL totalmente gestionado que proporciona un rendimiento 3 veces mayor a través del almacenamiento optimizado para bases de datos, medio costo en comparación con Amazon Web Service (AWS), proporciona copias de seguridad automatizadas, alta disponibilidad, mantenimiento programado, escala de almacenamiento dinámica, escala vertical, etc.
Ejemplo: continuidad de negocio
El servicio OCI Database with PostgreSQL ofrece un acuerdo de nivel de servicio (SLA) de tiempo de actividad del 99,99 %, un objetivo de tiempo de recuperación (RTO) de menos de 2 minutos para sistemas de base de datos de varios nodos y un objetivo de punto de recuperación (RPO) de 0 sin pérdida de datos. Para sistemas de base de datos de nodo único en regiones con dominios de disponibilidad (AD) únicos, el servicio ofrece un SLA de tiempo de actividad del 99,9 %, un RTO de menos de 20 minutos y un RPO de 0.
OCI Database with PostgreSQL aprovecha OCI Block Volumes para almacenar datos de usuario. Por lo tanto, se aplican las mismas garantías de durabilidad, seguridad y rendimiento. Para obtener más información, consulte Visión general de OCI Database with PostgreSQL y Primeros principios: optimización de PostgreSQL para la nube.
Este tutorial se centra en la migración de una base de datos PostgreSQL local a OCI Database with PostgreSQL mediante OCI GoldenGate con un tiempo de inactividad mínimo.
Detalles de Entorno:
- Nombre de usuario de la consola GoldenGate de OCI:
oggadmin
. - Versión de OCI GoldenGate:
23ai
. - Nombre de administrador de OCI Database with PostgreSQL:
admin
.
Origen local | OCI de destino | |
---|---|---|
Nombre de la Base de Datos | product_inventory | base de datos de destino |
Usuario | gestor de pedidos | admin |
Esquema | data_analyze | data_analyze |
Versión de la Base de Datos | 15,12 | 15,6 |
Objetivos
-
Crear OCI Database with PostgreSQL.
-
Aprovisione el despliegue de OCI GoldenGate.
-
Cree una base de datos local y una conexión a la base de datos de OCI en el despliegue y asigne conexiones.
-
Preparar el servidor y la base de datos de la base de datos origen.
-
Crear extracción de carga inicial.
-
Realice una copia de seguridad de los metadatos de la base de datos origen mediante la utilidad
pg_dump
. -
Importe metadatos a OCI Database with PostgreSQL.
-
Cree el Replicat de carga inicial mediante el archivo de pista.
-
Permite crear una extracción de captura de datos en línea o de cambio (CDC) que se modifica al número de secuencia de log (LSN) inicial para la captura.
-
Cree un Replicat en línea que proporcione el archivo de pista de extracción de CDC.
Tarea 1: Aprovisionamiento de OCI Database with PostgreSQL Database System
En esta tarea se explica cómo crear un sistema de base de datos y se necesitan las siguientes políticas antes de realizar el aprovisionamiento. Para obtener más información, consulte Gestión de un Sistema de Base de Datos.
-
Agregue las siguientes políticas de Oracle Cloud Infrastructure Identity and Access Management (IAM).
Allow group <postgresql-admin-group> to read compartments in tenancy Allow group <postgresql-admin-group> to manage postgres-db-systems in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to manage postgres-backups in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read postgres-work-requests in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to manage postgres-configuration in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to manage virtual-network-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read secret-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read vaults in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read metrics in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to use tag-namespaces in tenancy
-
Cree o seleccione un almacén para la contraseña del administrador de la base de datos. Para obtener más información, consulte Gestión de almacenes.
-
Cree una clave para la contraseña de la base de datos. Para obtener más información, consulte Gestión de claves.
-
Cree un secreto para la contraseña de la base de datos. Para obtener más información, consulte Gestión de secretos de almacén.
-
Conéctese a la consola de OCI, vaya a Base de datos, PostgreSQL, Sistemas de base de datos, Crear nuevo sistema de base de datos y haga clic en Siguiente.
-
Seleccione Configuración de hardware.
-
Seleccione Red virtual en la nube y Subred e introduzca las credenciales de administrador del sistema de base de datos. En este ejemplo, Username será admin.
Una vez finalizada la creación, el sistema de base de datos muestra el estado Activo.
-
Ejecute el siguiente comando para verificar la conexión a OCI Database with PostgreSQL desde el nodo de cálculo.
-bash-4.2$ psql "sslmode=verify-full sslrootcert=c.pub host=<OCI DB server ip address> user=admin dbname=postgres" Password for user admin: psql (15.12, server 15.6) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off) Type "help" for help. postgres=>
Tarea 2: Creación de un Despliegue GoldenGate de OCI para Migración
-
Vaya a la consola de OCI, vaya a Oracle Database, GoldenGate, Despliegues y haga clic en Crear despliegue.
-
Introduzca la información necesaria especificada en las siguientes imágenes y seleccione PostgreSQL como Select a Technology.
-
En Configurar el despliegue, utilice
oggadmin
como Nombre de usuario para conectarse a la consola GoldenGate de OCI como administrador. -
Haga clic en Crear para iniciar la creación y el despliegue. Una vez que se haya completado correctamente, se mostrará el estado Activo.
Tarea 3: Creación de conexiones de base de datos locales, conexiones de base de datos de OCI en el despliegue y asignación de conexiones
OCI GoldenGate necesita la conexión de la base de datos de origen y de destino y asigna ambas conexiones al despliegue.
-
Cree una conexión a la base del origen.
-
Haga clic en el nombre del despliegue (
PG_Mig_deployment
), seleccione Conexiones y haga clic en Crear conexión. Introduzca la información necesaria como se muestra en las siguientes imágenes. -
Select Type as PostgreSQL Server, Security Protocol as Plain and click Create.
-
-
Cree una conexión a la base datos destino.
-
Haga clic en el nombre del despliegue, seleccione Conexiones y haga clic en Crear conexión. Introduzca la información necesaria como se muestra en las siguientes imágenes.
-
Seleccione Tipo como OCI PostgreSQL.
-
Seleccione Protocolo de seguridad como TLS y Modo SSL como Requerir.
-
-
Asigne las conexiones a la base de datos al despliegue.
-
Vaya a Despliegues, haga clic en el nombre del despliegue (
PG_Mig_deployment
), seleccione Asignar conexiones y haga clic en Asignar conexión. -
Introduzca la información necesaria como se muestra en las siguientes imágenes.
Verá el estado Activo después de que finalice la asignación de conexión.
-
Tarea 4: Preparación del servidor de base de datos de origen y la base de datos
-
Instale el paquete
postgresql15-contrib
.OCI GoldenGate necesita el paquete
postgresql14-contrib
en el servidor de base de datos de origen para extraerlo de la base de datos del servidor PostgreSQL. El paquete se puede instalar mediante el comandosudo yum install postgresql15-contrib
(la versión de la base de datos de origen es 15).Nota: Se recomienda que la versión de las bibliotecas de cliente coincida con la versión de la base de datos PostgreSQL. No se admiten las versiones de cliente inferiores a 10.
-
Preparar la creación de usuarios de base de datos en la base de datos origen y los privilegios necesarios.
product_inventory=# create user ggreplication with password 'abc1234'; ERROR: role "ggreplication" already exists product_inventory=# product_inventory=# select current_database(); current_database ------------------- product_inventory (1 row) product_inventory=# GRANT CONNECT ON DATABASE product_inventory TO ggreplication; GRANT product_inventory=# ALTER USER ggreplication WITH REPLICATION; ALTER ROLE product_inventory=# ALTER USER ggreplication WITH SUPERUSER; ALTER ROLE product_inventory=# GRANT USAGE ON SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT USAGE ON SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT CREATE ON DATABASE product_inventory TO ggreplication; GRANT product_inventory=# GRANT CREATE, USAGE ON SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT CREATE, USAGE ON SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA data_analyze TO ggreplication; GRANT product_inventory=#
Para obtener más información sobre la finalidad específica de cada privilegio, consulte Prepare Database Users and Privileges for PostgreSQL.
-
A continuación se muestran los parámetros del archivo de configuración de la base de datos PostgreSQL. La ubicación del archivo de configuración es
$PGDATA/postgresql.conf
.wal_level = logical **# set to logical for Capture** max_replication_slots = 1 **# max number of replication and one slot for Extract/Client** max_wal_senders = 1 **# one sender per max repl slot** track_commit_timestamp = on **# optional, correlates tx commit time** with begin tx log record (useful for # timestamp- based positioning)
Nota:
- Después de realizar cualquiera de los cambios anteriores, reinicie la base de datos.
- La replicación de OCI GoldenGate soporta los tipos de dato PostgreSQL y la limitación de los tipos de dato soportados, los objetos y las operaciones soportados se puede verificar en la documentación. Para obtener más información, consulte Preparar bases de datos.
Tarea 5: Crear extracción de carga inicial
Necesitamos crear un Extract de carga inicial y esto proporcionará el LSN en la sección de informe de Extract GoldenGate de OCI.
-
Vaya a la consola de OCI, vaya a Base de datos, GoldenGate, Despliegues y haga clic en el nombre de despliegue creado en la tarea 2.
-
Haga clic en Iniciar consola e introduzca las credenciales de inicio de sesión.
-
Vaya a Conexiones de base de datos y debe mostrar el origen asignado y la base de datos de OCI Database with PostgreSQL y verificar la comprobación de conectividad.
La conexión correcta es buena para iniciar la carga inicial en esta etapa.
-
Vaya a la consola GoldenGate de OCI, vaya a Extraer y haga clic en +.
Una vez que se haya parado la extracción de carga inicial, verifique los archivos de informe GoldenGate de OCI y observe los detalles de LSN y manténgalos a mano para utilizarlos en la tarea 9.
Tarea 6: Copia de seguridad de los metadatos de la base de datos de origen mediante el comando pg_dump
El comando pg_dump
se utiliza solo para volcar los metadatos product_inventory
de la base de datos de origen.
pg_dump -h localhost -U ggreplication -d product_inventory -F c -v -s --file=/tmp/exp_source_db.dump
Tarea 7: Importación de metadatos a OCI Database with PostgreSQL
Utilice el binario pg_restore para importar a OCI Database with PostgreSQL de destino; aquí, el nombre de la base de datos de OCI es targetdb
.
Ejecute el comando de restauración desde el nodo de OCI Compute en el que hemos ejecutado correctamente el comando de conexión en la tarea 1.8.
pg_restore -h <OCI IP address> -U admin -d targetdb -v exp_source_db.dump
postgres=> \c targetdb
psql (15.12, server 15.6)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off)
You are now connected to database "targetdb" as user "admin".
targetdb=> \dn
List of schemas
Name | Owner
--------------+-------------------
data_analyze | admin
ordermanager | admin
public | pg_database_owner
(3 rows)
Nota: Utilice la consulta
select table_name,table_schema from information_schema.tables where table_type='BASE TABLE' and table_schema in ('data_analyze','ordermanager') order by table_schema,table_name;
para verificar los nombres de tabla después de la importación de metadatos en el destino.
Tarea 8: Creación de la replicación de carga inicial mediante el archivo de pista
-
Vaya a la consola GoldenGate de OCI, vaya a Replicats y haga clic en + para crear Replicat.
-
Haga clic en Crear y ejecutar para iniciar la carga inicial Replicar, una vez que haya finalizado, verifique los recuentos de filas de la tabla.
-
Vaya a Reports y verifique la carga inicial de informes de replicación. Verificación de los pocos recuentos de filas de la tabla en ambas bases de datos.
Tarea 9: Creación de una modificación de extracción de CDC para iniciar LSN para captura
El extracto de CDC es un extracto en línea que se utiliza para capturar los cambios en curso en la base de datos existente y el extracto de CDC comienza a capturar el número LSN recopilado.
-
Vaya a la consola GoldenGate de OCI, vaya a Extractos, haga clic en + e introduzca la información necesaria como se muestra en las siguientes imágenes.
-
Una vez que se haya registrado y creado el CDC, haga clic en Start with Options para indicar la lectura del LSN específico que se recopila en la tarea 5.
Podemos ver un retraso de cero segundos en el extracto de CDC después de algún tiempo.
Tarea 10: Crear replicación en línea dando archivo de pista de extracción de CDC
-
Vaya a la consola GoldenGate de OCI, vaya a Replicats, haga clic en + e introduzca la información necesaria como se muestra en las siguientes imágenes.
-
Haga clic en Crear y ejecutar después de modificar el comando
MAP
.Podemos ver un retraso de cero segundos en Online Replicat después de algún tiempo.
Verificación
Ejecute las siguientes consultas para insertar en la tabla de origen que data_analyze.table3
replica en la tabla data_analyze.table3
de la base de datos de destino.
Recuento y datos de la tabla de verificación lateral de destino.
Enlaces relacionados
-
Preparación de Usuarios y Privilegios de Base de Datos para PostgreSQL
-
Instanciación precisa entre entornos PostgreSQL mediante pg_dump
Confirmación
- Autor: Sivakrishna Burle (ingeniero sénior en la nube, servicios en la nube de Oracle para Norteamérica - NACIE)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Provision OCI Database with PostgreSQL and Migrate from On-Premises with Minimum Downtime using OCI GoldenGate
G39911-02
Copyright ©2025, Oracle and/or its affiliates.