PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 03/06/2020 15:16:54

pgBackRest - ERROR: [070]

Bonjour,

je viens de déployer pgBackRest sur une instance de test.
Mon paramétrage:

pgBackRest version: 2.26

PostgreSQL version: 9.3.25

Operating system/version: Debian 8.11

Did you install pgBackRest from source or from a package? Package

pgbackrest.conf file(s):

[global]
repo1-path=/media/backup/pgbackrest
repo1-retention-full=2
process-max=1
log-level-console=info
log-level-file=detail
start-fast=y

[global:archive-push]
compress-level=1

[main]
pg1-path=/axihome/base2/postgresdata

postgresql.conf file :

data_directory = '/axihome/base2/postgresdata'
hba_file = '/etc/postgresql/9.3/main/pg_hba.conf'
ident_file = '/etc/postgresql/9.3/main/pg_ident.conf'
wal_level = archive
archive_mode = on
archive_command = 'pgbackrest --stanza=main archive-push %p'
archive_timeout = 600


/var/log/pgbackrest/main_backup.log

2020-06-02 23:41:54.948 P00 INFO: backup command begin 2.26: --log-level-console=info --log-level-file=detail --pg1-path=/axihome/base2/postgresdata --process-max=1 --repo1-path=/media/backup/pgbackrest --repo1-retention-full=2 --stanza=main --start-fast --type=full
2020-06-02 23:41:55.560 P00 INFO: execute exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes
2020-06-02 23:41:56.061 P00 INFO: backup start archive = 000000020000025D0000004D, lsn = 25D/4D000028
2020-06-02 23:41:56.313 P00 ERROR: [070]: link 'pg_tblspc/16432' destination '/axihome/base2/postgresdata/axidata' is in PGDATA
2020-06-02 23:41:56.313 P00 INFO: backup command end: aborted with exception [070]

L'archivage des WAL fonctionne sans soucis

Au lancement manuel du backup :

postgres@DPICHCDBTST:~$ pgbackrest --stanza=main --type=full backup
2020-06-02 23:41:54.948 P00 INFO: backup command begin 2.26: --log-level-console=info --log-level-file=detail --pg1-path=/axihome/base2/postgresdata --process-max=1 --repo1-path=/media/backup/pgbackrest --repo1-retention-full=2 --stanza=main --start-fast --type=full
2020-06-02 23:41:55.560 P00 INFO: execute exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes
2020-06-02 23:41:56.061 P00 INFO: backup start archive = 000000020000025D0000004D, lsn = 25D/4D000028
ERROR: [070]: link 'pg_tblspc/16432' destination '/axihome/base2/postgresdata/axidata' is in PGDATA
2020-06-02 23:41:56.313 P00 INFO: backup command end: aborted with exception [070]


Une idée du pourquoi le backup ne s'exécute pas à cause du lien 'pg_tblspc/16432' (présent dans '/axihome/base2/postgresdata/pg_tblspc') qui pointe sur '/axihome/base2/postgresdata/axidata'  ???

Hors ligne

#2 03/06/2020 15:25:25

Marc Cousin
Membre

Re : pgBackRest - ERROR: [070]

Le répertoire cible d'un tablespace ne devrait pas être dans le PGDATA. Sinon vous courrez le risque de le backuper deux fois, d'avoir le système de backup qui écrase les mauvais fichiers, etc… c'est pour ça que pgbackrest refuse de backuper. Mieux vaut vous alerter maintenant.

À moins que axidata soit un point de montage vers un autre filesystem, ce tablespace n'a aucun intérêt pour postgres de toutes façons, le but d'un tablespace sous postgres, c'est juste de pouvoir utiliser un système de fichiers différent (sur un type de stockage différent par exemple) pour certains objets. Donc deux possibilités pour résoudre votre problème:
- soit axidata est un point de montage. Dans ce cas là, arrêtez l'instance, remontez le ailleurs, qui ne soit pas un sous répertoire de /axihome/base2/postgresdata/, et mettez à jour le lien symbolique (techniquement le tablespace n'est qu'un lien symbolique) de 'pg_tblspc/16432 pour pointer vers la nouvelle destination
- soit c'est juste un répertoire. dans ce cas, il ne sert vraiment à rien, vous allez plus vous compliquer la vie qu'autre chose. ramenez les objets dans le tablespace par défaut, supprimez le tablespace. ça a un sens sous oracle par exemple, parce qu'il gère des datafiles, sous postgres ça ne sert à rien.


Marc.

Hors ligne

#3 03/06/2020 16:08:10

Re : pgBackRest - ERROR: [070]

Notre prestataire est allé mettre des Databases, des Tables, des Séquences et des Index dans les tablespaces sad
Mais ils sont bien dans le même filesystem...

/axihome/base2/postgresdata/pg_tblspc
|
--16432 ==> /axihome/base2/postgresdata/axidata
|
---16433 ==> /axihome/base2/postgresdata/axiindex
|
----16434 ==> /axihome/base2/postgresdata/connectdata
|
-----16435 ==> /axihome/base2/postgresdata/connectindex
|
------16436 ==> /axihome/base2/postgresdata/axiccam


Or les 2 databases de l'instances sont:

CREATE DATABASE "AXIBASE"
    WITH
    OWNER = postgres
    ENCODING = 'UTF8'
    LC_COLLATE = 'fr_FR.UTF-8'
    LC_CTYPE = 'fr_FR.UTF-8'
    TABLESPACE = axidata
    CONNECTION LIMIT = -1;

CREATE DATABASE "CONNECT"
    WITH
    OWNER = postgres
    ENCODING = 'UTF8'
    LC_COLLATE = 'fr_FR.UTF-8'
    LC_CTYPE = 'fr_FR.UTF-8'
   TABLESPACE = connectdata
    CONNECTION LIMIT = -1;

Je vais voir avec le prestataire l'intérêt de ces tablespaces et éventuellement s'ils sont OK pour les supprimer.

Hors ligne

#4 03/06/2020 17:16:53

Marc Cousin
Membre

Re : pgBackRest - ERROR: [070]

ça sent le portage 1:1 d'Oracle, c'est une pratique habituelle, séparer les data et les index dans des schémas différents


Marc.

Hors ligne

#5 03/06/2020 20:08:16

Re : pgBackRest - ERROR: [070]

Bien vu Monsieur est un connaisseur wink

J'ai posté (bien avant ici) sur le Github de pgBackRest, et la réponse est similaire:


A tablespace may not be located inside PGDATA (data_directory setting). PostgreSQL will warn in this case:

    /* Warn if the tablespace is in the data directory. */
    if (path_is_prefix_of_path(DataDir, location))
        ereport(WARNING,
                (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
                 errmsg("tablespace location should not be inside the data directory")));
but we treat it as an error. Resolving and remapping these types of links during a restore can be very confusing for the user and therefore error prone.

In short -- move the tablespace link destination outside of PGDATA.

Hors ligne

Pied de page des forums