Como hacer copias de seguridad en PostgreSQL
Ahora vamos a ver como realizar copias de seguridad de una base de datos en PostgreSQL. Para ello existe un comando que se llama pg_dump que nos permite hacer un volcado de una base de datos a un fichero, para posteriormente restaurarlo. La sintaxis básica es:
pg_dump [opciones] [base de datos]
Lo importante es la finalidad del volcado de datos, es decir, ¿qué uso le vamos a dar a los datos extraídos? Es disntito querer tener una copia de seguridad de los datos para restaurarla en caso de fallos, de querer hacer una réplica de la base de datos para hacer pruebas.
En este caso, mi intención es tener una simple copia de seguridad, por lo que entonces no quiero exportar la creación de tablas, ni permisos de usuarios, ... (DDL) simplemente nos interesan los datos (DML).
Para ello podemos ejecutar algo como lo siguiente:
pg_dump --data-only --no-privileges --username=usuario --file=menudoproblema.es.sql base_de_datos
Este comando hace un volcado al fichero menudoproblema.es.sql, que está en texto plano (aunque se podría exportar directamente a tar). Para ello le indicamos el usuario y la base de datos. Por defecto hace uso de COPY en lugar de utilizar INSERT. Supongo que esto será más eficiente pero es menos estándar. Para usar INSERT:
pg_dump --data-only --no-privileges --inserts --column-inserts --username=usuario --file=menudoproblema.es.sql base_de_datos
En mi caso, estoy exportando una aplicación Django, por lo que hay ciertas tablas que pueden ser excluidas. Por ejemplo, django_session almacena las sesiones activas, lo cuál es preferible no exportar o django_admin_log almacena las últimas operaciones realizadas en el panel de administración (esto depende de cada cual). Esto lo podemos hacer de la siguiente forma:
pg_dump --data-only --no-privileges --inserts --column-inserts --exclude-table=django_admin_log --exclude-table=django_session --username=usuario --file=menudoproblema.es.sql base_de_datos
Tags
La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.
