Descripción general
Cuando migra su esquema, datos y metadatos de una base de datos de origen a una base de datos de destino, desea asegurarse de que toda esta información se migre con precisión. El Servicio de migración de bases de datos proporciona una forma de alta fidelidad de migrar objetos de bases de datos (incluidos el esquema, los datos y los metadatos) de una base de datos a otra.
Durante el proceso de migración, los datos y las restricciones se migran por separado. Los datos se migran primero y las restricciones como claves primarias, claves externas e índices se vuelven a crear en la instancia después del volcado y la carga completos iniciales.Todos los siguientes componentes de datos, esquemas y metadatos se migran como parte de la migración de la base de datos:
Datos
Todas las tablas de todas las bases de datos y esquemas, excepto los siguientes esquemas:
- El esquema de información
information_schema
- Cualquier esquema que comience con
pg
(por ejemplo,pg_catalog
)
Para obtener más información sobre estos esquemas, consulte Limitaciones conocidas .
- El esquema de información
Esquema
Nombrar
clave primaria
tipo de datos
Posición ordinal
Valor predeterminado
Anulabilidad
Atributos de incremento automático
Índices secundarios
Metadatos
Procedimientos almacenados
Funciones
Desencadenantes
Vistas
Restricciones de clave externa
Migración continua
Sólo los cambios del lenguaje de manipulación de datos (DML) se actualizan automáticamente durante las migraciones continuas. Administrar los cambios en el lenguaje de definición de datos (DDL) para que las bases de datos de origen y destino sigan siendo compatibles es responsabilidad del usuario y se puede lograr de dos maneras:
- Detener las escrituras en el origen y ejecutar los comandos DDL tanto en el origen como en el destino. Antes de ejecutar comandos DDL en el destino, otorgue
cloudsqlexternalsync
al usuario de Cloud SQL que aplica los cambios de DDL. Para permitir consultar o cambiar los datos, otorgue la funcióncloudsqlexternalsync
a los usuarios relevantes de Cloud SQL. - Usar
pglogical.replicate_ddl_command
para permitir que DDL se ejecute en el origen y el destino en un punto coherente. El usuario que ejecuta este comando debe tener el mismo nombre de usuario tanto en el origen como en el destino, y debe ser el superusuario o el propietario del artefacto que se está migrando (por ejemplo, la tabla, secuencia, vista o base de datos).A continuación se muestran algunos ejemplos del uso de
pglogical.replicate_ddl_command
.Reemplazar:
-
[SCHEMA]
con el nombre del esquema de tabla que deseas utilizar -
[TABLE_NAME]
con el nombre de la tabla -
[NEW_NAME_FOR_TABLE]
con el nuevo nombre de la tabla al realizar la operación de cambio de nombre
Agregar una columna a una tabla de base de datos con una clave principal
select pglogical.replicate_ddl_command( 'ALTER TABLE [SCHEMA].[TABLE_NAME] add column surname varchar(20)', '{default}' );
Agregar una columna a una tabla de base de datos sin una clave principal
select pglogical.replicate_ddl_command( 'ALTER TABLE [SCHEMA].[TABLE_NAME] add column surname varchar(20)', '{default_insert_only}' );
Cambiar el nombre de una tabla de base de datos con una clave principal
select pglogical.replicate_ddl_command( 'ALTER TABLE [SCHEMA].[TABLE_NAME] RENAME TO [NEW_NAME_FOR_TABLE]', '{default}' );
Cambiar el nombre de una tabla de base de datos sin una clave principal
select pglogical.replicate_ddl_command( 'ALTER TABLE [SCHEMA].[TABLE_NAME] RENAME TO [NEW_NAME_FOR_TABLE]', '{default_insert_only}' );
Crear una tabla de base de datos con una clave principal
Ejecute los siguientes comandos:
select pglogical.replicate_ddl_command( command := 'CREATE TABLE [SCHEMA].[TABLE_NAME] (id INTEGER PRIMARY KEY, name VARCHAR);', replication_sets := ARRAY['default'] );
select pglogical.replication_set_add_table('default', '[SCHEMA].[TABLE_NAME]');
Crear una tabla de base de datos sin una clave principal
Ejecute los siguientes comandos:
select pglogical.replicate_ddl_command( command := 'CREATE TABLE [SCHEMA].[TABLE_NAME] (id INTEGER PRIMARY KEY, name VARCHAR);', replication_sets := ARRAY['default_insert_only'] );
select pglogical.replication_set_add_table( 'default_insert_only', '[SCHEMA].[TABLE_NAME]' );
-
Lo que no se migra
Para agregar usuarios a una instancia de destino de Cloud SQL, navegue hasta la instancia y agregue usuarios desde la pestaña Usuarios , o agréguelos desde un cliente PostgreSQL. Obtenga más información sobre cómo crear y administrar usuarios de PostgreSQL .
El servicio de migración de bases de datos no migra extensiones que no son compatibles con Cloud SQL . La presencia de estas extensiones no bloquea la migración, pero para garantizar un proceso de migración sin problemas, verifique que sus objetos o aplicaciones no hagan referencia a ninguna extensión no compatible. Recomendamos eliminar estas extensiones y referencias de su base de datos de origen antes de continuar.
Los objetos grandes no se pueden replicar, ya que la función de decodificación lógica de PostgreSQL no admite cambios de decodificación en objetos grandes. Para las tablas que tienen un tipo de columna
oid
que hace referencia a objetos grandes, las filas se sincronizan y se replican las nuevas filas. Sin embargo, al intentar acceder al objeto grande en la base de datos de destino (leer usandolo_get
, exportar usandolo_export
o verificar el catálogopg_largeobject
para eloid
dado), falla y aparece un mensaje que dice que el objeto grande no existe.Para las tablas que no tienen claves principales, el Servicio de migración de bases de datos admite la migración de la instantánea inicial y las declaraciones
INSERT
durante la fase de captura de datos modificados (CDC) . Debe migrar las declaracionesUPDATE
yDELETE
manualmente.El servicio de migración de bases de datos no migra datos de vistas materializadas, solo el esquema de vista. Para completar las vistas, ejecute el siguiente comando:
REFRESH MATERIALIZED VIEW view_name
.Los estados
SEQUENCE
(por ejemplo,last_value
) en el nuevo destino pueden variar de los estadosSEQUENCE
de origen.Los espacios de tablas personalizados no se admiten en la instancia de Cloud SQL de destino. Todos los datos dentro de espacios de tabla personalizados se migran al espacio de tabla
pg_default
predeterminado en Cloud SQL.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-05-15 (UTC).