Postgresql: Comment appliquer le patch pg_dump –exclude-table-data?

J’ai un serveur de production (ec2) avec une application Django et une firebase database Postgresql. Je fais une sauvegarde de la firebase database tous les soirs avec pg_dump qui sauvegarde les données des tables.

sudo -u postgres pg_dump --column-inserts --data-only mydb > mybackup.sql 

Postgres offre la possibilité d’ignorer certaines tables à sauvegarder (tables schema + data: –exclude-table = TABLE)

Cependant, j’ai des tables que je voudrais sauvegarder leur schéma mais pas leurs données, je veux juste vider la table avec des données vides, les anciennes données ne sont pas importantes du tout, mais elles rendent le fichier de sauvegarde énorme s’il est vidé.

Il existe un correctif ” exclude-table-data = TABLE ” qui permet à un utilisateur d’avoir des données d’exclusion de pg_dump mais pas de DDL pour une table. Un cas d’utilisation est une très grande table qui change rarement, et pour lesquelles les données de dumping seraient souvent inutiles et inutiles.

Je voudrais savoir comment appliquer ce patch sans rien perdre sur ma firebase database sur mon serveur de production.

exclude-table-data est désormais une option régulière de pg_dump partir de PostgreSQL 9.2+, donc si votre serveur est une version récente, il est déjà disponible (voir la page de documentation: http://www.postgresql.org/docs/9.2/static /app-pgdump.html )

J’ai trouvé une meilleure solution, mettre à niveau PostgreSQL vers une version 9.2 ou supérieure, et j’ai trouvé un moyen sûr de le faire: (Mettez à niveau PostgreSQL 9.1 vers 9.3 sur Ubuntu 12.04)

 echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt-get update sudo apt-get install postgresql-9.3 postgresql-server-dev-9.3 postgresql-consortingb-9.3 -y sudo su - postgres -c "psql template1 -p 5433 -c 'CREATE EXTENSION IF NOT EXISTS hstore;'" sudo su - postgres -c "psql template1 -p 5433 -c 'CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";'" sudo su - postgres -c "service postgresql stop" sudo su - postgres -c '/usr/lib/postgresql/9.3/bin/pg_upgrade -b /usr/lib/postgresql/9.1/bin -B /usr/lib/postgresql/9.3/bin -d /var/lib/postgresql/9.1/main/ -D /var/lib/postgresql/9.3/main/ -O "-c config_file=/etc/postgresql/9.3/main/postgresql.conf" -o "-c config_file=/etc/postgresql/9.1/main/postgresql.conf"' sudo apt-get remove postgresql-9.1 -y sudo sed -i "s:5433:5432:g" /etc/postgresql/9.3/main/postgresql.conf sudo service postgresql restart 

Note: Ceci installera à la fois PostgreSQL 9.3 et 9.4, donc supprimez PostgreSQL 9.4 lorsque vous avez terminé ou modifiez le code ci-dessus pour passer à la version 9.4.

Référence

Plus tard, je me suis rendu compte que, puisque j’utilisais –data-only, –exclude-table et –exclude-table-data aurait le même effet puisque j’ignore le schéma!