Configura tu base de datos de PostgreSQL de origen para migraciones continuas

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:

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:

  1. 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 template0 y template1.
  2. Asegúrate de que tu instancia de origen incluya la base de datos postgres predeterminada. Si esta base de datos no existe, créala antes de configurar la migración.
  3. 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();
  4. 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 usas pg_cron en tu base de datos de origen, vuelve a instalarlo y configurarlo en la instancia de destino después de ascender la migración.

  5. Crea una cuenta de usuario de migración dedicada en tu instancia de origen y otórgale los privilegios necesarios:
    1. 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;
    2. Otorga a la cuenta de usuario de migración los permisos necesarios para la base de datos predeterminada de postgres y 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 con pg_):
      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";
  6. Instala la extensión pglogical en cada base de datos que quieras migrar, excepto template0 y template1:
    • 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;
  7. 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 UPDATE y DELETE durante la fase de captura de datos modificados (CDC):
    • Las tablas con una clave primaria replican todas las operaciones INSERT, UPDATE y DELETE automá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 INSERT posteriores durante la fase de CDC. Debes migrar las declaraciones UPDATE y DELETE de 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 UPDATE y DELETE, 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 IDENTITY para migrar tablas sin claves primarias. Para obtener más información, consulta la guía Usa migraciones de inicio rápido.

  8. 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.
  9. Instala el paquete pglogical y configura los parámetros de WAL y replicación en tu servidor de PostgreSQL:
    1. Instala el paquete pglogical en 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.
    2. Conéctate a tu instancia de PostgreSQL con una cuenta de administrador y configura los siguientes parámetros:
      1. Configura shared_preload_libraries para que incluya 'pglogical':
        ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
      2. Establece wal_level como 'logical':
        ALTER SYSTEM SET wal_level = 'logical';

        Consulta wal_level en la documentación de PostgreSQL.

      3. Establece wal_sender_timeout como 0:
        ALTER SYSTEM SET wal_sender_timeout = 0;

        El valor 0 inhabilita el mecanismo de tiempo de espera que finaliza las conexiones de replicación inactivas. Consulta wal_sender_timeout.

      4. Establece max_replication_slots en, 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.

      5. Establece max_wal_senders en, al menos, el valor de max_replication_slots más la cantidad de remitentes que ya se usaron en tu instancia:

        Por ejemplo, si el parámetro max_replication_slots se establece en 10 y 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.

      6. Establece max_worker_processes en, 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.

  10. 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:

  1. 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, template1 y la base de datos interna de AWS rdsadmin.
  2. Asegúrate de que tu instancia de origen incluya la base de datos postgres predeterminada. Si esta base de datos no existe, créala antes de configurar la migración.
  3. Configura las reglas de entrada del grupo de seguridad de la VPC de Amazon RDS. Permite conexiones TCP entrantes en el puerto 5432 desde 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.
  4. 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 usas pg_cron en tu base de datos de origen, vuelve a instalarlo y configurarlo en la instancia de destino después de ascender la migración.

  5. Crea una cuenta de usuario de migración dedicada en tu instancia de origen y otórgale los privilegios necesarios:
    1. Conéctate a la instancia de origen con una cuenta de administrador, crea el usuario y otorga el rol rds_replication administrado por AWS:
      CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD';
      GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
    2. Otorga a la cuenta de usuario de migración los permisos necesarios para la base de datos predeterminada de postgres y 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 con pg_):
      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";
  6. Instala la extensión pglogical en cada base de datos que quieras migrar, excepto template0, template1 y rdsadmin:
    • 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.

  7. 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 UPDATE y DELETE durante la fase de captura de datos modificados (CDC):
    • Las tablas con una clave primaria replican todas las operaciones INSERT, UPDATE y DELETE automá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 INSERT posteriores durante la fase de CDC. Debes migrar las declaraciones UPDATE y DELETE de 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 UPDATE y DELETE, 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 IDENTITY para migrar tablas sin claves primarias. Para obtener más información, consulta la guía Usa migraciones de inicio rápido.

  8. 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.
  9. Configura un grupo de parámetros de base de datos personalizado y adjúntalo a tu instancia:
    1. 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:
      1. Configura shared_preload_libraries para que incluya pglogical.
      2. Establece rds.logical_replication en 1. Este parámetro habilita el registro de WAL lógico en Amazon RDS. Consulta Replicación lógica para Amazon RDS para PostgreSQL.
      3. Establece wal_sender_timeout en 0. El valor 0 inhabilita el mecanismo de tiempo de espera que finaliza las conexiones de replicación inactivas.
      4. Establece max_replication_slots en, 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.

      5. Establece max_wal_senders en, al menos, el valor de max_replication_slots más la cantidad de remitentes que ya se usaron en tu instancia:

        Por ejemplo, si el parámetro max_replication_slots se establece en 10 y 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.

      6. Establece max_worker_processes en, 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.

    2. 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.
  10. 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:

  1. 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, template1 y la base de datos interna de AWS rdsadmin.
  2. Asegúrate de que tu clúster de origen incluya la base de datos postgres predeterminada. Si esta base de datos no existe, créala antes de configurar la migración.
  3. 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 5432 desde 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.
  4. 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 usas pg_cron en tu base de datos de origen, vuelve a instalarlo y configurarlo en la instancia de destino después de ascender la migración.

  5. Crea una cuenta de usuario de migración dedicada en tu clúster de origen y otórgale los privilegios necesarios:
    1. Conéctate al clúster de origen con una cuenta de administrador, crea el usuario y otorga el rol rds_replication administrado por AWS:
      CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD';
      GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
    2. Otorga a la cuenta de usuario de migración los permisos necesarios para la base de datos predeterminada de postgres y 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 con pg_):
      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";
  6. Instala la extensión pglogical en cada base de datos que quieras migrar, excepto template0, template1 y rdsadmin:
    CREATE EXTENSION IF NOT EXISTS pglogical;
  7. 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 UPDATE y DELETE durante la fase de captura de datos modificados (CDC):
    • Las tablas con una clave primaria replican todas las operaciones INSERT, UPDATE y DELETE automá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 INSERT posteriores durante la fase de CDC. Debes migrar las declaraciones UPDATE y DELETE de 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 UPDATE y DELETE, 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 IDENTITY para migrar tablas sin claves primarias. Para obtener más información, consulta la guía Usa migraciones de inicio rápido.

  8. Configura un grupo de parámetros de clúster de base de datos personalizado y adjúntalo a tu clúster:
    1. Crea un grupo de parámetros de clúster de base de datos personalizado y configura los siguientes parámetros:
      1. Configura shared_preload_libraries para que incluya pglogical.
      2. Establece rds.logical_replication en 1. Este parámetro habilita el registro de WAL lógico.
      3. Establece wal_sender_timeout en 0. El valor 0 inhabilita el mecanismo de tiempo de espera que finaliza las conexiones de replicación inactivas.
      4. Establece max_replication_slots en, 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.

      5. Establece max_wal_senders en, al menos, el valor de max_replication_slots más la cantidad de remitentes que ya se usaron en tu instancia:

        Por ejemplo, si el parámetro max_replication_slots se establece en 10 y 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.

      6. Establece max_worker_processes en, 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.

    2. Adjunta el grupo de parámetros del clúster de la base de datos al clúster de la base de datos de Aurora.
  9. 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:

  1. 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, template0 y template1.
  2. Asegúrate de que tu instancia de origen incluya la base de datos postgres predeterminada. Si esta base de datos no existe, créala antes de configurar la migración.
  3. Configura el firewall de Azure y los parámetros de configuración de SSL/TLS:
    1. En la configuración de red de Azure, agrega reglas de firewall que permitan conexiones TCP entrantes en el puerto 5432 desde 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.
    2. 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 de require_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_transport se establece en on, selecciona Básico, TLS o mTLS.
      • Si require_secure_transport se establece en off, selecciona Ninguno.
  4. 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 usas pg_cron en tu base de datos de origen, vuelve a instalarla y configurarla en la instancia de destino después de ascender la migración.

  5. Crea una cuenta de usuario de migración dedicada en tu instancia de origen y otórgale los privilegios necesarios:
    1. 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;
    2. Otorga a la cuenta de usuario de migración los permisos necesarios para la base de datos predeterminada de postgres y 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 con pg_):
      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";
  6. Instala la extensión pglogical en cada base de datos que quieras migrar, excepto azure_maintenance, azure_sys, template0 y template1:
    • 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;
  7. 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 UPDATE y DELETE durante la fase de captura de datos modificados (CDC):
    • Las tablas con una clave primaria replican todas las operaciones INSERT, UPDATE y DELETE automá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 INSERT posteriores durante la fase de CDC. Debes migrar las declaraciones UPDATE y DELETE de 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 UPDATE y DELETE, 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 IDENTITY para migrar tablas sin claves primarias. Para obtener más información, consulta la guía Usa migraciones de inicio rápido.

  8. 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.
  9. 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.
    1. Configura shared_preload_libraries para que incluya pglogical.
    2. Configura azure.extensions para que incluya pglogical.
    3. Establece wal_level en logical.
    4. Establece wal_sender_timeout en 0. El valor 0 inhabilita el mecanismo de tiempo de espera que finaliza las conexiones de replicación inactivas.
    5. Establece max_replication_slots en, 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.

    6. Establece max_wal_senders en, al menos, el valor de max_replication_slots más la cantidad de remitentes que ya se usaron en tu instancia:

      Por ejemplo, si el parámetro max_replication_slots se establece en 10 y 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.

    7. Establece max_worker_processes en, 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.

  10. 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:

  1. 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 template0 y template1.
  2. Asegúrate de que tu instancia de origen incluya la base de datos postgres predeterminada. Si esta base de datos no existe, créala antes de configurar la migración.
  3. 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.
  4. 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 usas pg_cron en tu base de datos de origen, vuelve a instalarlo y configurarlo en la instancia de destino después de ascender la migración.

  5. Crea una cuenta de usuario de migración dedicada en tu instancia de origen y otórgale los privilegios necesarios:
    1. Sigue los pasos que se indican en la página Crea un usuario de la documentación de Cloud SQL.
    2. Otorga a la cuenta de usuario de migración los permisos necesarios para la base de datos predeterminada de postgres y 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 con pg_):
      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";
  6. Instala la extensión pglogical en cada base de datos que quieras migrar, excepto template0 y template1:
    • 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;
  7. 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 UPDATE y DELETE durante la fase de captura de datos modificados (CDC):
    • Las tablas con una clave primaria replican todas las operaciones INSERT, UPDATE y DELETE automáticamente.
    • Para las tablas que no tienen claves primarias, Database Migration Service migra la instantánea inicial y las sentencias INSERT posteriores durante la fase de CDC. Debes migrar las declaraciones UPDATE y DELETE de 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 UPDATE y DELETE, 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 IDENTITY para migrar tablas sin claves primarias. Para obtener más información, consulta la guía Usa migraciones de inicio rápido.

  8. 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.
  9. Configura las siguientes marcas de base de datos en tu instancia de origen de Cloud SQL:
    1. Establece cloudsql.logical_decoding en on.
    2. Establece cloudsql.enable_pglogical en on.
    3. Establece wal_sender_timeout en 0. El valor 0 inhabilita el mecanismo de tiempo de espera que finaliza las conexiones de replicación inactivas.
    4. Establece max_replication_slots en, 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.

    5. Establece max_wal_senders en, al menos, el valor de max_replication_slots más la cantidad de remitentes que ya se usaron en tu instancia.

      Por ejemplo, si la marca max_replication_slots se establece en 10 y 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.

    6. Establece max_worker_processes en, 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.

  10. Reinicia la instancia de Cloud SQL de origen para que se apliquen los cambios en la marca de base de datos.

¿Qué sigue?