Utilisation de scripts pour la sauvegarde et la restauration de la base de données PostgreSQL
Les scripts suivants sont disponibles pour effectuer une sauvegarde de la base de données PostgreSQL. Lors de l'exécution des scripts, il n'est pas nécessaire d'arrêter votre base de données pour effectuer une sauvegarde.
- postgresql_backup_pre.sh : ce script bascule la base de données en mode de sauvegarde.
- postgresql_snapshot_post. sh : ce script retire la base de données du mode de sauvegarde.
- postgresql_settings : fichier de configuration dans lequel les variables PostgreSQL doivent peut-être être mises à jour.
- postgresql_backup_post.sh : ce script met à jour le statut de la sauvegarde dans le journal.
Conditions préalables
Avant de lancer la sauvegarde, assurez-vous de ce qui suit :
- Le niveau WAL est défini sur archive (et non sur hot_standby).
- archive_mode est défini sur on.
- archive_command est défini pour spécifier l'emplacement d'archivage.
Remarque : Pour appliquer les paramètres, redémarrez le serveur après avoir configuré ces paramètres dans le fichier postgresql.conf.
Les commandes suivantes permettent de vérifier l'état du mode d'archivage après le redémarrage :
- show archive_mode
- show archive_command
- show WAL level
Application de scripts
Procédez comme suit :
- Extrayez l'archive LinuxPostgres.zip qui contient les quatre fichiers suivants : postgresql_backup_pre.sh, postgresql_snapshot_post.sh, postgresql_settings, postgresql_backup_post.sh
- Copiez les fichiers depuis pre/post backup/snapshot vers le chemin d'accès /opt/Arcserve/d2dserver/usr/prepost sur le serveur de sauvegarde Linux.
- Copiez le fichier postgresql_settings dans le chemin d'accès source /root/backup.
- Assurez-vous de vérifier que toutes les valeurs définies pour les variables sont correctes dans le fichier postgresql_settings et apportez les modifications nécessaires pour votre environnement.
- Configurez un plan basé sur un agent à partir de la console UDP et sélectionnez le noeud PostgreSQL comme source.
-
- Confirmez l'état de sauvegarde. Pour connaître l'état de la sauvegarde PostgreSQL, reportez-vous au fichier arcserve_postgresql_backup_${DATE}.log. Ce fichier journal est créé sous le répertoire, qui est défini par l'utilisateur. Pour plus d'informations sur la configuration du répertoire, reportez-vous au fichier postgresql_settings.
Restauration de la base de données PostgreSQL
Procédez comme suit :
- Arrêtez le serveur de base de données.
- Pour effectuer une restauration vers l'emplacement d'origine, procédez comme suit :
- Supprimez les fichiers et les répertoires du dossier /data actuel.
- Restaurez le dossier /data dans sa totalité.
- Supprimez les fichiers des dossiers suivants à l'issue de la restauration à partir du dossier /data :
- pg_dynshmem/
- pg_notify/
- pg_serial/
- pg_snapshots/
- pg_stat_tmp/
- pg_subtrans/
- pg_internal.init
- Accédez au dossier configuré pour l'archivage WAL et procédez comme suit :
- Supprimez les fichiers présents dans le répertoire pg_wal restauré, qui contient les informations relatives aux transactions effectuées lors de la sauvegarde.
- Copiez les fichiers depuis l'emplacement d'archivage défini par l'utilisateur vers le dossier pg_wal, afin de garantir la cohérence des données et la récupération à un point dans le temps.
- Démarrez le serveur de base de données.
Restauration vers un autre emplacement sur le même serveur
- Arrêtez le serveur de base de données.
- Exécutez le répertoire PGDATA en le configurant sur new_data_directory_path.
- Initialisez la base de données nouvellement créée à l'aide de la commande Initdb.
- Supprimez les fichiers et les répertoires du dossier /data actuel.
- Restaurez le dossier /data dans sa totalité.
- Supprimez les fichiers des dossiers suivants à l'issue de la restauration à partir du dossier /data :
- pg_dynshmem/
- pg_notify/
- pg_serial/
- pg_snapshots/
- pg_stat_tmp/
- pg_subtrans/
- pg_internal.init
- Accédez au dossier configuré pour l'archivage WAL et procédez comme suit :
- Supprimez les fichiers présents dans le répertoire pg_wal restauré, qui contient les informations relatives aux transactions effectuées lors de la sauvegarde.
- Copiez les fichiers depuis l'emplacement d'archivage défini par l'utilisateur vers le dossier pg_wal, afin de garantir la cohérence des données et la récupération à un point dans le temps.
- Démarrez le serveur de base de données.
- Remarque : Assurez-vous que le démarrage de la base de données est effectué dans la session dans laquelle le répertoire PGDATA est mis à jour.
Restrictions
Les scripts ci-dessus ne permettent pas d'effectuer une sauvegarde si la base de données PostgreSQL est configurée avec un port autre que celui par défaut. Les scripts fonctionnent uniquement avec le numéro de port par défaut 5432.
Pour contourner ce problème, suivez les recommandations ci-dessous afin de modifier manuellement les scripts postgresql_backup_pre.sh et postgresql_snapshot_post.sh :
- postgresql_backup_pre.sh :
- D'origine : sudo -u ${USERNAME} -H -- psql -p 5432 -c "SELECT pg_start_backup('Arcserve UDP backup - ${DATE} $(timestamp)', true)" >> ${LOG} 2>&1
- Modifié : sudo -u ${USERNAME} -H -- psql -p 5432 -c "SELECT pg_start_backup('Arcserve UDP backup - ${DATE} $(timestamp)', true)" >> ${LOG} 2>&1
- postgresql_snapshot_post.sh :
- D'origine : sudo -u ${USERNAME} -H -- psql -c "SELECT pg_stop_backup()" >> ${LOG} 2>&1
- Modifié : sudo -u ${USERNAME} -H -- psql -p 5432 -c "SELECT pg_stop_backup()" >> ${LOG} 2>&1