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 MySQL 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 MySQL 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 (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 (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. Instala 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

    Lista de comprobación de servidores externos

    • Asegúrate de que MySQL 5.7, 8.0 u 8.4 esté instalado en tu servidor externo. Se admiten MySQL Community Edition, Cloud SQL para MySQL, Amazon Aurora, MySQL en Amazon RDS y Microsoft Azure Database for MySQL Flexible Server.

      • Debes usar una versión principal de MySQL en tu réplica de Cloud SQL que sea igual o superior a la versión de MySQL que se ejecute en tu servidor externo.
      • Si MySQL 5.5 está instalado en el servidor externo, no se admite GTID.
    • Asegúrate de que los registros binarios estén habilitados y de que:

    • Anota si tu servidor externo tiene habilitado GTID. Esto afecta a los pasos que debes seguir para configurar la replicación.

    • Anota si tu servidor externo tiene permisos de bloqueo de lectura global. Esto afecta a los pasos que debes seguir para configurar la replicación.

    • 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 ipConfiguration.

      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.

    • Si tu servidor externo contiene cláusulas DEFINER (vistas, eventos, activadores o procedimientos almacenados), es posible que la replicación falle en función del orden en el que se ejecuten estas instrucciones. Consulta más información sobre el DEFINER uso y las posibles soluciones alternativas en Cloud SQL.

    • InnoDB es el único motor de almacenamiento compatible con Cloud SQL. Migrar con MyISAM puede provocar incoherencias en los datos y requiere que se validen. Para obtener más información, consulta el artículo Convertir tablas de MyISAM a InnoDB de la documentación de MySQL.

    Configurar la conservación de registros binarios

    Debes configurar tu servidor externo para que conserve los registros binarios durante al menos 24 horas.

    Comunidad de MySQL

    Si tu servidor externo usa MySQL Community Edition, puedes usar estos comandos de MySQL para actualizar la configuración de retención de registros binarios.

    Cloud SQL para MySQL

    Si tu servidor externo usa Cloud SQL para MySQL, los registros binarios se conservan durante siete días de forma predeterminada. Puedes cambiar este ajuste.

    Amazon RDS y Aurora

    Si tu servidor externo es una instancia de Amazon RDS, puedes usar este comando para actualizar la configuración de conservación de registros binarios:

    call mysql.rds_set_configuration('binlog retention ', HOURS);
    
    Propiedad Descripción
    HORAS Número total de horas de registros binarios que debe conservar la instancia de Amazon RDS.

    Para obtener más información, consulta mysql.rds_set_configuration.

    Microsoft Azure

    El almacenamiento de registros binarios está habilitado de forma predeterminada. Para obtener más información, consulta la documentación de Microsoft.

    1. Asigna a binlog_expire_logs_seconds un periodo lo suficientemente largo como para que se pueda completar la migración de la base de datos.

      Para obtener más información, consulta el artículo Configurar parámetros de servidor en Azure Database for MySQL y el parámetro binlog_expire_logs_seconds en la documentación de Microsoft.

    2. Reinicia el servidor para que los cambios que has realizado surtan efecto.

    Crear una cuenta de usuario de replicación

    En tu servidor externo debe haber una cuenta de usuario de MySQL dedicada a gestionar la replicación en la réplica de Cloud SQL. Esta cuenta de usuario solo debe usarse para gestionar la replicación. En función del método de migración que utilices, es posible que tengas que conceder permisos al usuario más adelante.

    Para añadir una cuenta de usuario de replicación, abre una terminal en el servidor externo e introduce estos comandos de MySQL:

    MySQL

          CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD';
          GRANT SELECT, SHOW VIEW ON *.* TO 'USERNAME'@'HOST';
          FLUSH PRIVILEGES;

    Ejemplo

    CREATE USER 'replicationUser'@'%' IDENTIFIED BY '8*&fwwd';
    GRANT SELECT, SHOW VIEW ON *.* TO 'replicationUser'@'%';
    FLUSH PRIVILEGES;
    
    Propiedad Descripción
    USERNAME La cuenta de usuario de replicación del servidor externo.
    PASSWORD La contraseña de la cuenta de usuario de replicación.
    HOST Define este valor como % para aceptar todas las conexiones de cualquier host. En un paso posterior, se cambia para que solo acepte conexiones de la réplica de Cloud SQL.

    Configurar una instancia de representación de la fuente

    La instancia de representación de origen hace referencia al servidor externo. Solo contiene los datos de la solicitud del servidor externo. Crea los datos de la solicitud y úsalos en un comando curl que cree la instancia de representación de la fuente en Cloud SQL.

    Crear los datos de la solicitud

    Los datos de la solicitud contienen información básica sobre tu servidor externo en formato JSON. Los datos de la solicitud se pueden configurar para una réplica de Cloud SQL en una red pública o privada, y deben contener esta información.

    source.json

        {
          "name": "SOURCE_NAME",
          "region": "REGION",
          "databaseVersion": "DATABASE_VERSION",
          "onPremisesConfiguration": {
            "hostPort": "SOURCE_HOST",
            "username": "USERNAME",
            "password": "PASSWORD",
            "caCertificate": "SOURCE_CERT",
            "clientCertificate": "CLIENT_CERT",
            "clientKey": "CLIENT_KEY",
            "sslOption": "SSL_OPTION"
          }
        }

    Ejemplo de importación gestionada

    // example of source.json for external server that
    // - initiates replication from a Cloud SQL managed import
    // - doesn't use SSL/TLS
    
    {
      "name": "cloudsql-source-instance",
      "region": "us-central1",
      "databaseVersion": "MYSQL_5_7",
      "onPremisesConfiguration": {
        "hostPort": "192.0.2.0:3306",
        "username": "replicationUser",
        "password": "486#@%*@",
        "sslOption": "REQUIRE"
      }
    }
    

    Ejemplo de archivo de volcado

    // example of source.json for external server that
    // - initiates replication from a file
    // - uses SSL/TLS
    
    {
      "name": "cloudsql-source-instance",
      "region": "us-central1",
      "databaseVersion": "MYSQL_5_7",
      "onPremisesConfiguration": {
        "hostPort": "192.0.2.0:"3306",
        "username": "replicationUser",
        "password": "486#@%*@",
        "dumpFilePath": "gs://replica-bucket/source-database.sql.gz",
        "caCertificate": "content of your certificate",
        "clientCertificate": "content of your certificate",
        "clientKey": "content of your client key",
        "sslOption": "REQUIRE"
      }
    }
    

    Ejemplo de importación personalizada

    // example of source.json for external server that
    // - initiates replication from a Cloud SQL custom import
    // - doesn't use SSL/TLS
    
    {
      "name": "cloudsql-source-instance",
      "region": "us-central1",
      "databaseVersion": "MYSQL_5_7",
      "onPremisesConfiguration": {
        "hostPort": "192.0.2.0:3306",
        "username": "replicationUser",
        "password": "486#@%*@",
        "sslOption": "REQUIRE"
      }
    }
    
    Propiedad Descripción
    SOURCE_NAME Nombre de la instancia de representación de origen que se va a crear.
    REGION La región en la que quieres que resida la instancia de representación de origen.
    DATABASE_VERSION La versión de la base de datos que se ejecuta en tu servidor externo. Las opciones son MYSQL_5_7, MYSQL_8_0 o MYSQL_8_4.
    SOURCE HOST La dirección IPv4 y el puerto del servidor externo, o la dirección DNS del servidor externo. Si usas una dirección DNS, puede contener hasta 60 caracteres. Si el servidor externo está alojado en Cloud SQL, el puerto es 3306 .
    USERNAME La cuenta de usuario de replicación del servidor externo.
    PASSWORD La contraseña de la cuenta de usuario de replicación.
    BUCKET El nombre del segmento que contiene el archivo de volcado. Inclúyalo solo si va a configurar la replicación con un archivo de volcado que se encuentre en un segmento de Cloud Storage.
    DUMP_FILE Un archivo del contenedor que contiene los datos del servidor externo.
    CLIENT_CA_CERT El certificado de la AC en el servidor externo. Inclúyalo solo si se usa SSL/TLS en el servidor externo.
    CLIENT_CERT El certificado de cliente del servidor externo. Solo es necesario para la autenticación de cliente y servidor. Inclúyalo solo si se usa SSL/TLS en el servidor externo.
    CLIENT_KEY El archivo de clave privada del certificado de cliente en el servidor externo. Solo es necesario para la autenticación de cliente-servidor. Inclúyalo solo si se usa SSL/TLS en el servidor externo.
    SSL_OPTION

    Indica si se usa el cifrado SSL/TLS para establecer una conexión entre la base de datos de origen de Microsoft Azure y la base de datos de destino de Cloud SQL. Puede especificar los siguientes valores para este parámetro:

    • SSL_OPTION_UNSPECIFIED: la base de datos de destino se conecta a la base de datos de origen sin cifrado.
    • DISABLED: SSL se desactiva cuando la réplica se conecta a la base de datos de origen.
    • REQUIRE: Se requiere SSL para que la réplica se conecte a la base de datos de origen.
    • VERIFY_CA: usa este parámetro para especificar si se usa la autenticación solo del servidor o la autenticación del servidor y del cliente como parte del cifrado SSL/TLS para conectar las bases de datos de origen y de destino.

      Para usar la autenticación solo del servidor, en la variable SOURCE_CERT, debes proporcionar el certificado x509 codificado en PEM de la autoridad de certificación (CA) que firmó el certificado del servidor externo.

      Para usar la autenticación de servidor a cliente, haz los siguientes cambios:

      • SOURCE_CERT: proporciona el certificado de la CA que firmó el certificado del servidor de la base de datos de origen
      • CLIENT_CERT: proporciona el certificado que usa la base de datos de destino para autenticarse en el servidor de la base de datos de origen
      • CLIENT_KEY: proporciona la clave privada asociada al certificado de cliente

    El valor predeterminado de este parámetro es SSL_OPTION_UNSPECIFIED.

    Crear una instancia de representación de origen

    Antes de empezar este paso, crea un archivo JSON que contenga los datos de tu solicitud de origen.

    A continuación, para crear la instancia de representación de origen en Cloud SQL, abre una terminal y ejecuta los siguientes comandos:

    curl

        gcloud auth login
        ACCESS_TOKEN="$(gcloud auth print-access-token)"
        curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
             --header 'Content-Type: application/json' \
             --data @JSON_PATH \
             -X POST \
             https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

    Ejemplo

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @./source.json \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
    
    Propiedad Descripción
    PROJECT_ID El ID de tu proyecto en Google Cloud.
    JSON_PATH Ruta al archivo JSON que contiene los datos de la solicitud del servidor externo.

    Actualizar una instancia de representación de origen

    Si actualiza los datos de la solicitud del servidor externo, puede actualizar la instancia de representación de origen para que use los valores modificados.

    Modificar los datos de la solicitud

    Actualiza los datos de la solicitud para incluir los campos que hayan cambiado. Esto incluye los campos hostPort, username, password, caCertificate, clientCertificate y clientKey. Después de actualizar los datos de la solicitud, úsalos en un comando curl para actualizar la instancia en Cloud SQL.

    En el siguiente ejemplo se muestra cómo actualizar los campos username y password con un nombre de usuario y una contraseña diferentes:

    source.json

        {
          "name": "SOURCE_NAME",
          "region": "REGION",
          "databaseVersion": "DATABASE_VERSION",
          "onPremisesConfiguration": {
            "username": "NEW_USERNAME",
            "password": "NEW_PASSWORD"
          }
        }

    Ejemplo de importación gestionada

    // example of source.json for external server that
    // - initiates replication from a Cloud SQL managed import
    // - doesn't use SSL/TLS
    
    {
      "name": "cloudsql-source-instance",
      "region": "us-central1",
      "databaseVersion": "MYSQL_5_7",
      "onPremisesConfiguration": {
        "username": "newReplicationUser",
        "password": "525#@%*@"
      }
    }
    

    Ejemplo de archivo de volcado

    // example of source.json for external server that
    // - initiates replication from a file
    // - uses SSL/TLS
    
    {
      "name": "cloudsql-source-instance",
      "region": "us-central1",
      "databaseVersion": "MYSQL_5_7",
      "onPremisesConfiguration": {
        "username": "newReplicationUser",
        "password": "486#@%*@"
      }
    }
    

    Ejemplo de importación personalizada

    // example of source.json for external server that
    // - initiates replication from a Cloud SQL custom import
    // - doesn't use SSL/TLS
    
    {
      "name": "cloudsql-source-instance",
      "region": "us-central1",
      "databaseVersion": "MYSQL_5_7",
      "onPremisesConfiguration": {
        "username": "newReplicationUser",
        "password": "486#@%*@"
      }
    }
    
    Propiedad Descripción
    SOURCE_NAME Nombre de la instancia de representación de origen.
    REGION La región en la que se encuentra la instancia de representación de origen.
    DATABASE_VERSION La versión de la base de datos que se ejecuta en tu servidor externo. Las opciones son MYSQL_5_6, MYSQL_5_7, MYSQL_8_0 o MYSQL_8_4.
    NEW_USERNAME La nueva cuenta de usuario de replicación en el servidor externo.
    NEW_PASSWORD La contraseña de la nueva cuenta.

    Modificar una instancia de representación de origen

    Antes de empezar este paso, crea un archivo JSON que contenga los datos de la solicitud modificados.

    A continuación, para modificar la instancia de representación de origen en Cloud SQL, abre una terminal y ejecuta los siguientes comandos:

    curl

        gcloud auth login
        ACCESS_TOKEN="$(gcloud auth print-access-token)"
        curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
             --header 'Content-Type: application/json' \
             --data @JSON_PATH \
             -X PATCH \
             https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/SOURCE_NAME

    Ejemplo

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @./source.json \
         -X PATCH \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/cloudsql-source-instance
    
    Propiedad Descripción
    PROJECT_ID El ID de tu proyecto en Google Cloud.
    JSON_PATH Ruta al archivo JSON que contiene los datos de la solicitud del servidor externo.
    SOURCE_NAME Nombre de la instancia de representación de origen.

    Configurar una réplica de Cloud SQL

    La réplica de Cloud SQL acabará conteniendo los datos del servidor externo. En este paso, creará los datos de la solicitud y los usará en un comando curl que cree la réplica de Cloud SQL en Cloud SQL.

    Crear los datos de la solicitud

    Los datos de la solicitud contienen información básica sobre tu servidor externo y tu réplica de Cloud SQL en formato JSON. Los datos de la solicitud se pueden configurar para una réplica de Cloud SQL en una red pública o privada, y deben contener esta información:

    replica.json

        {
            "settings": {
                "tier": "TIER",
                "dataDiskSizeGb": "DISK_SIZE",
                "ipConfiguration": {
                    "ipv4Enabled": "PUBLIC_IP_STATUS",
                    "privateNetwork": "projects/PROJECT_ID/global/networks/NETWORK_NAME"
                 },
                 "availabilityType": "AVAILABILITY_TYPE"
            },
            "masterInstanceName": "SOURCE_REPRESENTATION_INSTANCE_NAME",
            "region": "SOURCE_REGION",
            "databaseVersion": "DATABASE_VERSION",
            "name": "REPLICA_NAME"
        }

    Ejemplo

        {
            "settings": {
                "tier": "db-custom-4-15360",
                "dataDiskSizeGb": "100"
            },
            "masterInstanceName": "source-instance",
            "region": "us-central1",
            "databaseVersion": "MYSQL_8_0",
            "name": "replica-instance"
        }
    Propiedad Descripción
    TIER El tipo de máquina en el que se alojará tu instancia de réplica. Si no sabes qué tipo de máquina usar, empieza con db-custom-2-7680. Puedes cambiar su tamaño y otros valores admitidos más adelante si es necesario.
    DISK_SIZE Tamaño de almacenamiento de la réplica de Cloud SQL, en GB.
    PUBLIC_IP_STATUS Determina si se ha asignado una dirección IP pública a la instancia. De forma predeterminada, el valor de esta propiedad es true. Para desactivar la asignación de una dirección IP pública a la réplica, asigna el valor false. Si tu proyecto tiene habilitada la constraints/sql.restrictPublicIp política de la organización, para crear la réplica de Cloud SQL, debes asignar el valor false a la propiedad ipv4Enabled. Para obtener más información sobre cómo desactivar la asignación de direcciones IP públicas, consulta Inhabilitar una IP pública.
    PROJECT_ID Si la réplica de Cloud SQL está en una red privada, incluye la propiedad privateNetwork en el archivo replica.json. En PROJECT_ID, especifica el ID de tu proyecto en Google Cloud.
    NETWORK_NAME Nombre de la red privada que se va a usar con la réplica de Cloud SQL.
    AVAILABILITY_TYPE Tipo de disponibilidad de la réplica de Cloud SQL. De forma predeterminada, el valor es ZONAL. Para que la réplica tenga alta disponibilidad, asigna el valor REGIONAL. Para obtener información sobre los valores permitidos, consulte SqlAvailabilityType.
    Después de crear una réplica de alta disponibilidad de un servidor externo, no puedes cambiarla a una réplica que no sea de alta disponibilidad. Esto también es cierto a la inversa. No puedes cambiar una réplica sin alta disponibilidad de un servidor externo a una réplica con alta disponibilidad.
    La conmutación por error manual puede provocar una migración irrecuperable si se intenta cuando la instancia aún está cargando los datos iniciales, o un tiempo de inactividad temporal si la instancia ya está replicando desde la fuente. Comprueba el estado de la réplica.
    SOURCE_REPRESENTATION_INSTANCE_NAME Nombre de la instancia de representación de origen.
    SOURCE_REGION La región asignada a la instancia de representación de origen.
    DATABASE_VERSION Versión de la base de datos que se va a usar con la réplica de Cloud SQL. Las opciones de esta versión son MYSQL_5_6, MYSQL_5_7, MYSQL_8_0 o MYSQL_8_4. La versión de la base de datos que se ejecuta en tu servidor externo debe coincidir con la versión de la base de datos de origen o ser una versión posterior.
    REPLICA_NAME Nombre de la réplica de Cloud SQL que se va a crear.

    Crear la réplica de Cloud SQL

    Antes de empezar este paso, crea un archivo JSON que contenga los datos de tu solicitud de réplica. A continuación, para crear una réplica de Cloud SQL, abre un terminal de Cloud Shell y ejecuta estos comandos:

    curl

        gcloud auth login
        ACCESS_TOKEN="$(gcloud auth print-access-token)"
        curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
             --header 'Content-Type: application/json' \
             --data @JSON_PATH \
             -X POST \
             https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

    Ejemplo

        gcloud auth login
        ACCESS_TOKEN="$(gcloud auth print-access-token)"
        curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
             --header 'Content-Type: application/json' \
             --data @./replica.json \
             -X POST \
             https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
    Propiedad Descripción
    PROJECT_ID El ID de tu proyecto en Google Cloud, que debe ser el mismo que el de la instancia de origen.
    JSON_PATH Ruta al archivo JSON que contiene los datos de la solicitud de la réplica de Cloud SQL.

    Verificar la configuración

    Para comprobar que las instancias se han configurado correctamente, vaya a la página Instancias de Cloud SQL.

    Deberías ver tu instancia de representación de origen y la réplica de Cloud SQL en una lista similar a la siguiente:

    ID de instancia Tipo IP pública
    (-) source-representation-instance Base de datos externa principal 10.68.48.3:3306
         replica-instance Réplica de lectura de la base de datos 34.66.48.59

    También debes asegurarte de que tienes el permiso cloudsql.instances.migrate en la réplica de Cloud SQL. Este permiso se incluye en los roles de gestión de identidades y accesos cloudsql.admin o cloudsql.editor.

    Añadir usuarios a la réplica de Cloud SQL

    No puedes importar cuentas de usuario de bases de datos desde el servidor externo, pero sí crearlas en una réplica de Cloud SQL. Hazlo antes de replicar desde el servidor externo.

    Obtener la dirección IP saliente de la réplica de Cloud SQL

    Puedes usar la dirección IP de salida de la réplica de Cloud SQL para crear una conexión segura entre el servidor externo y la réplica de Cloud SQL. No se te cobrará por esta dirección IP.

    Consola

    Para obtener la dirección IP saliente de la réplica, haz lo siguiente:

    1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

      Ir a Instancias de Cloud SQL

    2. Junto a la dirección IP pública de la réplica de Cloud SQL, coloca el puntero sobre la descripción emergente Más información y recupera la dirección IP saliente.

      Ten en cuenta que la dirección IP saliente no es la dirección IP que se muestra en la lista principal de la réplica en la consola. Google Cloud

    gcloud

    Para obtener la dirección IP saliente de la réplica, ejecuta el siguiente comando:

    gcloud sql instances describe REPLICA_NAME --format="default(ipAddresses)"
    
    Propiedad Descripción
    REPLICA_NAME Nombre de la réplica de Cloud SQL cuya dirección IP pública saliente quieres obtener.

    Permitir conexiones entrantes en el servidor externo

    La réplica de Cloud SQL debe conectarse al servidor externo para que la replicación se realice correctamente. Debes configurar el cortafuegos de red de tu servidor externo para que acepte conexiones de la dirección IP de salida de la réplica de Cloud SQL si se cumplen las siguientes condiciones:

    • El servidor externo está protegido por un cortafuegos o por alguna otra restricción de red.
    • Tu réplica de Cloud SQL usa una IP pública.

    Para conectarte a la réplica de Cloud SQL, usa la dirección IP principal de la réplica. Esta dirección IP se muestra en la consola Google Cloud .

    Actualiza la instancia de representación de origen para permitir la replicación en la réplica de Cloud SQL

    Después de configurar la instancia de representación de origen para la réplica de Cloud SQL, es posible que tengas que actualizar la instancia de representación de origen. Por ejemplo, en estos casos, debes actualizar tus configuraciones:

    • El host, el puerto o la IP del servidor externo cambian.
    • Quieres usar otro usuario de replicación de MySQL.
    • Cambia la contraseña del usuario de replicación de MySQL.
    • Los certificados SSL que se usan para conectar de forma segura con el servidor externo cambian.

    Inicializar la réplica de Cloud SQL

    Hay tres opciones para realizar la carga inicial de datos desde el servidor externo a la réplica de Cloud SQL:

    ¿Qué opción es la adecuada para ti?

    Diagrama de flujo de usuario de Cloud SQL

    Supervisar replicación

    Cuando la réplica de Cloud SQL termina de cargar los datos iniciales, se conecta al servidor externo y aplica todas las actualizaciones que se hayan realizado después de la operación de exportación. Confirme el estado de la réplica.

    Es importante comprobar el estado de la réplica antes de convertirla en una instancia independiente. Si el proceso de replicación no se completa correctamente, la réplica promovida no tendrá todos los cambios del servidor externo.

    Si la latencia de replicación no tiende a 0, toma medidas para solucionarlo. Te recomendamos que consultes las siguientes métricas: /postgresql/external_sync/initial_sync_complete, postgresql/external_sync/max_replica_byte_lag y database/replication/state. Consulta la lista de métricas de Cloud SQL.

    Una vez que la réplica de Cloud SQL se haya puesto al día con el servidor externo y no haya ningún retraso en la replicación en la réplica de Cloud SQL, conéctate a tu base de datos. Ejecuta los comandos de base de datos adecuados para asegurarte de que el contenido es el esperado en comparación con el servidor externo. Conserva tu servidor externo hasta que se hayan realizado las validaciones necesarias.

    Configurar una réplica en cascada

    Después de la migración, puedes crear réplicas de lectura en cascada en tu réplica de Cloud SQL antes de convertirla en instancia principal.

    Solo puedes crear réplicas en cascada para tu instancia de Cloud SQL si usas la replicación GTID.

    Para crear una réplica en cascada, ejecuta los siguientes comandos:

    Consola

    1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

      Ir a Instancias de Cloud SQL

    2. En MySQL 5.7 o versiones posteriores, habilita la replicación.
    3. Haz clic en la pestaña Réplicas de la réplica que actuará como elemento superior de la réplica que quieras crear.
    4. Haz clic en Crear réplica.
    5. En la página Crear réplica de lectura, actualice el ID de la instancia y cualquier otra opción de configuración, como el nombre, la región y la zona.
    6. Haz clic en Crear.

      Cloud SQL crea una réplica. Se te redirigirá a la página de la instancia de la réplica principal.

    7. Sigue los pasos del 4 al 6 para cada réplica en cascada que quieras crear.

    gcloud

    1. Si usas la versión 5.7 o una posterior de MySQL, habilita los registros binarios en la instancia principal de la nueva réplica:
      gcloud sql instances patch --enable-bin-log
            --project=cascade-replica PARENT_REPLICA_NAME
      Sustituye PARENT_REPLICA_NAME por el nombre de la réplica principal.
    2. Crea la réplica especificando tu réplica de Cloud SQL como instancia principal con la marca --master-instance-name:
    3. gcloud sql instances create REPLICA_NAME \
            --master-instance-name=PARENT_REPLICA_NAME \
      Sustituye lo siguiente:
      • REPLICA_NAME: ID único de la réplica que estás creando.
      • PARENT_REPLICA_NAME: el nombre de la réplica de Cloud SQL
    4. Una vez creada la réplica, puedes ver que los cambios realizados en la instancia principal se replican en todas las réplicas de la cadena de réplicas en cascada.

    curl

    1. Si usas la versión 5.7 o posterior de MySQL, habilita el registro binario:

      Para habilitar el registro binario, guarda el siguiente JSON en un archivo llamado request.JSON y, a continuación, invoca el comando curl para habilitar el registro binario.
      {
        "settings":
        {
          "backupConfiguration":
          {
            "enabled": false,
            "binaryLogEnabled": true
          }
        }
      }

    2. Para crear una réplica en la réplica principal, edita el siguiente ejemplo de código JSON y guárdalo en un archivo llamado request.json:

      {
        "masterInstanceName": "EXTERNAL_SERVER_REPLICA_NAME",
        "project": "PROJECT_ID",
        "name": "REPLICA_NAME",
        "region": "REPLICA_REGION",
        "settings":
          {
            "tier": "MACHINE_TYPE",
          }
      }
    3. Ejecuta el siguiente comando:
      curl -X POST
      -H "Authorization: Bearer "$(gcloud auth print-access-token)
      -H "Content-Type: application/json; charset=utf-8"
      -d @request.json
      "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"

    Promocionar la réplica

    Promociona tu réplica siguiendo estos pasos:

    1. Promueve la réplica a una instancia principal. Ten en cuenta que los GTID y los registros binarios están activados, y que las copias de seguridad programadas están habilitadas en la réplica ascendida.
    2. Añade réplicas de lectura a tu instancia.
    3. Opcional: Configura tu instancia para alta disponibilidad. Para evitar que haya más tiempo de inactividad, puedes habilitar la alta disponibilidad mientras configuras una réplica. Para ello, define AVAILABILITY_TYPE como REGIONAL.

    Siguientes pasos