Migration de la base Peertube PostgreSQL dans une jail


Comment migrer la base PostgreSQL dans la jail PostgreSQL

Tout comme nous avons fait en sorte que Mastodon utilise l’installation de PostgreSQL présente dans une jail dédié, nous allons faire en sorte que Peertube (qui tourne déjà dans une jail), utilise la même installation de PostgreSQL, afin de mutualiser les ressources.

Préparation sur la jail PostgreSQL

Nous devons préparer le terrain sur la jail PostgreSQL en créant l’utilisateur peertube, le rôle peertube (dans PostgreSQL) et en autorisant les connexions venant de la jail Peertube vers notre installation de PostgreSQL. Nous allons en fait suivre le début de l’article sur l’installation de peertube das une jail.

Création de l’utilisateur peertube

Nous allons utiliser la commande pw pour créer notre utilisateur peertube et son mot de passe

# pw useradd -n peertube -c "Peertube user" -s /bin/csh -m -w random
Password for 'peertube' is: <random generated password>

 pensez à noter dans votre gestionnaire de mot de passe celui que le système a généré pour vous. Pour plus d’information sur la commande pw, reférez vous à la page man de la commande pw(8)  si la commande pw vous semble trop complexe, vous pouvez utiliser la commande interactive adduser.

Création du rôle peertube

La base de donnée PostgreSQL a besoin d’un rôle spécifique qui a accès aux tables peertube.

root@postgres:~ # sudo -u postgres createuser -P peertube
Enter password for new role: 
Enter it again: 
$ sudo -u postgres createdb -O peertube peertube_prod

 Tout comme pour le mot de passe de l’utilisateur, pensez à sauvegarder celui-ci dans votre gestionnaire de mot de passe. Nous avons créé le rôle, la base de donnée et donné les droits sur cette base à notre rôle. Et nous pouvons vérifier que tout c’est correctement déroulé :

# sudo -u postgres psql
psql (9.6.8)
Type "help" for help.

postgres=# \l
                                  List of databases
        Name         |  Owner   | Encoding | Collate | Ctype |   Access privileges   
---------------------+----------+----------+---------+-------+-----------------------
 mastodon_production | mastodon | UTF8     | C       | C     | 
 peertube_prod       | peertube | UTF8     | C       | C     | 
 postgres            | postgres | UTF8     | C       | C     | 
 template0           | postgres | UTF8     | C       | C     | =c/postgres          +
                     |          |          |         |       | postgres=CTc/postgres
 template1           | postgres | UTF8     | C       | C     | =c/postgres          +
                     |          |          |         |       | postgres=CTc/postgres
 test_db             | postgres | UTF8     | C       | C     | 
(6 rows)

postgres=# \q

Autorisation de connexion à la base via le réseau

Tout comme nous l’avions fait pour mastodon, nous allons donner un mot de passe au rôle peetube et autoriser la connexion via le réseau à la base peertube_prod.

Autoriser la connexion réseau à la base peertube_prod

Cela se trouve dans le fichier /var/db/postgresql/data96/pg_hba.conf :

host    peertube_prod     peertube        192.168.12.0/24 md5

 nous commençons par autoriser tout le réseau des jails 192.168.12.0/24. Nous affinerons une fois que tout foncionnera comme prévu.  il faut bien sûr recharger posgresql pour que les modifictions soient prises en compte.

# sudo -u postgres pg_ctl reload -D /var/db/postgres/data96/
server signaled

Sur la jail Peertube

Il est temps de vérifier que la connexion entre le deux jails se fait bien pour ce qui est de postgreSQL: :

root@peertube:~ # psql -h 192.168.12.3 -d peertube_prod -U peertube
Password for user peertube: 
psql (9.6.8)
Type "help" for help.

peertube_prod=> \q
root@peertube:~ #

On dirait que c’est gagné.

Migration de la base peertube

Arrêt de peertube

Pour éviter tout risque de modification de peertube pendant la migration, nous allons en arrêter les processus :

root@peertube:~ # service peertube stop
Stopping peertube.
Waiting for PIDS: 6462.

Backup de la base de données peertube_prod

C’est une sauvegrade de la base de données qui va nous permettre la migration :

# sudo -u peertube pg_dump -Fc peertube_prod > /tmp/peertube_prod-2018-07-27.db

Copie sur la jail PostgreSQL

Il faut copier notre fichier de sauvegarde sur la jail postgres :

# scp -P 2223 /tmp/peertube_prod-2018-07-27.db 192.168.12.3:/tmp/.

Import dans la base peertube_prod sur la jail postgres

Et nous allons pouvoir procéder à l’import de notre sauvegarde dans la nouvelle base de données :

# su - peertube
# pg_restore -d peertube_prod /tmp/peertube_prod-2018-07-27.db
--
-- PostgreSQL database dump complete
--

 il apparait que l’import se fait beaucoup plus rapidement s’il n’y a pas d’autres accès à la base. Je vous conseille d’arrêter mastodon, le temps de l’import des données de peertube

Arrêt de postgreSQL sur la jail peertube

root@peertube:~ # service postgresql stop

Changement de l’accès à la base de données

Il faut indiquer à peertube les nouvelles coordonnées de la base de données.

1
2
3
4
5
6
7
# Your database name will be "peertube"+database.suffix
database:
  hostname: '192.168.12.3'
  port: 5432
  suffix: '_prod'
  username: 'peertube'
  password: 'motdepasse'

Redémarrage de peertube

Et ensuite redémarrer peertube.

1
# service peertube start

Si vous avez arrêté d’autres services clients de votre base postgreSQL, pensez à les redémarrer à leur tour. Il ne vous reste qu’à tester votre connexion à l’instance peertube.

Conclusion

Nous avons mutualisé les ressources de PostgreSQL en utilisant l’installation de la jail du même nom pour deux logiciels. Nous allons aussi pouvoir mutualiser la base de données redis et sans doute mongodb. Cela complique un peu les installations des logiciels, mais cela diminue les ressources nécessaires pour les faire fonctionner. Plus tard, quand nous seront sur de notre affaire, il sera possible de supprimer postgresql95-server de la jail peertube.

powered by FreeBSD