Estoy buscando copiar una base de datos PostgreSQL de producción en un servidor de desarrollo. ¿Cuál es la forma más rápida y fácil de hacer esto?
fuente
Estoy buscando copiar una base de datos PostgreSQL de producción en un servidor de desarrollo. ¿Cuál es la forma más rápida y fácil de hacer esto?
No necesita crear un archivo intermedio. Tu puedes hacer
pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname
o
pg_dump -C -h remotehost -U remoteuser dbname | psql -h localhost -U localuser dbname
usando psql
o pg_dump
para conectarse a un host remoto.
Con una gran base de datos o una conexión lenta, descargar un archivo y transferir el archivo comprimido puede ser más rápido.
Como dijo Kornel, no hay necesidad de volcar a un archivo intermedio, si desea trabajar comprimido puede usar un túnel comprimido
pg_dump -C dbname | bzip2 | ssh remoteuser@remotehost "bunzip2 | psql dbname"
o
pg_dump -C dbname | ssh -C remoteuser@remotehost "psql dbname"
pero esta solución también requiere obtener una sesión en ambos extremos.
Nota: pg_dump
es para realizar copias de seguridad y psql
para restaurar. Entonces, el primer comando en esta respuesta es copiar de local a remoto y el segundo es de remoto a local . Más -> https://www.postgresql.org/docs/9.6/app-pgdump.html
ssh remoteuser@remotehost "pg_dump -C dbname | bzip2" | bunzip2 | psql dbname
?Luego copie la copia de seguridad en su servidor de desarrollo, restaure con:
fuente
Use pg_dump , y luego psql o pg_restore , dependiendo de si elige las opciones -Fp o -Fc para pg_dump.
Ejemplo de uso:
fuente
Si está buscando migrar entre versiones (por ejemplo, actualizó postgres y tiene 9.1 ejecutándose en localhost: 5432 y 9.3 ejecutándose en localhost: 5434) puede ejecutar:
Echa un vistazo a los documentos de migración .
fuente
pg_basebackup
Parece ser la mejor manera de hacerlo ahora, especialmente para grandes bases de datos.Puede copiar una base de datos de un servidor con la misma versión principal o anterior. O más precisamente :
Para eso necesitas en el servidor de origen:
listen_addresses = '*'
para poder conectarse desde el servidor de destino. Asegúrese de que el puerto 5432 esté abierto para el caso.max_wal_senders = 1
(-X fetch
),2
para-X stream
(el valor predeterminado en el caso de PostgreSQL 12), o más.wal_level = replica
o superior para poder configurarmax_wal_senders > 0
.host replication postgres DST_IP/32 trust
enpg_hba.conf
. Esto otorga acceso alpg
clúster a cualquier persona desde laDST_IP
máquina. Es posible que desee recurrir a una opción más segura.Los cambios 1, 2, 3 requieren reinicio del servidor, el cambio 4 requiere recarga.
En el servidor de destino:
fuente
Ejecute este comando con el nombre de la base de datos, desea realizar una copia de seguridad, para volcar la base de datos.
Ahora scp este archivo de volcado a la máquina remota donde desea copiar DB.
En la máquina remota, ejecute el siguiente comando en la carpeta ~ / some / para restaurar la base de datos.
fuente
Luché bastante y, finalmente, el método que me permitió hacer que funcionara con Rails 4 fue:
en tu antiguo servidor
Tuve que usar el usuario de Linux postgres para crear el volcado. También tuve que usar -c para forzar la creación de la base de datos en el nuevo servidor. --inserts le dice que use la sintaxis INSERT () que de otra forma no funcionaría para mí :(
luego, en el nuevo servidor, simpy:
para transferir el archivo dump.sql entre el servidor, simplemente utilicé "cat" para imprimir el contenido y luego "nano" para recrearlo copiando el contenido.
Además, el PAPEL que estaba usando en las dos bases de datos era diferente, así que tuve que buscar y reemplazar todo el nombre del propietario en el volcado.
fuente
Volcar su base de datos:
pg_dump database_name_name > backup.sql
Importa tu base de datos de nuevo:
psql db_name < backup.sql
fuente
Permítanme compartir un script de shell de Linux para copiar los datos de su tabla de un servidor a otro servidor PostgreSQL.
Referencia tomada de este blog:
Linux Bash Shell Script para la migración de datos entre servidores PostgreSQL:
Solo estoy migrando los datos; cree una tabla en blanco en su servidor de base de datos de destino / segundo.
Este es un script de utilidad. Además, puede modificar el script para uso genérico, como agregar parámetros para host_name, database_name, table_name y otros
fuente
La respuesta aceptada es correcta, pero si desea evitar ingresar la contraseña de manera interactiva, puede usar esto:
fuente