Recherche de site Web

Comment sauvegarder/restaurer MySQL/MariaDB et PostgreSQL à l'aide des outils « Automysqlbackup » et « Autopostgresqlbackup »


Si vous êtes un administrateur de bases de données (DBA) ou si vous êtes responsable de la maintenance, de la sauvegarde et de la restauration des bases de données, vous savez que vous ne pouvez pas vous permettre de perdre des données. La raison est simple : la perte de données signifie non seulement la perte d’informations importantes, mais peut également nuire financièrement à votre entreprise.

Pour cette raison, vous devez toujours vous assurer que :

1. vos bases de données sont sauvegardées périodiquement,
2. ces sauvegardes sont stockées dans un endroit sûr, et
3. vous effectuez régulièrement des exercices de restauration.

Cette dernière activité ne doit pas être négligée, car vous ne voulez pas vous retrouver face à un problème majeur sans avoir pratiqué ce qui doit être fait dans une telle situation.

Dans ce tutoriel, nous allons vous présenter deux utilitaires intéressants pour sauvegarder respectivement les bases de données MySQL/MariaDB et PostgreSQL : automysqlbackup et autopostgresqlbackup.

Puisque ce dernier est basé sur le premier, nous concentrerons notre explication sur automysqlbackup et soulignerons les différences avec autopgsqlbackup, le cas échéant.

Il est fortement recommandé de stocker les sauvegardes dans un partage réseau monté dans le répertoire de sauvegarde afin qu'en cas de panne à l'échelle du système, vous soyez toujours couvert.

Lisez les guides utiles suivants sur MySQL :

Installation des bases de données MySQL/MariaDB/PostgreSQL

1. Ce guide suppose que vous devez avoir une instance MySQL/MariaDB/PostgreSQL en cours d'exécution. Sinon, veuillez l'installer. les forfaits suivants :

Distributions basées sur Fedora :

yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs

Debian et dérivés :

aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common

2. Vous disposez d'une base de données de test MySQL/MariaDB/PostgreSQL que vous pouvez utiliser (il est conseillé de < strong style="color:red">NE PAS utiliser automysqlbackup ou autopostgresqlbackup dans un environnement de production tant que vous n'êtes pas familiarisé avec ces outils).

Sinon, créez deux exemples de bases de données et remplissez-les avec des données avant de continuer. Dans cet article, j'utiliserai les bases de données et tables suivantes :

CREATE DATABASE mariadb_db;
CREATE TABLE tecmint_tbl (UserID INT AUTO_INCREMENT PRIMARY KEY, 
UserName VARCHAR(50), 
IsActive BOOL);

CREATE DATABASE postgresql_db;
CREATE TABLE tecmint_tbl (
UserID SERIAL PRIMARY KEY,
UserName VARCHAR(50),
IsActive BOOLEAN);

Installation d'automysqlbackup et autopgsqlbackup dans CentOS 7 et Debian 8

3. Dans Debian 8, les deux outils sont disponibles dans les dépôts, donc les installer est aussi simple que de les exécuter :

aptitude install automysqlbackup autopostgresqlbackup

Alors que dans CentOS 7, vous devrez télécharger les scripts d'installation et les exécuter. Dans les sections ci-dessous, nous nous concentrerons exclusivement sur l'installation, la configuration et le test de ces outils sur CentOS 7 puisque pour Debian 8 – où ils fonctionnent presque immédiatement, nous allons apporter les précisions nécessaires plus loin dans cet article.

Installation et configuration d'automysqlbackup dans CentOS 7

4. Commençons par créer un répertoire de travail dans /opt pour télécharger le script d'installation et l'exécuter :

mkdir /opt/automysqlbackup
cd /opt/automysqlbackup
wget http://ufpr.dl.sourceforge.net/project/automysqlbackup/AutoMySQLBackup/AutoMySQLBackup%20VER%203.0/automysqlbackup-v3.0_rc6.tar.gz
tar zxf automysqlbackup-v3.0_rc6.tar.gz
./install.sh

5. Le fichier de configuration de automysqlbackup se trouve dans /etc/automysqlbackup sous le nom myserver.conf. Jetons un coup d'œil aux directives de configuration les plus pertinentes :

Username to access the MySQL server
CONFIG_mysql_dump_username='root'
Password
CONFIG_mysql_dump_password='YourPasswordHere'
Host name (or IP address) of MySQL server
CONFIG_mysql_dump_host='localhost'
Backup directory
CONFIG_backup_dir='/var/backup/db/automysqlbackup'
List of databases for Daily/Weekly Backup e.g. ( 'DB1' 'DB2' 'DB3' ... )
set to (), i.e. empty, if you want to backup all databases
CONFIG_db_names=(AddYourDatabase Names Here)
List of databases for Monthly Backups.
set to (), i.e. empty, if you want to backup all databases
CONFIG_db_month_names=(AddYourDatabase Names Here)
Which day do you want monthly backups? (01 to 31)
If the chosen day is greater than the last day of the month, it will be done
on the last day of the month.
Set to 0 to disable monthly backups.
CONFIG_do_monthly="01"
Which day do you want weekly backups? (1 to 7 where 1 is Monday)
Set to 0 to disable weekly backups.
CONFIG_do_weekly="5"
Set rotation of daily backups. VALUE*24hours
If you want to keep only today's backups, you could choose 1, i.e. everything older than 24hours will be removed.
CONFIG_rotation_daily=6
Set rotation for weekly backups. VALUE*24hours. A value of 35 means 5 weeks.
CONFIG_rotation_weekly=35
Set rotation for monthly backups. VALUE*24hours. A value of 150 means 5 months.
CONFIG_rotation_monthly=150
Include CREATE DATABASE statement in backup?
CONFIG_mysql_dump_create_database='no'
Separate backup directory and file for each DB? (yes or no)
CONFIG_mysql_dump_use_separate_dirs='yes'
Choose Compression type. (gzip or bzip2)
CONFIG_mysql_dump_compression='gzip'
What would you like to be mailed to you?
- log   : send only log file
- files : send log file and sql files as attachments (see docs)
- stdout : will simply output the log to the screen if run manually.
- quiet : Only send logs if an error occurs to the MAILADDR.
CONFIG_mailcontent='quiet'
Email Address to send mail to? ([email )
CONFIG_mail_address='root'
Do you wish to encrypt your backups using openssl?
#CONFIG_encrypt='no'
Choose a password to encrypt the backups.
#CONFIG_encrypt_password='password0123'
Command to run before backups (uncomment to use)
#CONFIG_prebackup="/etc/mysql-backup-pre"
Command run after backups (uncomment to use)
#CONFIG_postbackup="/etc/mysql-backup-post"

Une fois que vous avez configuré automysqlbackup selon vos besoins, il est fortement conseillé de consulter le fichier README trouvé dans /etc/automysqlbackup/README.

Sauvegarde de la base de données MySQL

6. Lorsque vous êtes prêt, lancez le programme en passant le fichier de configuration en argument :

automysqlbackup /etc/automysqlbackup/myserver.conf

Une inspection rapide du répertoire quotidien montrera que automysqlbackup s'est exécuté avec succès :

pwd
ls -lR daily

Bien sûr, vous pouvez ajouter une entrée crontab pour exécuter automysqlbackup à l'heure de la journée qui correspond le mieux à vos besoins (1h30 tous les jours dans l'exemple ci-dessous) :

30 01 * * * /usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf

Restaurer une sauvegarde MySQL

7. Maintenant, supprimons volontairement la base de données mariadb_db :

Créons-le à nouveau et restaurons la sauvegarde. Dans l'invite MariaDB, tapez :

CREATE DATABASE mariadb_db;
exit

Localisez ensuite :

cd /var/backup/db/automysqlbackup/daily/mariadb_db
ls

Et restaurez la sauvegarde :

