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
- 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.
-
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. -
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. -
Asegúrate de tener los roles Administrador de Cloud SQL, Administrador de Storage y Lector de Compute en tu cuenta de usuario.
- 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 y 17
- Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15, 16 y 17
- 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 y 17
En la Google Cloud consola, ve a la página Redes de VPC.
Selecciona la red de VPC que quieras usar.
Haga clic en la pestaña Conexión de servicio privada.
- Si tu instancia de origen no incluye la base de datos
postgres
, créala. - Instala el paquete pglogical en la instancia de origen.
Define los siguientes parámetros según sea necesario.
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 marcascloudsql.logical_decoding
ycloudsql.enable_pglogical
.Para habilitar marcas en Cloud SQL, consulta Configurar marcas de bases de datos.
Define
shared_preload_libraries
para incluirpglogical
con el siguiente comando:ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
Asigna el valor
logical
awal_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ámetrords.logical_replication
en1
.Asigna el valor
0
awal_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 hayan usado 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 como10
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;
- Si la instancia de PostgreSQL de origen es Microsoft Azure Database for PostgreSQL Flexible Server, realiza las siguientes acciones para admitir la migración de datos de un servidor externo a una instancia de Cloud SQL:
Define
shared_preload_libraries
para incluirpglogical
con el siguiente comando:ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
- Asigna el valor
logical
awal_level
. Para obtener más información, consulta Replicación lógica y decodificación lógica en Azure Database for PostgreSQL (servidor flexible). 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 hayan usado 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 como10
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;
- Define azure.extensions para incluir
pglogical
. Para obtener más información, consulta Parámetros de servidor en Azure Database for PostgreSQL (servidor flexible).
- Si la réplica de Cloud SQL va a usar una IP privada, configura el cortafuegos del servidor externo para que permita el intervalo de IPs internas asignado al acceso privado a servicios de la red de VPC de la réplica.
- Para aplicar los cambios de configuración, reinicia la instancia de origen.
Opción 1: Habilita el servidor externo de Cloud SQL para monitorizar el retraso de la replicación concediendo acceso a una consulta específica. Con un usuario que tenga el privilegio
SUPERUSER
, haz lo siguiente:Define la siguiente función para permitir que el servidor externo consulte el retraso de la replicación.
CREATE OR REPLACE FUNCTION pg_stat_replication_user() RETURNS TABLE ( pid integer , usesysid oid , username name , application_name text , client_addr inet , client_hostname text , client_port integer , backend_start timestamp with time zone , backend_xmin xid , state text , sent_location pg_lsn , write_location pg_lsn , flush_location pg_lsn , replay_location pg_lsn , sync_priority integer , sync_state text ) LANGUAGE SQL SECURITY DEFINER AS $$ SELECT * FROM pg_catalog.pg_stat_replication; $$;
Concede el permiso
EXECUTE
al usuario ejecutando los siguientes comandos:REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
Opción 2: Conceder el privilegio
SUPERUSER
directamente al usuario que se utiliza para conectarse a la instancia de origen. De esta forma, el servidor externo puede leer directamente el retraso de la réplica.Opción 3: Hacer un seguimiento de la latencia de replicación de forma independiente mediante la siguiente consulta:
SELECT current_timestamp, application_name, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag FROM pg_stat_replication WHERE application_name like 'cloudsql%';
En esta opción, Cloud SQL no refleja la métrica de latencia de réplica en los gráficos ni en las respuestas de la API.
- Fuentes locales: bases de datos de plantillas
template0
ytemplate1
- En el caso de las fuentes de Amazon RDS:
template0
,template1
yrdsadmin
- En el caso de las fuentes de Cloud SQL, las bases de datos de plantilla
template0
ytemplate1
Para instalar la extensión
pglogical
, ejecuta el siguiente comando en cada base de datos de tu instancia de origen:CREATE EXTENSION IF NOT EXISTS pglogical
En el caso de las tablas que no tienen claves principales, Cloud SQL admite la migración de la instantánea inicial y las instrucciones
.INSERT
durante la fase de captura de datos de cambios (CDC). Migra las instruccionesUPDATE
yDELETE
manualmente.Conéctate a la instancia y ejecuta los siguientes comandos para definir los privilegios del usuario en cada una de las bases de datos migradas, así como en la base de datos
postgres
predeterminada.El usuario que usas para conectarte a la instancia de origen se configura como usuario en la página Perfiles de conexión. Puedes crear un usuario o reutilizar uno que ya tengas.
En todos los esquemas de cada base de datos que se vaya a migrar, excepto en el esquema de información y los esquemas que empiecen por
pg_
, ejecuta el siguiente comando:GRANT USAGE on SCHEMA schema to username; GRANT SELECT on ALL SEQUENCES in SCHEMA schema to username; GRANT SELECT on ALL TABLES in SCHEMA schema to username;
En cada base de datos que quieras migrar, ejecuta el siguiente comando:
GRANT USAGE on SCHEMA pglogical to PUBLIC;
Para obtener información de replicación de las bases de datos de origen, ejecuta el siguiente comando en todas las bases de datos:
GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;
Si tu fuente es Amazon RDS, ejecuta el siguiente comando:
GRANT rds_replication to username;
Si la versión de Microsoft Azure Database for PostgreSQL de tu origen es anterior a la 14, ejecuta el siguiente comando:
GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;
Puedes ignorar un error que aparezca en la interfaz de
pglogical.node
.Si tu origen es Microsoft Azure Database for PostgreSQL versión 14 o posterior, ejecuta el siguiente comando:
GRANT pg_read_all_data to username;
De lo contrario, ejecuta el siguiente comando:
ALTER USER username with REPLICATION;
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 origenCLIENT_CERT:
proporciona el certificado que usa la base de datos de destino para autenticarse en el servidor de la base de datos de origenCLIENT_KEY:
proporciona la clave privada asociada al certificado de cliente
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
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
- 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.
- El host, el puerto o la IP del servidor externo cambian.
- Quieres usar otro usuario de replicación de PostgreSQL.
- La contraseña del usuario de replicación de PostgreSQL cambia.
- Los certificados SSL que se usan para conectar de forma segura con el servidor externo cambian.
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Haz clic en la pestaña Réplicas de la réplica que actuará como elemento superior de la réplica que quieras crear.
- Haz clic en Crear réplica.
- 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.
- 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.
- Sigue los pasos del 4 al 6 para cada réplica en cascada que quieras crear.
- Crea la réplica especificando tu réplica de Cloud SQL como instancia principal con la marca
--master-instance-name
: - REPLICA_NAME: ID único de la réplica que estás creando.
- PARENT_REPLICA_NAME: el nombre de la réplica de Cloud SQL
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.
- 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", } }
- 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"
- Promueve la réplica a una instancia principal.
- Añade réplicas de lectura a tu instancia.
- 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
comoREGIONAL
. Si instalas extensiones en tus bases de datos de origen externas que Cloud SQL no admite, cuando migres las bases de datos a una instancia de destino, Cloud SQL no migrará estas extensiones. Para que la migración se realice sin problemas, compruebe que ningún objeto ni aplicación haga referencia a las extensiones. Antes de continuar con la migración, te recomendamos que elimines las extensiones y cualquier referencia de las bases de datos de origen.
Para obtener más información sobre las extensiones que admite Cloud SQL, consulta Configurar extensiones de PostgreSQL.
Si instalas la extensión
pg_cron
en tus bases de datos de origen externas, cuando migres las bases de datos a una instancia de destino, Cloud SQL no migrará la extensión ni ningún ajuste decron
asociado a la extensión. Después de migrar las bases de datos y promover la réplica, Google recomienda que vuelvas a habilitar la extensiónpg_cron
en cada base de datos migrada.No puedes migrar datos de la versión 11 de un servidor Microsoft Azure de origen a la versión 11 de una instancia de Cloud SQL para PostgreSQL de destino. Para resolver este problema, migra los datos a una instancia de Cloud SQL que tenga la versión 12 o una posterior.
- Consulte cómo usar una importación gestionada para configurar la replicación desde bases de datos externas.
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
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:
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 firewall del servidor externo para permitir el intervalo de IPs 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 sus ajustes ipConfiguration.
Para encontrar el intervalo de IP internas, sigue estos pasos:
Configurar la instancia de origen
Para configurar la instancia de origen, sigue estos pasos:
Los parámetros que definas en este paso se aplicarán a un servidor de bases de datos PostgreSQL en ejecución. También puedes hacer que estos cambios sean permanentes incluyéndolos en el archivo postgresql.conf
.
Habilitar la monitorización del retraso de la replicación en versiones de PostgreSQL anteriores a la 9.6
Si migras desde una versión de PostgreSQL anterior a la 9.6, la métrica de latencia de replicación no estará disponible de forma predeterminada. Tienes tres alternativas para hacer un seguimiento de esta métrica y reducir al máximo el periodo de inactividad cuando promociones la base de datos:
Configurar las bases de datos de origen
El servidor externo de Cloud SQL migra todas las bases de datos de tu instancia de origen, excepto las siguientes:
Haz lo siguiente en cada base de datos de tu instancia de origen que no esté incluida en la lista anterior:
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.
Si quieres migrar un subconjunto de bases de datos de la instancia de origen a la de Cloud SQL de destino, usa el parámetroselectedObjects
para especificar los nombres de las bases de datos. Si no usa este parámetro o proporciona una lista vacía como valor del parámetro, todas las bases de datos se migrarán del origen al destino.
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "selectedObjects": "SELECTED_OBJECTS", "hostPort": "SOURCE_HOST", "username": "USERNAME", "password": "PASSWORD", "caCertificate": "SOURCE_CERT", "clientCertificate": "CLIENT_CERT", "clientKey": "CLIENT_KEY" } }
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": "POSTGRES_9_6",
"onPremisesConfiguration": {
"selectedObjects":[{"database":"db1"}, {"database":"db2"}],
"hostPort": "192.0.2.0:3306",
"username": "replicationUser",
"password": "486#@%*@"
}
}
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 POSTGRES_9_6 , POSTGRES_10 , POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , POSTGRES_16 o POSTGRES_17 . |
SELECTED_OBJECTS | Lista de objetos separados por comas que contiene las bases de datos que vas a migrar de la instancia de representación de origen a la instancia de Cloud SQL de destino. |
SOURCE HOST | La dirección IPv4 y el puerto del servidor externo, o la dirección DNS del servidor externo. Si el servidor externo está alojado en Cloud SQL, el puerto es 5432 . |
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: El valor predeterminado de este parámetro es |
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.
selectedObjects
. Si no usa este parámetro o proporciona una lista vacía como valor del parámetro, todas las bases de datos se migrarán del origen al destino.
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": { "selectedObjects": "SELECTED_OBJECTS", "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": "POSTGRES_9_6",
"onPremisesConfiguration": {
"selectedObjects":[{"database":"db1"}, {"database":"db3"}],
"username": "newReplicationUser",
"password": "525#@%*@"
}
}
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 POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , POSTGRES_16 o POSTGRES_17 . |
SELECTED_OBJECTS | Lista actualizada de objetos separados por comas que contiene las bases de datos que vas a migrar de la instancia de representación de origen a la instancia de Cloud SQL de destino. |
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": "POSTGRES_16", "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 POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , POSTGRES_16 o POSTGRES_17 .
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:5432 |
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:
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:
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:
Inicializar la réplica de Cloud SQL
Para cargar inicialmente los datos del servidor externo en la réplica de Cloud SQL, usa una importación gestionada. Utiliza un servicio que extrae datos del servidor externo y los importa directamente a la instancia de Cloud SQL. Para obtener más información, consulta el artículo Usar una importación gestionada para configurar la replicación desde bases de datos externas.
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.
Si quieres migrar un subconjunto de bases de datos de la instancia de representación de origen a la instancia de Cloud SQL de destino, consulta las siguientes métricas por base de datos:
Métrica | Descripción |
---|---|
per_database/postgresql/external_sync/initial_sync_complete |
Conocer la fase de migración de una base de datos. Si el valor de esta métrica es 0 , significa que la base de datos sigue formando parte del volcado de datos inicial. Si el valor es 1 , significa que la base de datos ha completado el volcado de datos inicial y se encuentra en la fase de captura de datos de cambios (CDC). |
per_database/postgresql/external_sync/replication_byte_lag |
Conocer el retraso de replicación de una base de datos (en bytes). |
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.
Para crear una réplica en cascada, ejecuta los siguientes comandos:
Consola
gcloud
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
curl
Promocionar la réplica
Promociona tu réplica siguiendo estos pasos: