Sauvegarde Sonarqube PostgreSQL

De EjnTricks
Révision de 4 janvier 2021 à 11:27 par Etienne (discussion | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

Cet article présente le principe de sauvegarde de la base de données PostgreSql pour Sonarqube selon le principe mis en place pour PostgreSql.

Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Folder-icon.png Mise en place

Les scripts de sauvegarde et de configuration sont stockés dans le répertoire /var/opt/backups/sonar/.

#sudo mkdir -p /var/opt/backups/sonar
#sudo chown root:backup /var/opt/backups/sonar
#sudo chmod 770 /var/opt/backups/sonar

Les sauvegardes sont placées dans le répertoire /var/opt/backups/sonar/db qu'il faut créer. Seul le compte root doit pouvoir y accéder.

#sudo mkdir /var/opt/backups/sonar/db
#sudo chown root:root /var/opt/backups/sonar/db
#sudo chmod 700 /var/opt/backups/sonar/db
#sudo setfacl -Rdm g::0,o::0 /var/opt/backups/sonar/db

La dernière commande va permettre de forcer les permissions sur le répertoires et les éléments qui y seront créés.

User-icon.png Utilisateur

Dans la cadre de la procédure de backup, le compte backup, ayant le rôle viewers, est utilisé au niveau de PostgreSql comme mentionné au niveau du principe de backup. Il est donc nécessaire de modifier les droits par défaut. L'application se connectant avec le compte sonar, il est donc nécessaire de se connecter à la base sonarqube avec celui-ci.

# psql -d sonarqube -U sonar -h 127.0.0.1
sonarqube=> ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO viewers;
ALTER DEFAULT PRIVILEGES
sonarqube=> GRANT SELECT ON ALL TABLES IN schema public TO viewers;
GRANT

Command-icon.png Scripts

Le script, fichier /var/opt/backups/sonar/sonar_autopostgresqlbackup.sh, mis en place permet d'exécuter les outils de sauvegarde d'une base de données PostgreSql en spécifiant l'emplacement du fichier de configuration, à l'emplacement /var/opt/backups/sonar/sonar_autopostgresqlbackup.conf en redirigeant les messages d'exécution dans le fichier /var/log/backups/sonar_backup_db.log. En fin d'exécution, le script sh /var/opt/backups/sonar/sonar_backup.sh est exécuté pour déclencher la sauvegarde des fichiers avec Duplicity.

#!/bin/bash
/var/opt/autopostgresqlbackup/pg_backup_rotated.sh -c /var/opt/backups/sonar/sonar_autopostgresqlbackup.conf >> /var/log/backups/sonar_backup_db.log
sh /var/opt/backups/sonar/sonar_backup.sh


Icon-Configuration-Settings.png Configuration

La configuration de l'outil de sauvegarde est mis en place dans le fichier /var/opt/backups/sonar/sonar_autopostgresqlbackup.conf.

##############################
## POSTGRESQL BACKUP CONFIG ##
##############################

# Optional system user to run backups as.  If the user the script is running as doesn't match this
# the script terminates.  Leave blank to skip check.
BACKUP_USER=

# Optional hostname to adhere to pg_hba policies.  Will default to "localhost" if none specified.
HOSTNAME=

# Optional username to connect to database as.  Will default to "postgres" if none specified.
USERNAME=backup

# This dir will be created if it doesn't exist.  This must be writable by the user the script is
# running as.
BACKUP_DIR=/var/opt/backups/sonar/db/

# List of strings to match against in database name, separated by space or comma, for which we
# perform backup of the schema.
SCHEMA_FILTER="sonarqube" 

# List of strings to match against in database name, separated by space or comma, for which we only
# wish to keep a backup of the schema, not the data. Any database names which contain any of these
# values will be considered candidates. (e.g. "system_log" will match "dev_system_log_2010-01")
SCHEMA_ONLY_LIST=""

# Will produce a custom-format backup if set to "yes"
ENABLE_CUSTOM_BACKUPS=yes

# Will produce a gzipped plain-format backup if set to "yes"
#ENABLE_PLAIN_BACKUPS=yes
ENABLE_PLAIN_BACKUPS=no

# Will produce gzipped sql file containing the cluster globals, like users and passwords, if set to "yes"
#ENABLE_GLOBALS_BACKUPS=yes
ENABLE_GLOBALS_BACKUPS=no


#### SETTINGS FOR ROTATED BACKUPS ####

# Which day to take the weekly backup from (1-7 = Monday-Sunday)
DAY_OF_WEEK_TO_KEEP=7

# Number of days to keep daily backups
DAYS_TO_KEEP=7

# How many weeks to keep weekly backups
WEEKS_TO_KEEP=1

######################################

Les éléments de configuration sont les suivants.

Paramètre Valeur
BACKUP_USER
HOSTNAME
USERNAME backup

Utilisation du compte backup dans la base PostgreSql.

BACKUP_DIR /var/opt/backups/sonar/db/

Emplacement des fichiers produits par la sauvegarde de la base de données.

SCHEMA_FILTER "sonarqube"

Filtre sur uniquement le schéma sonarqube.

SCHEMA_ONLY_LIST
ENABLE_CUSTOM_BACKUPS yes

Demande de sauvegarde au format custom.

ENABLE_PLAIN_BACKUPS no

Pas de sauvegarde au format texte.

ENABLE_GLOBALS_BACKUPS no

Pa de sauvegarde des paramètres globaux. Identifiant du jour lors duquel la rotation hebdomadaire est réalisée.

DAY_OF_WEEK_TO_KEEP 7

Rotation hebdomadaire le dimanche.

DAYS_TO_KEEP 7

Conservation de 7 jours de sauvegardes journalières.

WEEKS_TO_KEEP 1

Conservation d'une seule semaine de sauvegarde hebdomadaire.

Lock-off-icon.png Droits d'accès

Les droits mis en place permettent de modifier et exécuter le script pour le propriétaire. Le groupe ne doit pas pouvoir modifier les fichiers

#sudo chmod 750 /var/opt/backups/sonar/sonar_autopostgresqlbackup.sh
#sudo chmod 640 /var/opt/backups/sonar/sonar_autopostgresqlbackup.conf