Transporte de una base de datos PostgreSQL al destino desde el origen
Después de completar el proceso descrito en Configuración de transporte de una base de datos de PostgreSQL, puede comenzar el transporte. Para ello, ejecute la función transport.import_from_server
en la instancia de base de datos de destino. En la siguiente sintaxis, puede encontrar los parámetros de la función.
SELECT transport.import_from_server( '
source-db-instance-endpoint
',source-db-instance-port
, 'source-db-instance-user
', 'source-user-password
', 'source-database-name
', 'destination-user-password
', false);
El valor false
que se muestra en el ejemplo indica a la función que no se trata de una prueba. Para probar la configuración de transporte, puede especificar true
para la opción dry_run
cuando ejecute la función, como se muestra a continuación:
postgres=>
SELECT transport.import_from_server( 'docs-lab-source-db.666666666666
aws-region
.rds.amazonaws.com', 5432, 'postgres', '********', 'labdb', '******', true);INFO: Starting dry-run of import of database "labdb". INFO: Created connections to remote database (took 0.03 seconds). INFO: Checked remote cluster compatibility (took 0.05 seconds). INFO: Dry-run complete (took 0.08 seconds total). import_from_server -------------------- (1 row)
Las líneas de INFO se generan porque el parámetro pg_transport.timing
se establece en su valor predeterminado true
. Configure dry_run
en false
cuando ejecute el comando y la base de datos de origen se importe al destino, como se muestra a continuación:
INFO: Starting import of database "labdb".
INFO: Created connections to remote database (took 0.02 seconds).
INFO: Marked remote database as read only (took 0.13 seconds).
INFO: Checked remote cluster compatibility (took 0.03 seconds).
INFO: Signaled creation of PITR blackout window (took 2.01 seconds).
INFO: Applied remote database schema pre-data (took 0.50 seconds).
INFO: Created connections to local cluster (took 0.01 seconds).
INFO: Locked down destination database (took 0.00 seconds).
INFO: Completed transfer of database files (took 0.24 seconds).
INFO: Completed clean up (took 1.02 seconds).
INFO: Physical transport complete (took 3.97 seconds total).
import_from_server
--------------------
(1 row)
Esta función requiere que proporcione contraseñas de usuario de base de datos. De esta manera, le recomendamos que cambie las contraseñas de los roles de usuario que ha utilizado después de completar el transporte. O, puede utilizar variables de enlace SQL para crear roles de usuario temporales. Utilice estos roles temporales para el transporte y, a continuación, descarte los roles con posterioridad.
Si el transporte no se realiza correctamente, es posible que vea un mensaje de error similar al siguiente:
pg_transport.num_workers=8 25% of files transported failed to download file data
El mensaje de error “Failed to download file data” (No se pudo descargar los datos de archivo) indica que el número de procesos de trabajo no está configurado correctamente para el tamaño de la base de datos. Es posible que tenga que aumentar o disminuir el valor establecido para pg_transport.num_workers
. Cada error informa el porcentaje de finalización, de modo que pueda ver el impacto de los cambios. Por ejemplo, cambiar la configuración de 8 a 4 en un caso dio lugar a lo siguiente:
pg_transport.num_workers=4 75% of files transported failed to download file data
Tenga en cuenta que el parámetro max_worker_processes
también se tiene en cuenta durante el proceso de transporte. En otras palabras, es posible que tenga que modificar tanto pg_transport.num_workers
como max_worker_processes
para transportar correctamente la base de datos. El ejemplo que se muestra finalmente funcionó cuando pg_transport.num_workers
se estableció en 2:
pg_transport.num_workers=2 100% of files transported
Para obtener más información sobre la funcionalidad transport.import_from_server
y sus parámetros, consulte Referencia de función de bases de datos transportables.