2342 shaares
1311 private links
1311 private links
Super pratique cet outil pour faire une montée de version de PostgreSQL sans se prendre (trop) la tête.
J'avais un vieux container Docker qui tournait en version 9.4 pour FreshRSS. Pour la faire courte, j'ai eu des problèmes de certificat SSL au 1er octobre pour récupérer les flux RSS, j'ai voulu faire une montée de version de FreshRSS, et je me suis rendu compte que j'avais des erreurs SQL parce que la version de Postgres n'est pas supportée.
Du coup, avec cet outil, j'ai pu :
- copier le dossier de données
- faire tourner le script pour passer de 9.4 à 9.6
- remplacer le dossier de données
- on recrée le container PostgreSQL dans la bonne version
- ???
- profit
En gros ça donne
# préparation
OLD=9.4
NEW=9.6
mkdir $OLD
cp /data/postgresql-data ./9.4/data
# ici j'ai du corriger un soucis parce qu'il considérait que le serveur n'avait pas été arrêté correctement
rm 9.4/data/postmaster.pid
docker run -it --rm -v `pwd`/:/var/lib/postgresql/ tianon/postgres-upgrade:9.4-to-12 bash
> su postgres
> $PGBINOLD/pg_ctl start -w -D $PGDATAOLD
> $PGBINOLD/pg_ctl stop -w -D $PGDATAOLD
> exit
# migration
docker run --rm -v "$PWD":/var/lib/postgresql "tianon/postgres-upgrade:$OLD-to-$NEW" --link
# remplacement
mv /data/postgresql-data /data/postgresql-data.sav
cp 9.6/data /data/postgresql-data