Service de sauvegarde et de reprise après sinistre pour PostgreSQL

PostgreSQL est un système de base de données objet-relationnelle Open Source puissant qui utilise et étend le langage SQL, ainsi que de nombreuses fonctionnalités qui stockent et étendent de manière sécurisée les charges de travail de données les plus complexes.

API de sauvegarde PostgreSQL utilisée par Backup and DR

  • Sauvegardes au niveau du volume (suivi des blocs modifiés Linux et instantané LVM) : la sauvegarde et la reprise après sinistre utilisent les commandes PostgreSQL pg_start_backup(label) et pg_stop_backup() lors de la réalisation de sauvegardes avec le suivi des blocs modifiés Linux et l'instantané LVM.

  • Sauvegardes complètes et incrémentielles (traditionnelles basées sur des fichiers): la sauvegarde et la reprise après sinistre utilisent les commandes de sauvegarde basées sur des fichiers PostgreSQL pg_dump. La commande pg_dump n'a pas d'option permettant de capturer les modifications incrémentielles d'une base de données. Par conséquent, chaque sauvegarde est une sauvegarde de vidage de base de données complète.

    La restauration de la base de données la récupère en écrasant physiquement la zone de données.

  • Sauvegarde des journaux PostgreSQL: lors d'une sauvegarde des journaux, Backup and DR copie physiquement tous les WAL (WriteAheadLog) PostgreSQL. Pour purger les journaux, Backup and DR utilise une commande au niveau de l'OS.

Fonctionnement: sauvegarde et reprise après sinistre basées sur les volumes avec CBT Linux

Seuls les blocs modifiés sont suivis dans le bitmap: pas de copie lors de l'écriture, pas d'opérations gourmandes en E/S.

Les étapes suivantes décrivent le processus de sauvegarde et de récupération des données:

  1. L'agent de sauvegarde et de reprise après sinistre dispose d'un CBT pour suivre les blocs modifiés dans la zone de données de la base de données.

  2. L'agent appelle l'API de la base de données pour la congeler ou la suspendre afin de sauvegarder les données.

  3. L'agent crée un instantané LVM de la zone de données de la base de données et synthétise un bitmap.

  4. Appel de l'agent à l'API de la base de données pour dégeler la base de données.

  5. L'agent copie les blocs modifiés sur l'appareil de sauvegarde/restauration, qui supprime ensuite l'instantané et catalogue la sauvegarde.

  6. L'appliance génère un instantané interne et synthétise une sauvegarde complète virtuelle à un moment précis.

  7. Pour la récupération de données, la sauvegarde et la reprise après sinistre installent instantanément un disque d'espace de préparation réécrivable et mettent la base de données en ligne.

La commande quiesce ou unquiesce est exécutée sur le principal pour une tâche d'instantané au niveau du volume:

select pg_start_backup(<label>);
select pg_stop_backup();

Les commandes quiesce et unquiesce sont exécutées sur un nœud de secours pour une tâche d'instantané au niveau du volume:

Si la version de PostgreSQL est 10.x ou ultérieure:

select pg_wal_replay_pause();
select pg_wal_replay_resume();

Si la version de PostgreSQL est 9.x:

select pg_xlog_replay_pause();
select pg_xlog_replay_resume();

Fonctionnement: sauvegarde basée sur des fichiers

Les étapes suivantes décrivent comment effectuer la sauvegarde et la récupération de données à l'aide d'images de sauvegarde basées sur des fichiers:

  1. L'agent de sauvegarde et de reprise après sinistre est déployé sur le serveur de base de données.

  2. Montez le disque de préproduction sur le serveur de base de données.

  3. Appelez une sauvegarde complète à l'aide de la commande de sauvegarde de vidage, en écrivant la sauvegarde sur le disque monté.

  4. Backup and DR prend un instantané interne. Les sauvegardes de journaux sont effectuées de manière similaire directement à partir du système de fichiers à une fréquence que vous configurez.

  5. Pour la récupération de données, la sauvegarde et la reprise après sinistre installent instantanément le disque d'espace de préparation sur le serveur de base de données et lancent l'opération de restauration de la base de données. Les journaux peuvent être lus à n'importe quel moment après la restauration de la base de données.

Étape suivante

Préparer la base de données pour la sauvegarde et la reprise après sinistre

Autre documentation sur la sauvegarde et la reprise après sinistre pour PostgreSQL