> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrar datos de PostgreSQL mediante las fuentes de datos de ClickPipes

> Aprende a migrar tu base de datos PostgreSQL a ClickHouse Managed Postgres con ClickPipes.

export const Image = ({img, alt, size = "lg", background}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  const backgroundColor = background === "white" ? "white" : background === "black" ? "rgb(31 31 28)" : undefined;
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} style={{
    backgroundColor
  }} />
      </Frame>
    </div>;
};

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>Beta</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>Funcionalidad beta</span>
        </a>;
};

<BetaBadge link="https://clickhouse.com/cloud/postgres" galaxyTrack={true} galaxyEvent="docs.managed-postgres.migration-guide-clickhouse-cloud-beta" />

ClickHouse Cloud ahora ofrece ClickPipes para migrar su base de datos externa de PostgreSQL a un servicio Managed Postgres. Esta integración incorporada ofrece una experiencia optimizada para conectarse a su base de datos de origen, exportar el esquema, importarlo en Managed Postgres y configurar la replicación continua.

<div id="prerequisites">
  ## Prerrequisitos
</div>

* Acceso a tu base de datos PostgreSQL de origen con un usuario que tenga privilegios de replicación. Sigue la guía de configuración correspondiente a tu origen:
  * [Amazon RDS Postgres](/es/integrations/clickpipes/postgres/source/rds)
  * [Amazon Aurora Postgres](/es/integrations/clickpipes/postgres/source/aurora)
  * [Supabase Postgres](/es/integrations/clickpipes/postgres/source/supabase)
  * [Google Cloud SQL Postgres](/es/integrations/clickpipes/postgres/source/google-cloudsql)
  * [Azure Flexible Server for Postgres](/es/integrations/clickpipes/postgres/source/azure-flexible-server-postgres)
  * [Neon Postgres](/es/integrations/clickpipes/postgres/source/neon-postgres)
  * [Crunchy Bridge Postgres](/es/integrations/clickpipes/postgres/source/crunchy-postgres)
  * [TimescaleDB](/es/integrations/clickpipes/postgres/source/timescale)
  * [Origen genérico de Postgres](/es/integrations/clickpipes/postgres/source/generic) para cualquier otro proveedor o instancia autohospedada
* Un servicio ClickHouse Managed Postgres como destino de la migration. Si aún no tienes uno, consulta el [quickstart](/es/products/managed-postgres/quickstart).
* `pg_dump` y `psql` instalados en tu equipo local. Ambos se incluyen con las herramientas estándar del cliente de PostgreSQL.

<div id="considerations">
  ## Consideraciones antes de migrar
</div>

* **Propagación de DDL**: la replicación continua (CDC) captura operaciones DML y `ADD COLUMN`. Otros cambios de DDL, como `DROP COLUMN` y `ALTER COLUMN`, no se propagan y deben aplicarse manualmente en el sistema de destino.

<Note>
  Si tienes problemas durante la migración, consulta las [preguntas frecuentes sobre migraciones de Managed Postgres](/es/products/managed-postgres/migrations/faq) para ver los errores más comunes y sus soluciones.
</Note>

<h2 id="step-1-connect">
  Paso 1: Conéctate a tu base de datos de origen
</h2>

Abre la [consola de ClickHouse Cloud](https://clickhouse.cloud) y selecciona tu servicio de Managed Postgres.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/servicecard.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=5da06beedac095dc527e7a83460f863e" alt="Tarjeta del servicio de Managed Postgres en la lista de servicios de ClickHouse Cloud" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/servicecard.webp" />

En la barra lateral izquierda, haz clic en **fuentes de datos**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/overview.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=0fffed584827f3fb1386d27fc205b81a" alt="Entrada fuentes de datos en la barra lateral del servicio de Managed Postgres" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/overview.webp" />

Haz clic en **Start import**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/startimport.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=4b335dc3b56a6bfa1a9ca04dc9447e56" alt="Página de fuentes de datos con el botón Start import" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/startimport.webp" />

Completa los detalles de conexión de tu base de datos PostgreSQL de origen: host, puerto, nombre de usuario, contraseña y nombre de la base de datos. Habilita **TLS** si la base de datos de origen lo requiere.

Si necesitas una conexión privada a tu base de datos de origen, puedes usar un **túnel SSH** e introducir los datos de SSH necesarios. Esto permite que la migración se conecte de forma segura a bases de datos que no son accesibles públicamente.

Elige un método de ingestión:

* **Carga inicial + CDC** — copia los datos existentes y después mantiene el destino sincronizado con los cambios posteriores.
* **Solo carga inicial** — copia puntual, sin replicación continua.
* **Solo CDC** — omite la copia inicial y replica únicamente los cambios nuevos a partir de este momento.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/migrationform.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=f360daf02b6b04240a0d9e9e7f143498" alt="Paso 1: formulario de conexión a la base de datos de origen con opciones de método de ingestión" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/migrationform.webp" />

Haz clic en **Next**.

<h2 id="automated-schema-migration">
  Migración automática del esquema
</h2>

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pg_dump_restore/automated.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=9951eb0470ed0a63c40543b2285057b9" alt="Paso 2: Migración automática del esquema con selector de base de datos de destino" size="lg" border width="2632" height="742" data-path="images/managed-postgres/pg_dump_restore/automated.webp" />

Al elegir esta opción, ClickPipe extraerá automáticamente el esquema de la base de datos de origen y lo aplicará a su servicio Managed Postgres durante la [fase de Setup](/es/integrations/clickpipes/postgres/lifecycle#setup) de ClickPipe, después de crearlo.

Esta funcionalidad presupone una **base de datos de destino vacía**, ya que extrae todos los objetos de la base de datos de origen, independientemente de las tablas que seleccione posteriormente en el asistente. Si ya tiene datos en la base de datos de destino o desea una configuración más personalizada, debe elegir el modo [**Manual**](#manual-schema-migration).

Seleccione la base de datos de destino en el menú desplegable o haga clic en **Crear una nueva base de datos** para aprovisionarla.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pg_dump_restore/newdb.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=7af9cb67d83ba390fa0dfbe9a26da87d" alt="Cuadro de diálogo para crear una nueva base de datos de Postgres" size="lg" border width="1642" height="742" data-path="images/managed-postgres/pg_dump_restore/newdb.webp" />

<h3 id="monitoring">
  Supervisión
</h3>

Puede seguir el progreso de la migración de esquema en la vista de detalles de ClickPipes. Los **registros** indicarán el estado de la migración de esquema y también mostrarán los errores que se produzcan.

Este modo tiene las siguientes limitaciones:

* Los pipes que utilizan túneles SSH no pueden usar la migración automática del esquema. El esquema debe [exportarse e importarse manualmente](#manual-schema-migration).

<h2 id="manual-schema-migration">
  Migración manual del esquema
</h2>

Si ya tiene datos en la base de datos de destino o desea una configuración más personalizada que la instalación desde cero que requiere el modo automatizado, puede seleccionar aquí el modo **Manual**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pg_dump_restore/manual.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=bcb9482e3070bd505e42dd20b49949e5" alt="Paso 2: Migración manual del esquema con el comando de exportación pg_dump" size="lg" border width="2632" height="1022" data-path="images/managed-postgres/pg_dump_restore/manual.webp" />

<h3 id="step-2-export-schema">
  Exporta el esquema de tu base de datos
</h3>

El asistente muestra un comando `pg_dump` ya rellenado con los detalles de conexión de tu origen. Ejecútalo en una terminal:

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/nextexport.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=817489659403b6183ea9ca726b4c1c85" alt="Paso 2: comando pg_dump para exportar el esquema" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/nextexport.webp" />

```shell theme={null}
pg_dump \
  -h <source_host> \
  -U <source_user> \
  -d <source_database> \
  --schema-only \
  -f pg.sql
```

Esto crea `pg.sql` en tu directorio actual.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/psqlexport.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=8cb54def65d2d7d581686c4339aa0df2" alt="Salida de la terminal después de ejecutar pg_dump" size="lg" border width="1452" height="422" data-path="images/managed-postgres/pgpg/psqlexport.webp" />

Haz clic en **Next**.

<h3 id="step-3-import-schema">
  Importa el esquema en tu servicio de Managed Postgres
</h3>

Selecciona la base de datos de destino en el menú desplegable o haz clic en **Crear una nueva base de datos** para aprovisionar una.

El asistente muestra un comando `psql` para aplicar el volcado de esquema a tu servicio de Managed Postgres. Ejecútalo en una terminal:

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/nextimport.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=59f3694d70eca58c60c9cb2f64509cd0" alt="Paso 3: comando psql para importar el esquema" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/nextimport.webp" />

```shell theme={null}
psql \
  -h <target_host> \
  -p 5432 \
  -U <target_user> \
  -d <target_database> \
  -f pg.sql
```

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/psqlimport.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=3b4d6f4d7502e549ff3db7aa2e7b9c4a" alt="Salida de la terminal después de ejecutar la importación del esquema con psql" size="lg" border width="2362" height="762" data-path="images/managed-postgres/pgpg/psqlimport.webp" />

Haz clic en **Next**.

<h2 id="step-4-ingestion-settings">
  Paso 4: Configurar los ajustes de ingestión
</h2>

Especifique la publicación que se usará para la replicación lógica. Si deja este campo en blanco, se creará una publicación automáticamente.

Expanda **Advanced replication settings** para ajustar el rendimiento:

| Ajuste | Predeterminado | Descripción |
| - | - | - |
| Intervalo de sincronización (segundos) | 10 | Frecuencia con la que se consulta el slot de replicación |
| Hilos paralelos para la carga inicial | 4 | Número de hilos para la fase de copia masiva |
| Tamaño del lote de Pull | 100,000 | Filas recuperadas por lote de replicación |
| Número de filas por partición en la instantánea | 100000 | Tamaño de la partición para instantáneas de tablas grandes |
| Número de tablas en paralelo en la instantánea | 1 | Tablas de las que se toma una instantánea de forma simultánea |

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/advancedsettings.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=b6c4dcaefdf8176f3d61636fabe70b95" alt="Paso 4: formulario de ajustes de ingestión con publicación y opciones avanzadas de replicación" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/advancedsettings.webp" />

Haga clic en **Siguiente**.

<h2 id="step-5-select-tables">
  Paso 5: Seleccionar tablas
</h2>

Selecciona las tablas que quieres replicar. Las tablas están agrupadas por esquema. Selecciona tablas individuales o expande un esquema para elegirlas todas.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/tablepicker.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=275772f47c4cbb55fdac96acdf8a8735" alt="Paso 5: selector de tablas agrupadas por esquema con el botón Crear migración" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/tablepicker.webp" />

Haz clic en **Crear migración**.

<h2 id="monitor">
  Supervisa la migración
</h2>

Después de crear la migración, la verás en **Fuentes de datos** con el estado **En ejecución**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/migrationlist.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=a8e8712ecd01d1bf7b6112ba26275965" alt="Lista de fuentes de datos que muestra una migración en ejecución" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/migrationlist.webp" />

Haz clic en la migración para abrir la vista de detalles. La pestaña **Tablas** muestra el progreso de la carga inicial de cada tabla, incluidas las filas procesadas, las particiones y el tiempo medio por partición. La pestaña **Métricas** muestra el retraso de replicación y el rendimiento una vez que se inicia CDC.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/4n4lv5U169Tcsz6l/images/managed-postgres/pgpg/initialload.webp?fit=max&auto=format&n=4n4lv5U169Tcsz6l&q=85&s=8efa910d3f00341a552b81aca49b9c05" alt="Vista de detalles de la migración que muestra estadísticas de la carga inicial por tabla" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/initialload.webp" />

<h2 id="cutover">
  Conmutar el tráfico
</h2>

Una vez completada la carga inicial y, si utiliza CDC, cuando el retraso de replicación sea cercano a cero, puede conmutar el tráfico de su base de datos Postgres de origen a su servicio Managed Postgres. Abra la vista de detalles de la migración y seleccione la pestaña **Post-migration steps**. Este asistente guiado le acompaña a lo largo de los seis pasos necesarios para finalizar la migración de forma segura. Cada paso debe completarse en orden antes de poder avanzar al siguiente.

<h3 id="cutover-read-only">
  Paso 1: Poner la base de datos Postgres de origen en modo de solo lectura
</h3>

Detenga las escrituras de la aplicación en el origen para que no se produzcan divergencias durante la conmutación. El asistente muestra un comando `ALTER DATABASE` ya completado con el nombre de su base de datos de origen: ejecútelo en dicha base de datos:

```sql theme={null}
ALTER DATABASE "<source_db>" SET default_transaction_read_only = on;
```

A continuación, cierre todas las conexiones existentes para que adopten la configuración de solo lectura y no queden escrituras en curso:

```sql theme={null}
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = '<source_db>'
  AND pid <> pg_backend_pid();
```

<Note>
  Según tu proveedor de Postgres, este paso puede variar. Los servicios gestionados pueden restringir `ALTER DATABASE` o la terminación de backends y, en su lugar, ofrecer el modo de solo lectura a través de su propia consola, de grupos de parámetros o mediante la revocación de privilegios de escritura. Consulta la documentación de tu proveedor para conocer la forma equivalente de poner el origen en modo de solo lectura.
</Note>

Haz clic en **Mark as completed** para continuar.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/y9c9rzJ7kvnfRKJa/images/managed-postgres/pgpg/post-migration/readonly.webp?fit=max&auto=format&n=y9c9rzJ7kvnfRKJa&q=85&s=b5e1558c444dbf18d4a85850a9e2fe4d" alt="Paso 1 posterior a la migración: poner la base de datos de origen en modo de solo lectura" size="lg" border width="1486" height="1818" data-path="images/managed-postgres/pgpg/post-migration/readonly.webp" />

<h3 id="cutover-validate">
  Paso 2: Validar los recuentos de filas
</h3>

Seleccione las tablas replicadas que desea validar. ClickPipes cuenta las filas de cada tabla seleccionada tanto en el origen como en el destino y compara los resultados. Las tablas de gran tamaño pueden devolver recuentos aproximados. Use **Select all tables** para validar todas las tablas, o busque y active tablas concretas y, a continuación, haga clic en **Count rows**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/GFspt4gULfSkoH59/images/managed-postgres/pgpg/post-migration/validate-row-counts.webp?fit=max&auto=format&n=GFspt4gULfSkoH59&q=85&s=2a376bdc0028485f26c4e3f159b7fec4" alt="Paso 2 posterior a la migración: seleccionar tablas y validar los recuentos de filas entre el origen y el destino" size="lg" border width="1452" height="1612" data-path="images/managed-postgres/pgpg/post-migration/validate-row-counts.webp" />

<h3 id="cutover-pause">
  Paso 3: Pausar el pipe
</h3>

Pause el ClickPipe para que la replicación se detenga antes de restablecer las secuencias y conmutar el tráfico. Haga clic en **Pause ClickPipe** y espere a que el pipe quede pausado antes de continuar.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/y9c9rzJ7kvnfRKJa/images/managed-postgres/pgpg/post-migration/pause-pipe.webp?fit=max&auto=format&n=y9c9rzJ7kvnfRKJa&q=85&s=6d650c0e80230dd2fec9d6cce10d79de" alt="Paso 3 posterior a la migración: pausar el ClickPipe para detener la replicación" size="lg" border width="1408" height="1322" data-path="images/managed-postgres/pgpg/post-migration/pause-pipe.webp" />

<h3 id="cutover-reset-sequences">
  Paso 4: Restablecer las secuencias
</h3>

Restablezca las secuencias en el destino para que las nuevas inserciones continúen a partir de los valores correctos. Haga clic en **Reset sequences** para alinear cada secuencia con el valor máximo actual de su tabla.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/y9c9rzJ7kvnfRKJa/images/managed-postgres/pgpg/post-migration/reset-sequences.webp?fit=max&auto=format&n=y9c9rzJ7kvnfRKJa&q=85&s=6df042af5d04372c4f3ea93ebc572073" alt="Paso 4 posterior a la migración: restablecer las secuencias en el destino" size="lg" border width="1382" height="1196" data-path="images/managed-postgres/pgpg/post-migration/reset-sequences.webp" />

<h3 id="cutover-traffic">
  Paso 5: Conmutar el tráfico
</h3>

Dirige las lecturas y escrituras a tu servicio de Managed Postgres actualizando la URL de la base de datos de tu aplicación con la cadena de conexión de Managed Postgres. El asistente proporciona los datos de conexión en varios formatos —**url**, **psql**, **env**, **yaml** y **jdbc**— para que puedas copiar el que se ajuste a tu stack. Una vez actualizada tu aplicación, haz clic en **Mark as completed**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/y9c9rzJ7kvnfRKJa/images/managed-postgres/pgpg/post-migration/cutover-traffic.webp?fit=max&auto=format&n=y9c9rzJ7kvnfRKJa&q=85&s=a9ac993e5c1d9de925668c7baf169b42" alt="Paso 5 posterior a la migración: Conmutar el tráfico usando la cadena de conexión de Managed Postgres" size="lg" border width="1486" height="1018" data-path="images/managed-postgres/pgpg/post-migration/cutover-traffic.webp" />

<h3 id="cutover-cleanup">
  Paso 6: Limpieza
</h3>

Una vez que hayas hecho el cambio y confirmado que el nuevo service funciona correctamente, elimina la migración y libera los recursos del origen. El asistente muestra un comando `pg_drop_replication_slot` con el nombre del slot ya rellenado: ejecútalo en el origen para eliminar el slot de replicación:

```sql theme={null}
SELECT pg_drop_replication_slot('<slot_name>');
```

A continuación, haga clic en **Delete ClickPipe migration** para eliminar la migración de **Fuentes de datos**.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/y9c9rzJ7kvnfRKJa/images/managed-postgres/pgpg/post-migration/cleanup.webp?fit=max&auto=format&n=y9c9rzJ7kvnfRKJa&q=85&s=bd1fc0408e1dd1b552f66cfc2f1e980e" alt="Paso 6 posterior a la migración: limpieza eliminando el slot de replicación y borrando la migración" size="lg" border width="1452" height="1432" data-path="images/managed-postgres/pgpg/post-migration/cleanup.webp" />

<h2 id="next-steps">
  Próximos pasos
</h2>

* [Guía de inicio rápido de Managed Postgres](/es/products/managed-postgres/quickstart)
* [Detalles de conexión de Managed Postgres](/es/products/managed-postgres/connection)
* [Preguntas frecuentes sobre Postgres en ClickPipes](/es/integrations/clickpipes/postgres/faq)
