Configurar Cloud SQL y el servidor externo para la replicación

En esta página se describe cómo configurar el servidor externo para la replicación en Cloud SQL, crear una instancia de representación de origen en Cloud SQL y replicar los datos en Cloud SQL. Debes seguir todos los pasos de esta página antes de continuar con los pasos de replicación.

Una alternativa a los pasos descritos en esta página es Database Migration Service, que ofrece replicación continua o migración de bases de datos única desde un servidor externo a Cloud SQL.

Antes de empezar

Terminología

  • Servidor externo. El servidor de PostgreSQL externo a Cloud SQL del que quieres replicar datos. También se conoce como base de datos de origen o servidor de base de datos externo. Puede ser otra instancia de Cloud SQL o cualquier otro servidor de bases de datos, como un servidor local, Amazon Relational Database Service (RDS), etc.

  • Instancia de representación de origen. Una simulación de una instancia de Cloud SQL que representa el servidor externo de la réplica de Cloud SQL. Se puede ver en la consola y parece una instancia de Cloud SQL normal, pero no contiene datos, no requiere configuración ni mantenimiento, y no afecta a la facturación. Google Cloud

  • Réplica de Cloud SQL. La instancia de Cloud SQL que replica datos del servidor externo. También se conoce como réplica de lectura principal externa.

  • Cuenta de usuario de replicación. La cuenta de usuario de PostgreSQL del servidor externo con permisos suficientes para permitir la replicación entre el servidor externo y la réplica de Cloud SQL.

  • Importación gestionada. Proceso de importación de datos directamente desde el servidor externo a la réplica de Cloud SQL. En esta situación, Cloud SQL se conecta al servidor externo mediante la cuenta de usuario de replicación y ejecuta el volcado de datos directamente en el servidor externo para importar datos a la réplica de Cloud SQL.

Configurar un Google Cloud proyecto

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud SQL Admin API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Cloud SQL Admin API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Asegúrate de tener los roles Administrador de Cloud SQL, Administrador de Storage y Lector de Compute en tu cuenta de usuario.

    Ir a la página de gestión de identidades y accesos

  9. Instalar el Google Cloud SDK

    Para configurar la replicación, instala Google Cloud el SDK en tu servidor externo. Puede que quieras instalar el SDK en tu servidor externo, a menos que ya esté instalado en otro lugar.

    Configurar el servidor externo para la replicación

    Cloud SQL admite migraciones continuas de bases de datos de origen a bases de datos de destino de Cloud SQL.

    Entre las bases de datos de origen compatibles con PostgreSQL se incluyen las siguientes:

    • PostgreSQL autogestionado (en las instalaciones o en cualquier VM en la nube que controles por completo) 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15, 16, 17 y 18
    • Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15, 16, 17 y 18.
    • Amazon Aurora 10.11+, 11.6+, 12.4+, 13.3+, 14.6+, 15.2+, 16 y 17.
    • Servidor flexible de Microsoft Azure Database for PostgreSQL 11 y versiones posteriores
    • Cloud SQL 9.6, 10, 11, 12, 13, 14, 15, 16, 17 y 18

    Para configurar la fuente, debe configurar tanto la instancia de origen como las bases de datos de origen subyacentes.

    Lista de comprobación de servidores externos

    Si la réplica de Cloud SQL tiene habilitada una dirección IP privada porque la dirección IP privada saliente no es estática, configura el cortafuegos del servidor externo para que permita el intervalo de IP internas asignado al acceso a servicios privados de la red de VPC que la réplica de Cloud SQL usa como red privada.

    El cortafuegos del servidor de la base de datos de origen debe configurarse para permitir todo el intervalo de IPs internas asignado a la conexión de servicio privada de la red de VPC que la instancia de destino de Cloud SQL usa como campo privateNetwork de su configuración de IP.

    Para encontrar el intervalo de IP internas, sigue estos pasos:

    1. En la Google Cloud consola, ve a la página Redes de VPC.

      Ir a la página Redes de VPC

    2. Selecciona la red de VPC que quieras usar.

    3. Haga clic en la pestaña Conexión de servicio privada.

    Configurar la instancia de origen

    Para configurar la instancia de origen, siga estos pasos:

    1. Si tu instancia de origen no incluye la base de datos postgres, créala.
    2. Instala el paquete pglogical en la instancia de origen.
    3. Define los siguientes parámetros según sea necesario.

      1. Si la instancia de PostgreSQL de origen es Amazon RDS, incluya estos parámetros en un nuevo grupo de parámetros y adjunte el grupo de parámetros a la instancia.

        • Si el origen es Cloud SQL, asigna el valor on a las marcas cloudsql.logical_decoding y cloudsql.enable_pglogical.

          Para habilitar marcas en Cloud SQL, consulta Configurar marcas de bases de datos.

        • Define shared_preload_libraries para incluir pglogical con el siguiente comando:

          ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
                
        • Asigna el valor logical a wal_level con el siguiente comando:

              ALTER SYSTEM SET wal_level = 'logical';
              

          Si la instancia de PostgreSQL de origen es Amazon RDS, para habilitar los registros WAL en el nivel logical, define el parámetro rds.logical_replication en 1.

        • Asigna el valor 0 a wal_sender_timeout con el siguiente comando:

          ALTER SYSTEM SET wal_sender_timeout = 0;

          El valor 0 inhabilita el mecanismo de tiempo de espera que se usa para finalizar las conexiones de replicación inactivas.

        • Define max_replication_slots como el número máximo de ranuras de replicación que puede admitir la instancia de origen. Usa el siguiente comando después de sustituir MAX_REPLICATION_SLOTS por el número:

          ALTER SYSTEM SET max_replication_slots = MAX_REPLICATION_SLOTS;

          Cloud SQL requiere un espacio para cada base de datos que se migre. Especifica al menos el número de suscripciones que se espera que se conecten, con algunas reservas para la sincronización de tablas.

          Por ejemplo, si la instancia de origen tiene 5 bases de datos y se crean 2 tareas de migración para el origen, el número de ranuras de replicación debe ser al menos 5 * 2 = 10, además del número de ranuras de replicación que ya utilices.

        • Define max_wal_senders con un valor al menos igual que max_replication_slots, además del número de remitentes que ya se estén usando en tu instancia. Usa el siguiente comando y sustituye MAX_WAL_SENDERS por el número total de procesos de envío de WAL que se ejecutan simultáneamente:

          ALTER SYSTEM SET max_wal_senders = MAX_WAL_SENDERS;

          Por ejemplo, si el parámetro max_replication_slots se define como 10 y ya estás usando dos remitentes, el número de procesos de remitente de WAL que se ejecutan al mismo tiempo sería 10 + 2 = 12.

        • Define max_worker_processes con un valor que sea al menos el número de bases de datos de la instancia de origen, además del número de procesos de trabajador que ya se utilicen en tu instancia. Usa el siguiente comando, sustituyendo MAX_WORKER_PROCESSES por el número total:

          ALTER SYSTEM SET max_worker_processes = MAX_WORKER_PROCESSES;