mysql -u root -p mariadb_db < daily_mariadb_db_2015-09-01_23h19m_Tuesday.sql
mysql -u root -p
MariaDB [(none)]> USE mariadb_db; 
MariaDB [(none)]> SELECT * FROM tecmint_tb1;

Installation et configuration d'autopostgresqlbackup dans CentOS 7

8. Pour que autopostgresql fonctionne parfaitement dans CentOS 7, nous devrons d'abord installer certaines dépendances :

yum install mutt sendmail

Répétons ensuite le processus comme précédemment :

mkdir /opt/autopostgresqlbackup
cd /opt/autopostgresqlbackup
wget http://ufpr.dl.sourceforge.net/project/autopgsqlbackup/AutoPostgreSQLBackup/AutoPostgreSQLBackup-1.0/autopostgresqlbackup.sh.1.0
mv autopostgresqlbackup.sh.1.0 /opt/autopostgresqlbackup/autopostgresqlbackup.sh

Rendons le script exécutable et démarrons/activons le service :

chmod 755 autopostgresqlbackup.sh
systemctl start postgresql
systemctl enable postgresql

Enfin, nous modifierons la valeur du paramètre du répertoire de sauvegarde comme suit :

BACKUPDIR="/var/backup/db/autopostgresqlbackup"

Après avoir parcouru le fichier de configuration de automysqlbackup, la configuration de cet outil est très simple (cette partie de la tâche vous est laissée).

9. Dans CentOS 7, contrairement à Debian 8, il est préférable d'exécuter autopostgresqlbackup en tant que postgres. utilisateur du système, donc pour ce faire, vous devez soit basculer vers ce compte, soit ajouter une tâche cron à son fichier crontab :

crontab -u postgres -e
30 01 * * * /opt/autopostgresqlbackup/autopostgresqlbackup.sh

Soit dit en passant, le répertoire de sauvegarde doit être créé et ses autorisations ainsi que la propriété du groupe doivent être définies de manière récursive sur 0770 et postgres (encore une fois, cela ne sera PAS nécessaire dans Debian) :

mkdir /var/backup/db/autopostgresqlbackup
chmod -R 0770 /var/backup/db/autopostgresqlbackup
chgrp -R postgres /var/backup/db/autopostgresqlbackup

Le résultat:

cd /var/backup/db/autopostgresqlbackup
pwd
ls -lR daily

10. Vous pouvez désormais restaurer les fichiers si nécessaire (n'oubliez pas de le faire en tant qu'utilisateur postgres après avoir recréé la base de données vide) :

gunzip -c postgresql_db_2015-09-02.Wednesday.sql.gz | psql postgresql_db

Considérations dans Debian 8

Comme nous l'avons mentionné précédemment, non seulement l'installation de ces outils dans Debian est plus simple, mais aussi leurs configurations respectives. Vous trouverez les fichiers de configuration dans :

  1. Automysqlbackup : /etc/default/automysqlbackup
  2. Autopostgresqlbackup : /etc/default/autopostgresqlbackup

Résumé

Dans cet article, nous avons expliqué comment installer et utiliser automysqlbackup et autopostgresqlbackup (apprendre à utiliser le premier vous aidera également à maîtriser le second), deux excellents outils de sauvegarde de base de données. des outils qui peuvent rendre vos tâches en tant qu'administrateur de base de données ou administrateur/ingénieur système beaucoup plus faciles.

Veuillez noter que vous pouvez développer ce sujet en configurant des notifications par e-mail ou en envoyant des fichiers de sauvegarde sous forme de pièces jointes par e-mail – ce n'est pas strictement obligatoire, mais peut parfois s'avérer utile.

Pour finir, n'oubliez pas que les autorisations des fichiers de configuration doivent être définies au minimum (0600 dans la plupart des cas). Nous sommes impatients de savoir ce que vous pensez de cet article. N'hésitez pas à nous envoyer un message en utilisant le formulaire ci-dessous.