En esta página, se describe cómo configurar tus instancias de base de datos de origen
para migraciones homogéneas estándar de PostgreSQL. Si quieres usar
migraciones de inicio rápido, sigue la guía
Usa migraciones de inicio rápido.
Las migraciones de inicio rápido proporcionan un flujo de migración simplificado que usa
la replicación de pgnative y la conectividad especializada basada en
interfaces de Private Service Connect. Para obtener más información, consulta
Acerca de las migraciones de inicio rápido en la documentación principal de Database Migration Service.
En esta página, se incluyen secciones para cada fuente compatible:
- PostgreSQL autoadministrado (local o en una VM de Compute Engine)
- Amazon RDS para PostgreSQL
- Amazon Aurora para PostgreSQL
- Servidor flexible de Microsoft Azure Database for PostgreSQL
- Cloud SQL para PostgreSQL
Configura una fuente de PostgreSQL autoadministrada
Para configurar una instancia de origen de PostgreSQL autoadministrada (local o alojada en una VM de Compute Engine) para tu proceso de migración, haz lo siguiente:
- En el caso de las fuentes de PostgreSQL autoadministradas, Database Migration Service migra todas las bases de datos de tu instancia de origen,
excepto las bases de datos de plantillas
template0ytemplate1. - Asegúrate de que tu instancia de origen incluya la base de datos
postgrespredeterminada. Si esta base de datos no existe, créala antes de configurar la migración. - Configura la autenticación del cliente de red en tu archivo
pg_hba.conf. Agrega entradas que permitan las conexiones de replicación y el acceso a la base de datos desde la dirección IP de salida de Cloud SQL de destino, el rango CIDR de la VPC o el host de bastión de SSH inverso:# Allow replication connections host replication MIGRATION_USER_ACCOUNT_NAME DESTINATION_IP_OR_CIDR md5 # Allow database access host all MIGRATION_USER_ACCOUNT_NAME DESTINATION_IP_OR_CIDR md5
Vuelve a cargar la configuración de PostgreSQL para aplicar las reglas de
pg_hba.conf:SELECT pg_reload_conf();
- Verifica las extensiones de PostgreSQL instaladas en tus bases de datos de origen.
Database Migration Service no migra
extensiones que no son compatibles con Cloud SQL.
Verifica que los objetos de la base de datos de origen y las consultas de la aplicación no hagan referencia a extensiones no compatibles.
Quita las extensiones y referencias no compatibles de tus bases de datos de origen antes de continuar.
Database Migration Service no migra automáticamente la extensión
pg_cron, pero es compatible con los destinos de Cloud SQL para PostgreSQL. Si usaspg_cronen tu base de datos de origen, vuelve a instalarlo y configurarlo en la instancia de destino después de ascender la migración. - Crea una cuenta de usuario de migración dedicada en tu instancia de origen
y otórgale los privilegios necesarios:
- Conéctate a la instancia de origen con una cuenta de administrador, crea el usuario y asigna el rol de replicación:
CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH REPLICATION;
- Otorga a la cuenta de usuario de migración los permisos necesarios para la
base de datos predeterminada de
postgresy todas las bases de datos que quieras migrar. Ejecuta los siguientes comandos en cada base de datos para cada esquema (excepto el esquema de información y los esquemas que comienzan conpg_):GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Conéctate a la instancia de origen con una cuenta de administrador, crea el usuario y asigna el rol de replicación:
- Instala la extensión
pglogicalen cada base de datos que quieras migrar, exceptotemplate0ytemplate1:- Para la versión 9.4 de PostgreSQL: Ejecuta el siguiente comando:
CREATE EXTENSION IF NOT EXISTS pglogical; CREATE EXTENSION IF NOT EXISTS pglogical_origin;
- Para PostgreSQL 9.5 y versiones posteriores: Ejecuta el siguiente comando:
CREATE EXTENSION IF NOT EXISTS pglogical;
- Para la versión 9.4 de PostgreSQL: Ejecuta el siguiente comando:
- Verifica que tus tablas tengan claves primarias. Para las migraciones continuas,
la replicación lógica de PostgreSQL requiere que las tablas tengan claves primarias para
replicar las operaciones
UPDATEyDELETEdurante la fase de captura de datos modificados (CDC):- Las tablas con una clave primaria replican todas las operaciones
INSERT,UPDATEyDELETEautomáticamente. - En el caso de las tablas que no tienen claves primarias, Database Migration Service solo admite la migración de la instantánea inicial y las sentencias
INSERTposteriores durante la fase de CDC. Debes migrar las declaracionesUPDATEyDELETEde forma manual.Te recomendamos que agregues claves primarias a las tablas que no las tengan antes de iniciar la migración. Para aprender a generar una consulta para enumerar tablas en una base de datos de PostgreSQL sin claves primarias o cómo migrar manualmente las operaciones
UPDATEyDELETE, consulta Depuración y otras herramientas.Como alternativa, puedes intentar usar el flujo de migración de inicio rápido: una situación de migración simplificada en la que puedes usar
REPLICA IDENTITYpara migrar tablas sin claves primarias. Para obtener más información, consulta la guía Usa migraciones de inicio rápido.
- Las tablas con una clave primaria replican todas las operaciones
- Fuentes que ejecutan la versión 9.5 de PostgreSQL y anteriores: La métrica de retraso de replicación no está disponible para las instancias de origen que ejecutan versiones de PostgreSQL anteriores a la 9.6. Si deseas usar esta métrica para hacer un seguimiento del progreso de la migración, consulta Habilita el retraso de replicación.
- Instala el paquete
pglogicaly configura los parámetros de WAL y replicación en tu servidor de PostgreSQL:- Instala el paquete
pglogicalen el sistema operativo host del servidor de base de datos. Para obtener paquetes e instrucciones de instalación para tu distribución, consulta el repositorio de GitHub de pglogical. - Conéctate a tu instancia de PostgreSQL con una cuenta de administrador y configura los siguientes parámetros:
- Configura
shared_preload_librariespara que incluya'pglogical':ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
- Establece
wal_levelcomo'logical':ALTER SYSTEM SET wal_level = 'logical';
Consulta
wal_levelen la documentación de PostgreSQL. - Establece
wal_sender_timeoutcomo0:ALTER SYSTEM SET wal_sender_timeout = 0;
El valor
0inhabilita el mecanismo de tiempo de espera que finaliza las conexiones de replicación inactivas. Consultawal_sender_timeout. - Establece
max_replication_slotsen, al menos, la cantidad de bases de datos que se migrarán multiplicada por la cantidad de trabajos de migración, más las reservas para la sincronización de tablas:Por ejemplo, si hay 5 bases de datos en la instancia de origen y creas 2 trabajos de migración para esa fuente, la cantidad de ranuras de replicación debe ser de al menos 5 * 2 = 10, más la cantidad de ranuras de replicación que ya se usan en la fuente para otras tareas. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, asegúrate de aumentar la cantidad de ranuras de replicación y verificar tu configuración ejecutando la prueba del trabajo de migración cuando crees el trabajo de migración.
ALTER SYSTEM SET max_replication_slots = MAX_REPLICATION_SLOTS;
El valor predeterminado para este parámetro es 10. Consulta
max_replication_slots. - Establece
max_wal_sendersen, al menos, el valor demax_replication_slotsmás la cantidad de remitentes que ya se usaron en tu instancia:Por ejemplo, si el parámetro
max_replication_slotsse establece en10y ya usas 2 remitentes, la cantidad de procesos de remitente WAL que se ejecutan al mismo tiempo sería 10 + 2 = 12. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, asegúrate de aumentar la cantidad de remitentes y verificar tu configuración ejecutando la prueba del trabajo de migración cuando crees el trabajo de migración.ALTER SYSTEM SET max_wal_senders = MAX_WAL_SENDERS;
El valor predeterminado para este parámetro es 10. Consulta
max_wal_senders. - Establece
max_worker_processesen, al menos, la cantidad de bases de datos que se migrarán más los procesos de trabajador existentes en tu instancia. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, ten en cuenta dos procesos de trabajador adicionales por conexión (hasta un máximo de 20 trabajadores):ALTER SYSTEM SET max_worker_processes = MAX_WORKER_PROCESSES;
El valor predeterminado para este parámetro es 8. Consulta
max_worker_processes.
- Configura
- Instala el paquete
- Reinicia el servidor de PostgreSQL para que se apliquen los cambios de configuración.
Configura una fuente de Amazon RDS para PostgreSQL
Para configurar una instancia de origen de Amazon RDS para PostgreSQL para tu proceso de migración, haz lo siguiente:
- En el caso de las fuentes de Amazon RDS para PostgreSQL, Database Migration Service migra todas las bases de datos de tu instancia de origen, excepto las bases de datos de plantilla
template0,template1y la base de datos interna de AWSrdsadmin. - Asegúrate de que tu instancia de origen incluya la base de datos
postgrespredeterminada. Si esta base de datos no existe, créala antes de configurar la migración. - Configura las reglas de entrada del grupo de seguridad de la VPC de Amazon RDS.
Permite conexiones TCP entrantes en el puerto
5432desde la dirección IP de salida de Cloud SQL de destino, el rango CIDR de la VPC o la VM de host de bastión de SSH inversa. - Verifica las extensiones de PostgreSQL instaladas en tus bases de datos de origen.
Database Migration Service no migra
extensiones que no son compatibles con Cloud SQL.
Verifica que los objetos de la base de datos de origen y las consultas de la aplicación no hagan referencia a extensiones no compatibles.
Quita las extensiones y referencias no compatibles de tus bases de datos de origen antes de continuar.
Database Migration Service no migra automáticamente la extensión
pg_cron, pero es compatible con los destinos de Cloud SQL para PostgreSQL. Si usaspg_cronen tu base de datos de origen, vuelve a instalarlo y configurarlo en la instancia de destino después de ascender la migración. - Crea una cuenta de usuario de migración dedicada en tu instancia de origen
y otórgale los privilegios necesarios:
- Conéctate a la instancia de origen con una cuenta de administrador, crea el usuario y otorga el rol
rds_replicationadministrado por AWS:CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
- Otorga a la cuenta de usuario de migración los permisos necesarios para la
base de datos predeterminada de
postgresy todas las bases de datos que quieras migrar. Ejecuta los siguientes comandos en cada base de datos para cada esquema (excepto el esquema de información y los esquemas que comienzan conpg_):GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Conéctate a la instancia de origen con una cuenta de administrador, crea el usuario y otorga el rol
- Instala la extensión
pglogicalen cada base de datos que quieras migrar, exceptotemplate0,template1yrdsadmin:- Para la versión 9.4 de PostgreSQL: Ejecuta el siguiente comando:
CREATE EXTENSION IF NOT EXISTS pglogical; CREATE EXTENSION IF NOT EXISTS pglogical_origin;
- Para PostgreSQL 9.5 y versiones posteriores: Ejecuta el siguiente comando:
CREATE EXTENSION IF NOT EXISTS pglogical;
Para obtener más detalles sobre los requisitos, consulta Usa extensiones de PostgreSQL con Amazon RDS para PostgreSQL en la documentación de AWS.
- Para la versión 9.4 de PostgreSQL: Ejecuta el siguiente comando:
- Verifica que tus tablas tengan claves primarias. Para las migraciones continuas,
la replicación lógica de PostgreSQL requiere que las tablas tengan claves primarias para
replicar las operaciones
UPDATEyDELETEdurante la fase de captura de datos modificados (CDC):- Las tablas con una clave primaria replican todas las operaciones
INSERT,UPDATEyDELETEautomáticamente. - En el caso de las tablas que no tienen claves primarias, Database Migration Service solo admite la migración de la instantánea inicial y las sentencias
INSERTposteriores durante la fase de CDC. Debes migrar las declaracionesUPDATEyDELETEde forma manual.Te recomendamos que agregues claves primarias a las tablas que no las tengan antes de iniciar la migración. Para aprender a generar una consulta para enumerar tablas en una base de datos de PostgreSQL sin claves primarias o cómo migrar manualmente las operaciones
UPDATEyDELETE, consulta Depuración y otras herramientas.Como alternativa, puedes intentar usar el flujo de migración de inicio rápido: una situación de migración simplificada en la que puedes usar
REPLICA IDENTITYpara migrar tablas sin claves primarias. Para obtener más información, consulta la guía Usa migraciones de inicio rápido.
- Las tablas con una clave primaria replican todas las operaciones
- Fuentes que ejecutan la versión 9.5 de PostgreSQL y anteriores: La métrica de retraso de replicación no está disponible para las instancias de origen que ejecutan versiones de PostgreSQL anteriores a la 9.6. Si deseas usar esta métrica para hacer un seguimiento del progreso de la migración, consulta Habilita el retraso de replicación.
- Configura un grupo de parámetros de base de datos personalizado y adjúntalo a tu instancia:
- Crea un grupo de parámetros personalizado (consulta
Trabaja con grupos de parámetros de base de datos en la documentación de AWS) y configura los siguientes parámetros:
- Configura
shared_preload_librariespara que incluyapglogical. - Establece
rds.logical_replicationen1. Este parámetro habilita el registro de WAL lógico en Amazon RDS. Consulta Replicación lógica para Amazon RDS para PostgreSQL. - Establece
wal_sender_timeouten0. El valor0inhabilita el mecanismo de tiempo de espera que finaliza las conexiones de replicación inactivas. - Establece
max_replication_slotsen, al menos, la cantidad de bases de datos que se migrarán multiplicada por la cantidad de trabajos de migración, más las reservas para la sincronización de tablas:Por ejemplo, si hay 5 bases de datos en la instancia de origen y creas 2 trabajos de migración para esa fuente, la cantidad de ranuras de replicación debe ser de al menos 5 * 2 = 10, más la cantidad de ranuras de replicación que ya se usan en la fuente para otras tareas. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, asegúrate de aumentar la cantidad de ranuras de replicación y verificar tu configuración ejecutando la prueba del trabajo de migración cuando crees el trabajo de migración.
El valor predeterminado para este parámetro es 10.
- Establece
max_wal_sendersen, al menos, el valor demax_replication_slotsmás la cantidad de remitentes que ya se usaron en tu instancia:Por ejemplo, si el parámetro
max_replication_slotsse establece en10y ya usas 2 remitentes, la cantidad de procesos de remitente WAL que se ejecutan al mismo tiempo sería 10 + 2 = 12. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, asegúrate de aumentar la cantidad de remitentes y verificar tu configuración ejecutando la prueba del trabajo de migración cuando crees el trabajo de migración.El valor predeterminado para este parámetro es 10.
- Establece
max_worker_processesen, al menos, la cantidad de bases de datos que se migrarán más los procesos de trabajador existentes en tu instancia. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, ten en cuenta dos procesos de trabajador adicionales por conexión (hasta un máximo de 20 trabajadores):El valor predeterminado para este parámetro es 8.
- Configura
- Adjunta el grupo de parámetros a tu instancia de base de datos de RDS. Si creas una instancia nueva, puedes encontrar esta opción en Configuración adicional. De lo contrario, modifica la instancia para adjuntar el grupo de parámetros.
- Crea un grupo de parámetros personalizado (consulta
Trabaja con grupos de parámetros de base de datos en la documentación de AWS) y configura los siguientes parámetros:
- Reinicia la instancia de Amazon RDS para que se apliquen los cambios en el grupo de parámetros.
Configura una fuente de Amazon Aurora para PostgreSQL
Para configurar un clúster de origen de Amazon Aurora PostgreSQL para tu proceso de migración, haz lo siguiente:
- En el caso de las fuentes de Amazon Aurora para PostgreSQL, Database Migration Service migra todas las bases de datos de tu clúster de origen, excepto las bases de datos de plantillas
template0,template1y la base de datos interna de AWSrdsadmin. - Asegúrate de que tu clúster de origen incluya la base de datos
postgrespredeterminada. Si esta base de datos no existe, créala antes de configurar la migración. - Configura las reglas de entrada del grupo de seguridad de la VPC de tu clúster de Amazon Aurora.
Permite conexiones TCP entrantes en el puerto
5432desde la dirección IP de salida de Cloud SQL de destino, el rango CIDR de la VPC o la VM de host de bastión de SSH inversa. - Verifica las extensiones de PostgreSQL instaladas en tus bases de datos de origen.
Database Migration Service no migra
extensiones que no son compatibles con Cloud SQL.
Verifica que los objetos de la base de datos de origen y las consultas de la aplicación no hagan referencia a extensiones no compatibles.
Quita las extensiones y referencias no compatibles de tus bases de datos de origen antes de continuar.
Database Migration Service no migra automáticamente la extensión
pg_cron, pero es compatible con los destinos de Cloud SQL para PostgreSQL. Si usaspg_cronen tu base de datos de origen, vuelve a instalarlo y configurarlo en la instancia de destino después de ascender la migración. - Crea una cuenta de usuario de migración dedicada en tu clúster de origen
y otórgale los privilegios necesarios:
- Conéctate al clúster de origen con una cuenta de administrador, crea el usuario y otorga el rol
rds_replicationadministrado por AWS:CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
- Otorga a la cuenta de usuario de migración los permisos necesarios para la
base de datos predeterminada de
postgresy todas las bases de datos que quieras migrar. Ejecuta los siguientes comandos en cada base de datos para cada esquema (excepto el esquema de información y los esquemas que comienzan conpg_):GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Conéctate al clúster de origen con una cuenta de administrador, crea el usuario y otorga el rol
- Instala la extensión
pglogicalen cada base de datos que quieras migrar, exceptotemplate0,template1yrdsadmin:CREATE EXTENSION IF NOT EXISTS pglogical;
- Verifica que tus tablas tengan claves primarias. Para las migraciones continuas,
la replicación lógica de PostgreSQL requiere que las tablas tengan claves primarias para
replicar las operaciones
UPDATEyDELETEdurante la fase de captura de datos modificados (CDC):- Las tablas con una clave primaria replican todas las operaciones
INSERT,UPDATEyDELETEautomáticamente. - En el caso de las tablas que no tienen claves primarias, Database Migration Service solo admite la migración de la instantánea inicial y las sentencias
INSERTposteriores durante la fase de CDC. Debes migrar las declaracionesUPDATEyDELETEde forma manual.Te recomendamos que agregues claves primarias a las tablas que no las tengan antes de iniciar la migración. Para aprender a generar una consulta para enumerar tablas en una base de datos de PostgreSQL sin claves primarias o cómo migrar manualmente las operaciones
UPDATEyDELETE, consulta Depuración y otras herramientas.Como alternativa, puedes intentar usar el flujo de migración de inicio rápido: una situación de migración simplificada en la que puedes usar
REPLICA IDENTITYpara migrar tablas sin claves primarias. Para obtener más información, consulta la guía Usa migraciones de inicio rápido.
- Las tablas con una clave primaria replican todas las operaciones
- Configura un grupo de parámetros de clúster de base de datos personalizado y adjúntalo a tu clúster:
- Crea un grupo de parámetros de clúster de base de datos personalizado y configura los siguientes parámetros:
- Configura
shared_preload_librariespara que incluyapglogical. - Establece
rds.logical_replicationen1. Este parámetro habilita el registro de WAL lógico. - Establece
wal_sender_timeouten0. El valor0inhabilita el mecanismo de tiempo de espera que finaliza las conexiones de replicación inactivas. - Establece
max_replication_slotsen, al menos, la cantidad de bases de datos que se migrarán multiplicada por la cantidad de trabajos de migración, más las reservas para la sincronización de tablas:Por ejemplo, si hay 5 bases de datos en la instancia de origen y creas 2 trabajos de migración para esa fuente, la cantidad de ranuras de replicación debe ser de al menos 5 * 2 = 10, más la cantidad de ranuras de replicación que ya se usan en la fuente para otras tareas. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, asegúrate de aumentar la cantidad de ranuras de replicación y verificar tu configuración ejecutando la prueba del trabajo de migración cuando crees el trabajo de migración.
El valor predeterminado para este parámetro es 10.
- Establece
max_wal_sendersen, al menos, el valor demax_replication_slotsmás la cantidad de remitentes que ya se usaron en tu instancia:Por ejemplo, si el parámetro
max_replication_slotsse establece en10y ya usas 2 remitentes, la cantidad de procesos de remitente WAL que se ejecutan al mismo tiempo sería 10 + 2 = 12. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, asegúrate de aumentar la cantidad de remitentes y verificar tu configuración ejecutando la prueba del trabajo de migración cuando crees el trabajo de migración.El valor predeterminado para este parámetro es 10.
- Establece
max_worker_processesen, al menos, la cantidad de bases de datos que se migrarán más los procesos de trabajador existentes en tu instancia. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, ten en cuenta dos procesos de trabajador adicionales por conexión (hasta un máximo de 20 trabajadores):El valor predeterminado para este parámetro es 8.
- Configura
- Adjunta el grupo de parámetros del clúster de la base de datos al clúster de la base de datos de Aurora.
- Crea un grupo de parámetros de clúster de base de datos personalizado y configura los siguientes parámetros:
- Reinicia el clúster de la base de datos de Amazon Aurora para que se apliquen los cambios en el grupo de parámetros.
Configura una fuente de servidor flexible de Microsoft Azure Database for PostgreSQL
Para configurar una instancia de origen de servidor flexible de Microsoft Azure Database for PostgreSQL para tu proceso de migración, haz lo siguiente:
- En el caso de las fuentes de Microsoft Azure Database for PostgreSQL Flexible Server, Database Migration Service migra todas las bases de datos de tu instancia de origen, excepto las bases de datos de plantillas y del sistema de Azure:
azure_maintenance,azure_sys,template0ytemplate1. - Asegúrate de que tu instancia de origen incluya la base de datos
postgrespredeterminada. Si esta base de datos no existe, créala antes de configurar la migración. - Configura el firewall de Azure y los parámetros de configuración de SSL/TLS:
- En la configuración de red de Azure, agrega reglas de firewall que permitan conexiones TCP entrantes en el puerto
5432desde la dirección IP saliente de Cloud SQL de destino, el rango CIDR de la VPC o la VM de host de bastión de SSH inversa. - Verifica el valor del parámetro del servidor
require_secure_transport. De forma predeterminada, las bases de datos de Azure requieren encriptación SSL/TLS para las conexiones entrantes. Según el parámetro de configuración derequire_secure_transport, selecciona uno de los siguientes parámetros de configuración de encriptación cuando crees el perfil de conexión de origen:- Si
require_secure_transportse establece enon, selecciona Básico, TLS o mTLS. - Si
require_secure_transportse establece enoff, selecciona Ninguno.
- Si
- En la configuración de red de Azure, agrega reglas de firewall que permitan conexiones TCP entrantes en el puerto
- Verifica las extensiones de PostgreSQL instaladas en tus bases de datos de origen.
Database Migration Service no migra
extensiones que no son compatibles con Cloud SQL.
Verifica que los objetos de la base de datos de origen y las consultas de la aplicación no hagan referencia a extensiones no compatibles.
Quita las extensiones y referencias no compatibles de tus bases de datos de origen antes de continuar.
Database Migration Service no migra automáticamente la extensión
pg_cron, pero es compatible con los destinos de Cloud SQL para PostgreSQL. Si usaspg_cronen tu base de datos de origen, vuelve a instalarla y configurarla en la instancia de destino después de ascender la migración. - Crea una cuenta de usuario de migración dedicada en tu instancia de origen
y otórgale los privilegios necesarios:
- Conéctate a la instancia de origen con una cuenta de administrador, crea el usuario y asigna el rol de replicación:
CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH REPLICATION;
- Otorga a la cuenta de usuario de migración los permisos necesarios para la
base de datos predeterminada de
postgresy todas las bases de datos que quieras migrar. Ejecuta los siguientes comandos en cada base de datos para cada esquema (excepto el esquema de información y los esquemas que comienzan conpg_):GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Conéctate a la instancia de origen con una cuenta de administrador, crea el usuario y asigna el rol de replicación:
- Instala la extensión
pglogicalen cada base de datos que quieras migrar, exceptoazure_maintenance,azure_sys,template0ytemplate1:- Para la versión 9.4 de PostgreSQL: Ejecuta el siguiente comando:
CREATE EXTENSION IF NOT EXISTS pglogical; CREATE EXTENSION IF NOT EXISTS pglogical_origin;
- Para PostgreSQL 9.5 y versiones posteriores: Ejecuta el siguiente comando:
CREATE EXTENSION IF NOT EXISTS pglogical;
- Para la versión 9.4 de PostgreSQL: Ejecuta el siguiente comando:
- Verifica que tus tablas tengan claves primarias. Para las migraciones continuas,
la replicación lógica de PostgreSQL requiere que las tablas tengan claves primarias para
replicar las operaciones
UPDATEyDELETEdurante la fase de captura de datos modificados (CDC):- Las tablas con una clave primaria replican todas las operaciones
INSERT,UPDATEyDELETEautomáticamente. - En el caso de las tablas que no tienen claves primarias, Database Migration Service solo admite la migración de la instantánea inicial y las sentencias
INSERTposteriores durante la fase de CDC. Debes migrar las declaracionesUPDATEyDELETEde forma manual.Te recomendamos que agregues claves primarias a las tablas que no las tengan antes de iniciar la migración. Para aprender a generar una consulta para enumerar tablas en una base de datos de PostgreSQL sin claves primarias o cómo migrar manualmente las operaciones
UPDATEyDELETE, consulta Depuración y otras herramientas.Como alternativa, puedes intentar usar el flujo de migración de inicio rápido: una situación de migración simplificada en la que puedes usar
REPLICA IDENTITYpara migrar tablas sin claves primarias. Para obtener más información, consulta la guía Usa migraciones de inicio rápido.
- Las tablas con una clave primaria replican todas las operaciones
- Fuentes que ejecutan la versión 9.5 de PostgreSQL y anteriores: La métrica de retraso de replicación no está disponible para las instancias de origen que ejecutan versiones de PostgreSQL anteriores a la 9.6. Si deseas usar esta métrica para hacer un seguimiento del progreso de la migración, consulta Habilita el retraso de replicación.
- Configura los siguientes parámetros del servidor en Azure. Para obtener más información,
consulta
Configura parámetros del servidor en Azure Database for PostgreSQL.
- Configura
shared_preload_librariespara que incluyapglogical. - Configura
azure.extensionspara que incluyapglogical. - Establece
wal_levelenlogical. - Establece
wal_sender_timeouten0. El valor0inhabilita el mecanismo de tiempo de espera que finaliza las conexiones de replicación inactivas. - Establece
max_replication_slotsen, al menos, la cantidad de bases de datos que se migrarán multiplicada por la cantidad de trabajos de migración, más las reservas para la sincronización de tablas:Por ejemplo, si hay 5 bases de datos en la instancia de origen y creas 2 trabajos de migración para esa fuente, la cantidad de ranuras de replicación debe ser de al menos 5 * 2 = 10, más la cantidad de ranuras de replicación que ya se usan en la fuente para otras tareas. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, asegúrate de aumentar la cantidad de ranuras de replicación y verificar tu configuración ejecutando la prueba del trabajo de migración cuando crees el trabajo de migración.
El valor predeterminado para este parámetro es 10.
- Establece
max_wal_sendersen, al menos, el valor demax_replication_slotsmás la cantidad de remitentes que ya se usaron en tu instancia:Por ejemplo, si el parámetro
max_replication_slotsse establece en10y ya usas 2 remitentes, la cantidad de procesos de remitente WAL que se ejecutan al mismo tiempo sería 10 + 2 = 12. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, asegúrate de aumentar la cantidad de remitentes y verificar tu configuración ejecutando la prueba del trabajo de migración cuando crees el trabajo de migración.El valor predeterminado para este parámetro es 10.
- Establece
max_worker_processesen, al menos, la cantidad de bases de datos que se migrarán más los procesos de trabajadores existentes en tu instancia. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, ten en cuenta dos procesos de trabajador adicionales por conexión (hasta un máximo de 20 trabajadores):El valor predeterminado para este parámetro es 8.
Para obtener más detalles sobre los parámetros, consulta la lista de todos los parámetros del servidor en Azure Database for PostgreSQL en la documentación de Microsoft.
- Configura
- Reinicia la instancia de servidor flexible de Microsoft Azure Database for PostgreSQL para que se apliquen los cambios en los parámetros del servidor.
Configura una fuente de Cloud SQL para PostgreSQL
Para configurar una instancia de origen de Cloud SQL para PostgreSQL para tu proceso de migración, haz lo siguiente:
- En el caso de las fuentes de Cloud SQL para PostgreSQL, Database Migration Service migra todas las bases de datos de tu instancia de origen,
excepto las bases de datos de plantillas
template0ytemplate1. - Asegúrate de que tu instancia de origen incluya la base de datos
postgrespredeterminada. Si esta base de datos no existe, créala antes de configurar la migración. - Si migras de una instancia de origen de Cloud SQL configurada con una dirección IP privada a una instancia de destino de Cloud SQL que usa un rango de IP que no es RFC 1918, agrega el rango que no es RFC 1918 a las redes autorizadas de tu instancia de origen. Para obtener más información, consulta Configura redes autorizadas.
- Verifica las extensiones de PostgreSQL instaladas en tus bases de datos de origen.
Database Migration Service no migra
extensiones que no son compatibles con Cloud SQL.
Verifica que los objetos de la base de datos de origen y las consultas de la aplicación no
hagan referencia a extensiones no admitidas. Quita las extensiones y referencias no compatibles
de tus bases de datos de origen antes de continuar.
Database Migration Service no migra automáticamente la extensión
pg_cron, pero es compatible con los destinos de Cloud SQL para PostgreSQL. Si usaspg_cronen tu base de datos de origen, vuelve a instalarlo y configurarlo en la instancia de destino después de ascender la migración. - Crea una cuenta de usuario de migración dedicada en tu instancia de origen
y otórgale los privilegios necesarios:
- Sigue los pasos que se indican en la página Crea un usuario de la documentación de Cloud SQL.
- Otorga a la cuenta de usuario de migración los permisos necesarios para la
base de datos predeterminada de
postgresy todas las bases de datos que quieras migrar. Ejecuta los siguientes comandos en cada base de datos para cada esquema (excepto el esquema de información y los esquemas que comienzan conpg_):GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Instala la extensión
pglogicalen cada base de datos que quieras migrar, exceptotemplate0ytemplate1:- Para la versión 9.4 de PostgreSQL: Ejecuta el siguiente comando:
CREATE EXTENSION IF NOT EXISTS pglogical; CREATE EXTENSION IF NOT EXISTS pglogical_origin;
- Para PostgreSQL 9.5 y versiones posteriores: Ejecuta el siguiente comando:
CREATE EXTENSION IF NOT EXISTS pglogical;
- Para la versión 9.4 de PostgreSQL: Ejecuta el siguiente comando:
- Verifica que tus tablas tengan claves primarias. Para las migraciones continuas,
la replicación lógica de PostgreSQL requiere que las tablas tengan claves primarias para
replicar las operaciones
UPDATEyDELETEdurante la fase de captura de datos modificados (CDC):- Las tablas con una clave primaria replican todas las operaciones
INSERT,UPDATEyDELETEautomáticamente. - Para las tablas que no tienen claves primarias, Database Migration Service migra
la instantánea inicial y las sentencias
INSERTposteriores durante la fase de CDC. Debes migrar las declaracionesUPDATEyDELETEde forma manual.Te recomendamos que agregues claves primarias a las tablas que no las tengan antes de iniciar la migración. Para aprender a generar una consulta para enumerar tablas en una base de datos de PostgreSQL sin claves primarias o cómo migrar manualmente las operaciones
UPDATEyDELETE, consulta Depuración y otras herramientas.Como alternativa, puedes intentar usar el flujo de migración de inicio rápido: una situación de migración simplificada en la que puedes usar
REPLICA IDENTITYpara migrar tablas sin claves primarias. Para obtener más información, consulta la guía Usa migraciones de inicio rápido.
- Las tablas con una clave primaria replican todas las operaciones
- Fuentes que ejecutan la versión 9.5 de PostgreSQL y anteriores: La métrica de retraso de replicación no está disponible para las instancias de origen que ejecutan versiones de PostgreSQL anteriores a la 9.6. Si deseas usar esta métrica para hacer un seguimiento del progreso de la migración, consulta Habilita el retraso de replicación.
- Configura las siguientes marcas de base de datos en tu instancia de origen de Cloud SQL:
- Establece
cloudsql.logical_decodingenon. - Establece
cloudsql.enable_pglogicalenon. - Establece
wal_sender_timeouten0. El valor0inhabilita el mecanismo de tiempo de espera que finaliza las conexiones de replicación inactivas. - Establece
max_replication_slotsen, al menos, la cantidad de bases de datos que se migrarán multiplicada por la cantidad de trabajos de migración, más las reservas para la sincronización de tablas.Por ejemplo, si hay 5 bases de datos en la instancia de origen y creas 2 trabajos de migración para esa fuente, la cantidad de ranuras de replicación debe ser de al menos 5 * 2 = 10, más la cantidad de ranuras de replicación que ya se usan en la fuente para otras tareas. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, asegúrate de aumentar la cantidad de ranuras de replicación y verificar tu configuración ejecutando la prueba del trabajo de migración cuando crees el trabajo de migración.
El valor predeterminado de esta marca es 10.
- Establece
max_wal_sendersen, al menos, el valor demax_replication_slotsmás la cantidad de remitentes que ya se usaron en tu instancia.Por ejemplo, si la marca
max_replication_slotsse establece en10y ya usas 2 remitentes, la cantidad de procesos de remitente WAL que se ejecutan al mismo tiempo sería 10 + 2 = 12. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, asegúrate de aumentar la cantidad de remitentes y verificar tu configuración ejecutando la prueba del trabajo de migración cuando crees el trabajo de migración.El valor predeterminado de esta marca es 10.
- Establece
max_worker_processesen, al menos, la cantidad de bases de datos que se migrarán más los procesos de trabajadores existentes en tu instancia. Si planeas usar la configuración de paralelismo de volcado de datos ajustada, ten en cuenta dos procesos de trabajador adicionales por conexión (hasta un máximo de 20 trabajadores).El valor predeterminado de esta marca es 8.
Para obtener más información sobre cómo modificar las marcas, consulta Configura marcas de base de datos en la documentación de Cloud SQL.
- Establece
- Reinicia la instancia de Cloud SQL de origen para que se apliquen los cambios en la marca de base de datos.
¿Qué sigue?
Para obtener guías de migración completas y paso a paso, consulta Comienza a usar las migraciones de Cloud SQL para PostgreSQL.
Para planificar la conectividad de red entre tus instancias de origen y de destino, consulta Descripción general de las herramientas de redes.