]> git.parisson.com Git - docker-django-scripts.git/commitdiff
Merge branch 'dev' of https://github.com/Ircam-Web/mezzo-bin into dev
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Fri, 15 Jan 2021 16:35:51 +0000 (17:35 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Fri, 15 Jan 2021 16:35:51 +0000 (17:35 +0100)
1  2 
dev/local/restore_db.sh
prod/local/backup_db.sh

index 675e4859f09ef9e7da7809e9e70a0e961b137ac8,a412240a075828d87bf359aa00eb010235251261..04a201331583c08460e4f921a32d4ebbe9f302f7
@@@ -6,12 -7,28 +7,28 @@@ set -
  
  echo "Restoring..."
  
+ # Migrate backup to date-based format
+ if [ -f /srv/backup/postgres.dump ]; then
+     echo 'A backup without date was found. Moving it to postgres_old.dump'
+     mv /srv/backup/postgres.dump /srv/backup/postgres_old.dump
+     if [ ! -f /srv/backup/postgres_latest.dump ]; then
+       ln -s /srv/backup/postgres_old.dump /srv/backup/postgres_latest.dump
+     fi
+ fi
  # import database functions of type
  if [ ! -z "$MYSQL_ROOT_PASSWORD" ]; then
 -    gunzip < /srv/backup/mariadb.dump.gz | mysql -h db $MYSQL_DATABASE -uroot -p$MYSQL_ROOT_PASSWORD
 +    gunzip < /srv/backup/mysql.dump.gz | mysql -h db $MYSQL_DATABASE -uroot -p$MYSQL_ROOT_PASSWORD
  elif [ ! -z "$POSTGRES_PASSWORD" ]; then
      export PGPASSWORD=$POSTGRES_PASSWORD
-     pg_restore -c -C -hdb -Upostgres -dpostgres  /srv/backup/postgres.dump
+     echo "Killing clients..."
+     psql -hdb -Upostgres -dpostgres -c "SELECT pid, (SELECT pg_terminate_backend(pid)) as killed from pg_stat_activity WHERE state LIKE 'idle';"
+     echo "Dropping db..."
+     dropdb -hdb -Upostgres postgres
+     echo "Creating new db..."
+     createdb -hdb -Upostgres -T template0 postgres
+     echo "Importing dump..."
+     pg_restore -C -c -hdb -Upostgres -dpostgres /srv/backup/${1:-postgres_latest.dump}
  fi
  
  echo "Restore done!"
index b234a8b436968e61b7393b36998694c9b9495d1e,70ac0373f32b5f27c7a0a479539fe609af1d14eb..174790bc69b532dfe26a7a3ba77dd4f149e05084
@@@ -4,12 -4,27 +4,27 @@@
  # export POSTGRES="$(dpkg --get-selections  | grep postgres 2>&1)"
  # export MYSQL="$(dpkg --get-selections  | grep mysql 2>&1)"
  
+ # Stop execution if some command fails
+ set -e
+ # Migrate backup to date-based format
+ if [ -f /srv/backup/postgres.dump ]; then
+     echo 'A backup without date was found. Moving it to postgres_old.dump'
+     mv /srv/backup/postgres.dump /srv/backup/postgres_old.dump
+     if [ ! -f /srv/backup/postgres_latest.dump ]; then
+       ln -s /srv/backup/postgres_old.dump /srv/backup/postgres_latest.dump
+     fi
+ fi
  if [ ! -z "$MYSQL_PASSWORD" ]; then
      export MYSQL_PWD=$MYSQL_PASSWORD
 -    mysqldump $MYSQL_DATABASE -hdb -u$MYSQL_USER | gzip > /srv/backup/mariadb.dump.gz
 +    mysqldump $MYSQL_DATABASE -hdb -u$MYSQL_USER | gzip > /srv/backup/mysql.dump.gz
  elif [ ! -z "$POSTGRES_PASSWORD" ]; then
      export PGPASSWORD=$POSTGRES_PASSWORD
-     pg_dump -Fc -hdb -Upostgres -dpostgres > /srv/backup/postgres.dump
+     now=$(date +"%m_%d_%Y_%H_%M_%S")
+     pg_dump -Fc -hdb -Upostgres -dpostgres > /srv/backup/postgres_$now.dump
+     rm -f /srv/backup/postgres_latest.dump
+     ln -s /srv/backup/postgres_$now.dump /srv/backup/postgres_latest.dump
  fi
  
  echo "Backup done!"