Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration PostgreSQL Discussion :

archive_command en environnement docker


Sujet :

Administration PostgreSQL

  1. #1
    Rédacteur/Modérateur

    archive_command en environnement docker
    Aussitôt le achive_mode passé à on, nous avons les journaux (wal) qui déboulent dans $PGDATA/pg_wal
    Il convient donc de les copier ailleurs afin de les sauvegarder, et cela se fait habituellement grace au paramètre archive_command.

    En environnement dockerisé, cette façon de faire se corse un peu.

    Dans mon container docker, j'ai donc
    /var/lib/postgresql/data/pg_wal contenant mes wal

    J'ai externalisé mon PGDATA via mon fichier docker-compose, ainsi que le répertoire dans lequel je souhaite copier mes wal

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
      volumes:
          - /DBData/iamictv:/var/lib/postgresql/data:Z
          - /DBData/wal:/var/lib/postgresql/wal:Z


    Si je passe le paramètre
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    archive_command = 'cp %p /DBData/wal/MonInstance_%f'

    je vais logiquement me retrouver avec un message d'erreur
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    cp: cannot create regular file '/DBData/wal/inst1_000000010000000000000028': No such file or directory
    2020-05-06 10:44:16.983 CEST [29] LOG:  archive command failed with exit code 1


    Cela me semble assez logique car c'est Postgresql qui initie la commande cp depuis l'intérieur du container... et le container ne connais pas /DBData... C'et donc dans cette même logique que je modifie mon postgresql.conf de telle sorte
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
     archive_command = 'cp %p /var/lib/postgresql/wal/inst1_%f'

    ... et là, bizarre... le chemin semble être trouvé, mais avec un problème de permission
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    2020-05-06 10:46:04.538 CEST [30] DETAIL:  The failed archive command was: cp pg_wal/00000001000000000000002A /var/lib/postgresql/wal/inst_00000001000000000000002A
    cp: failed to access '/var/lib/postgresql/wal/iamictv_00000001000000000000002A': Permission denied


    si je me situe dans le container et que je joue l'ordre de copie, tout se passe pourtant bien (pas trop étonnant puisque je suis root)

    Pourtant, autant mon /DBData/wal semble avoir des droits suffisants
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    drw-rw-rw-.  2 systemd-bus-proxy root    46 May  6 10:39 wal

    autant il semble en être de même à l'intérieur du container
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [root@postgresql-t01 inst1]# docker exec -it inst1 bash
    root@2cbfa089fb65:/# ls -l /var/lib/postgresql/
    total 4
    drwx------. 19 postgres root 4096 May  6 10:57 data
    drw-rw-rw-.  2 postgres root   46 May  6 10:39 wal
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  2. #2
    Rédacteur/Modérateur

    Trouvé !
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !