GNU/Linux >> Tutoriels Linux >  >> Debian

Comment sauvegarder des bases de données MySQL avec mylvmbackup sur Debian Squeeze

mylvmbackup est un script Perl permettant de créer rapidement des sauvegardes MySQL. Il utilise la fonction d'instantané de LVM pour ce faire. Pour effectuer une sauvegarde, mylvmbackup obtient un verrou en lecture sur toutes les tables et vide tous les caches du serveur sur le disque, crée un instantané du volume contenant le répertoire de données MySQL et déverrouille à nouveau les tables. Cet article montre comment l'utiliser sur un serveur Debian Squeeze.

Je n'émets aucune garantie que cela fonctionnera pour vous !

1 Remarque préliminaire

Je suppose que MySQL est déjà configuré et en cours d'exécution sur votre système. Le système doit utiliser LVM et le répertoire de données MySQL (/var/lib/mysql) doit avoir sa propre partition LVM (bien que cela soit facultatif).

Si vous avez lu Sauvegarder (et restaurer) des partitions LVM avec des instantanés LVM, vous savez que les instantanés LVM nécessitent une partition LVM inutilisée pour l'instantané. Mon système de test a un deuxième disque dur actuellement inutilisé /dev/sdb qui sera utilisé par mylvmbackup pour créer un volume logique temporaire pour la sauvegarde.

Voici ma situation actuelle :

[email protected] :~# df -h
Système de fichiers            Taille  Utilisé Disponible Utilisation % Monté sur
/dev/mapper/server1-root
                       20G   808M   18G    5 % /
TMPFS 252M 0 252M 0% / LIB / INIT / RW
Varrun 252M 56K 251M 1% / VAR / RUN
VARLOCK 252M 0 252M 0% / VAR / LOCK
UDEV 252M 2,6M 249M 2% / dev
TMPFS 252M 0 252M 0% / DEV / SHM
/ DEV / SDA1 471M 23M 425M 6% / BOOT
/ DEV / MAPTER / Server1-Mysql
8.9 G  170M  8.3G   2 % /var/lib/mysql
[email protected] :~#

Comme vous le voyez, j'ai deux partitions LVM, / et /var/lib/mysql (plus une partition swap LVM non montrée ici). Le groupe de volumes est nommé server1 et les volumes sont nommés swap, root et mysql :

[email protected] :~# pvdisplay
  --- Volume physique ---
  PV Name               /dev/sda5
  VG Name                                        29,52 Go utilisable 3,66 Mo
allocatif oui (mais complet)
Taille PE (kyte) 4096
Total PE 7557
PE gratuit 0
ALLOCÉ PE 7557
PV UUID 0gCmpE-FGel-9ayg-E2yg-kkEu-B72X-kFvaye

[email protected] :~#


[email protected] :~# vgdisplay
  --- Groupe de volumes ---
  Nom VG               ID du serveur1
   Format                lvm2
  Zones de métadonnées        1
  Séquence de métadonnées           Accès VG lire / écrire
statut vg resizable
max lv 0
cur lv 3
ouvert lv 3
max pv 0
cur pv 1
acte PV                1
  Taille VG             29,52 Go
Taille PE 4,00 Mo
Total PE 7557
alloc PE / taille 7557 / 29,52 Go
PE / taille gratuite 0/0
VG UUID PH5HPC-JQEP- BFYs-wWlA-hu03-qwuQ-0cNIu3

[email protected] :~#


[email protected] :~# lvdisplay
  -- - Volume logique ---
  Nom LV               /dev/server1/swap
  Nom VG                server1
  LV UUID               RCeLCK-MO5p-xoMq-SwTT-n2NV-GaP/>DP6-Gaem Statut LV Disponible
# Open 2
LV Taille 1,00 Go
Current LE 256
Segments 1
ALLOCATION ALLUMATION
Read secteurs en avant     auto
  - actuellement réglé sur     256
  Bloquer l'appareil           254:0

  --- Volume logique ---
  Nom LV                /dev/server1/root
  Nom VG                server1
  LV UUID     5WEN7N-XYMH-MQZ1-FKH5-0XXA-1Y2T-V3PYBB
Lv Écriture Accès en lecture / Écriture
Statut LV Disponible
# Open 1
LV Taille 19.53 gb
Current LE            5000
  Segments               1
  Allocation             hériter
  Secteurs de lecture      auto
  - actuellement défini     256
  Bloquer l'appareil -       5  :        5 :        - Volume logique ---
  Nom LV               /dev/server1/mysql
  Nom VG                serveur1
  LV UUID               wk8yb6-fDl8-4tg3-tneT-1 F-Gw5 Accès à la lecture / écriture
Statut LV Disponible
# Ouver secteurs d'avance     auto
  - actuellement réglé sur     256
  Bloquer l'appareil           254:2

[email protected] :~#

Voici un aperçu de mes deux disques durs :

[email protected] :~# fdisk -l

Disque /dev/sda : 32,2 Go, 32212254720 octets
255 têtes, 63 secteurs/piste, 3 916 cylindres
Unités =cylindres de 16065 * 512 =8225280 octets
Identificateur de disque:0x0009353f

Démarrage du périphérique Blocs de fin des blocs ID
/ dev / sda1 * 1 62 497983+ 83 Linux / dev / sda2 63 3916 30957255 5 étendu
/ dev / sda5 63 3916 30957223+ 8e Linux LVM

Disque / dev / sdb:10,7 gb, 10737418240 octets
255 têtes, 63 secteurs/piste, 1305 cylindres
Unités = cylindres de 16 065 * 512 = 8225 280 octets
Identifiant de disque : 0x00000000

Le disque /dev/sdb ne contient pas un code valide table de partition
[email protected] :~#

2 Préparation de /dev/sdb

Avant de pouvoir créer des instantanés sur /dev/sdb, nous devons le partitionner (Linux LVM) et l'ajouter à notre groupe de volumes (server1).

Je vais maintenant créer la partition /dev/sdb1 et l'ajouter au groupe de volumes server1 :

fdisk /dev/sdb

server1 :~# fdisk /dev/sdb
Le périphérique ne contient ni une table de partition DOS valide, ni Sun, SGI ou OSF disklabel 
Création d'un nouveau nouveau disklabel DOS. Les modifications resteront en mémoire uniquement,
jusqu'à que vous décidiez de les écrire. Après cela, bien sûr, le contenu
précédent ne sera pas récupérable.


Le nombre de cylindres pour ce disque est défini sur 1305.
Il n'y a rien mal avec cela, mais c'est plus que 1024,
et pourrait dans certaines configurations causer des problèmes avec :
1) un logiciel qui s'exécute au démarrage (par exemple, les anciennes versions de LILO)
2) démarrage et partitionnement de logiciels à partir d'autres systèmes d'exploitation
   (par exemple DOS FDISK, OS/2 FDISK)
Attention : l'indicateur non valide 0x0000 de la table de partition 4 sera corrigé par w(rite)

Command (m for help): <-- n
Command action
   e   extended
   p   primary partition (1-4)
<-- p
Partition number (1-4) : <-- 1
Premier cylindre (1-1305, 1 par défaut) :<-- [ENTER]
Utilisation de la valeur par défaut 1
Dernier cylindre ou +taille ou + sizeM ou +sizeK (1-1305, default 1305) :<-- [ENTER]
Utilisation de la valeur par défaut 1305

Command (m for help) : <-- t
Partition sélectionnée 1
Code hexadécimal (tapez L pour répertorier les codes) : <-- 8e
Ch type de système de partition 1 à 8e (Linux LVM)

Commande (m pour l'aide) : <-- w
La table de partition a été modifiée !

Appel ioctl() pour relire la table de partition .
Synchronisation des disques.

pvcreate /dev/sdb1
vgextend serveur1 /dev/sdb1

C'est tout - nous n'avons pas besoin de créer de volumes dessus - cela sera fait automatiquement par mylvmbackup.

3 Installation et utilisation de mylvmbackup

Debian Squeeze fournit un paquet pour mylvmbackup, nous pouvons donc simplement l'installer comme suit :

apt-get install mylvmbackup

Jetez un oeil à

man mylvmbackup

pour apprendre à l'utiliser (lisez attentivement la partie sur les tables InnoDB si vous utilisez InnoDB).

Le fichier de configuration mylvmbackup est /etc/mylvmbackup.conf, vous pouvez donc spécifier vos options sur la ligne de commande ou dans ce fichier (les options de ligne de commande remplaceront les options dans /etc/mylvmbackup.conf).

Le répertoire de sauvegarde par défaut est /var/cache/mylvmbackup/backup (sauf si vous spécifiez un autre emplacement).

Un exemple de commande pour sauvegarder les tables MyISAM serait :

mylvmbackup --user=root --password=votremotdepasseqlracine --mycnf=/etc/mysql/my.cnf --vgname=server1 --lvname=mysql --backuptype=tar

Et pour InnoDB :

mylvmbackup --user=root --password=yourrootsqlpassword --innodb_recover --skip_flush_tables --mycnf=/etc/mysql/my.cnf --vgname=server1 --lvname=mysql --backuptype=tar

Assurez-vous de bien renseigner le bon mot de passe, le nom du groupe de volumes (server1 ici) et le nom du volume contenant les données MySQL (le volume est /dev/server1/mysql, donc le nom est mysql).

Si tout se passe bien, vous devriez voir beaucoup de sortie :

[email protected] :~# mylvmbackup --user=root --password=yourrootsqlpassword --mycnf=/etc/mysql/my.cnf --vgname=server1 --lvname=mysql --backuptype=tar
20120416 19:16:58 Info : Connexion à la base de données...
20120416 19:16:58 Info : Vidage des tables avec verrouillage de lecture...
20120416 19:16:58 Info : Prise de position record...
20120416 19:16:58 Info : Prise d'instantané...
Descripteur de fichier 3 laissé ouvert
  Volume logique "mysql_snapshot" créé
20120416 19:16:58 Info : Déverrouillage des tables...
20120416 19:16:58 Info : Déconnexion de la base de données...
20120416 19:16:58 Info : Montage de l'instantané...
20120416 19:16 :59 Info : Copie mon.cnf...
20120416 19:16:59 Info : Prendre la sauvegarde réelle...
20120416 19:16:59 Info : Création d'une archive tar /var/cache/mylvmbackup /backup/backup-20120416_191658_mysql.tar.gz
backup/
backup/mydb/
backup/mydb/sys_modules.MYI
backup/mydb/dns_a.frm
backup/mydb/isp_dienste.MYD
backup/mydb/isp_server_ip.frm
retour up/mydb/dns_spf.frm
backup/mydb/dns_a.MYI
backup/mydb/isp_fakt_dep.frm
backup/mydb/multidoc_dep.frm
backup/mydb/isp_isp_web_template. MYI
backup/mydb/sys_nodes.MYD
backup/mydb/listtype.MYD
backup/mydb/help_documents.MYD
backup/mydb/help_tickets.MYI
sauvegarde /mydb/doctype.frm
backup/mydb/login.MYI
backup/mydb/isp_com.frm
backup/mydb/help_documents.MYI
backup/mydb/isp_dep.MYD
backup/mydb/help_documents.frm
backup/mydb/isp_server.MYD
backup/mydb/isp_fakt_nodes.MYD
backup/mydb/sys_config.MYD
backup/ mydb/dns_nodes.MYI
backup/mydb/sys_config.MYI
backup/mydb/isp_monitor.frm
backup/mydb/isp_server_ip.MYI
backup/mydb/isp_isp_datenbank.frm
backup/madb/dns_secondaire.frm
sauvegarde/madb/isp_nodes.MYI
sauvegarde/madb/dns_isp_dns.MYI
sauvegarde/madb/help_nodes.frm
sauvegarde/madb /isp_fakt_nodes.frm
backup/mydb/isp_server.MYI
backup/mydb/isp_isp_domain.frm
backup/mydb/dns_ dep.frm
backup/mydb/session.frm
backup/mydb/isp_isp_cron.MYD
backup/mydb/isp_fakt_record.MYI
backup/mydb/isp_monitor.MYI
backup/mydb/isp_fakt_rechnung.MYI
backup/mydb/listtype.MYI
backup/mydb/isp_fakt_rechnung.MYD
backup/mydb/isp_traffic.frm
backup/mydb/isp_fakt_dep .MYI
backup/mydb/user_groups.frm
backup/mydb/isp_fakt_record.frm
backup/mydb/isp_fakt_artikel.MYD
backup/mydb/isp_htaccess.MYD
backup/mydb/sys_nodes.frm
backup/mydb/groups.frm
backup/mydb/login.MYD
backup/mydb/isp_firewall.MYD
backup/mydb/isp_server. frm
backup/mydb/help_tickets.frm
backup/mydb/multidoc_dep.MYD
backup/mydb/dns_nodes.frm
backup/mydb/dns_a.MYD
sauvegarde /mydb/sys_config.frm
backup/mydb/dns_isp_dns.frm
backup/mydb/dns_mx.MYI
backup/mydb/isp_isp_web.MYD
backup/mydb/isp_serverstatus.MYI
backup/mydb/isp_serverstatus.MYD
backup/mydb/sys_dep.MYD
backup/mydb/isp_isp_cron.MYI
backup/mydb/session.MYD
backup/mydb/isp_isp_admin.MYD
backup/mydb/dns_ptr.frm
backup/mydb/dns_mx.frm
backup/ mydb/isp_isp_domain.MYD
backup/mydb/sys_dep.MYI
backup/mydb/dns_spf.MYD
backup/mydb/user_groups.MYD
backup/mydb/sys_news.frm
backup/mydb/isp_isp_actions.MYI
backup/mydb/doctype.MYD
backup/mydb/multidoc_nodes.frm
backup/mydb/isp_fakt_artikel.frm
backup/madb /sys_news.MYD
backup/mydb/isp_traffic.MYD
backup/mydb/user_groups.MYI
backup/mydb/sys_news.MYI
backup/mydb/listtype.frm
backup/mydb/del_status.frm
backup/mydb/isp_fakt_nodes.MYI
backup/mydb/isp_isp_kunde.MYD
backup/mydb/isp_dienste.frm
backup/mydb/ dns_mx.MYD
backup/madb/doctype.MYI
backup/madb/help_tickets.MYD
backup/madb/dns_secondaire.MYI
backup/madb/dns_ptr.MYD
backup/mydb/isp_isp_reseller.frm
backup/mydb/isp_dienste.MYI
backup/mydb/isp_isp_datenbank.MYD
backup/mydb/isp_isp _actions.MYD
backup/mydb/isp_isp_web.frm
backup/mydb/db.opt
backup/mydb/isp_server_ip.MYD
backup/mydb/multidoc_nodes.MYI
backup/mydb/dns_nodes.MYD
backup/mydb/isp_fakt_rechnung.frm
backup/mydb/isp_isp_reseller.MYI
backup/mydb/isp_nodes.MYD
backup/mydb/isp_htaccess .MYI
backup/mydb/isp_isp_web_template.frm
backup/mydb/isp_isp_domain.MYI
backup/mydb/dns_secondaire.MYD
backup/mydb/dns_dep.MYD
backup/mydb/isp_firewall.MYI
backup/mydb/help_nodes.MYI
backup/mydb/isp_isp_admin.frm
backup/mydb/isp_isp_cron.frm
backup/mydb/isp_isp_datenbank. MYI
backup/mydb/isp_traffic_ip.frm
backup/mydb/isp_fakt_dep.MYD
backup/mydb/isp_dep.MYI
backup/mydb/dns_dep.MYI
sauvegarde /mydb/isp_isp_reseller.MYD
backup/mydb/dns_isp_dns.MYD
backup/mydb/isp_fakt_artikel.MYI
backup/mydb/multidoc_dep.MYI
backup/mydb/multidoc_nodes.MYD
backup/mydb/del_status.MYD
backup/mydb/groups.MYD
backup/mydb/isp_isp_web_template.MYD
backup/mydb/isp_htaccess.frm
backup/mydb/isp_dep.frm
backup/mydb/isp_isp_web.MYI
backup/mydb/ isp_isp_user.frm
backup/mydb/session.MYI
backup/mydb/isp_isp_admin.MYI
backup/mydb/isp_isp_kunde.MYI
backup/mydb/isp_isp_user.MYI
backup/mydb/isp_fakt_record.MYD
backup/mydb/isp_nodes.frm
backup/mydb/groups.MYI
backup/mydb/del_status.MYI
backup/mydb/dns_spf .MYI
backup/mydb/isp_com.MYD
backup/mydb/isp_isp_user.MYD
backup/mydb/dns_cname.frm
backup/mydb/isp_com.MYI
backup/mydb/dns_cname.MYD
backup/mydb/sys_modules.MYD
backup/mydb/isp_traffic_ip.MYI
backup/mydb/help_nodes.MYD
backup/mydb/sys_user. frm
backup/mydb/isp_traffic_ip.MYD
backup/mydb/sys_user.MYD
backup/mydb/sys_modules.frm
backup/mydb/isp_serverstatus.frm
sauvegarde /mydb/sys_dep.frm
backup/mydb/isp_firewall.frm
backup/mydb/isp_monitor.MYD
backup/mydb/isp_is p_kunde.frm
backup/mydb/dns_cname.MYI
backup/mydb/isp_isp_actions.frm
backup/mydb/sys_user.MYI
backup/mydb/sys_nodes.MYI
backup/mydb/dns_ptr.MYI
backup/mydb/isp_traffic.MYI
backup/mydb/login.frm
backup/ib_logfile0
backup/mysql_upgrade_info
backup/ debian-5.0.flag
backup/mysql/
backup/mysql/host.MYD
backup/mysql/procs_priv.MYD
backup/mysql/time_zone_transition.MYD
backup/mysql/proc.MYI
backup/mysql/time_zone_name.frm
backup/mysql/time_zone_name.MYD
backup/mysql/help_relation.MYI
backup/mysql/user. MYD
backup/mysql/help_category.MYI
backup/mysql/time_zone.frm
backup/mysql/func.MYD
backup/mysql/help_category.MYD
sauvegarde /mysql/time_zone_transition.frm
backup/mysql/time_zone_name.MYI
backup/mysql/help_category.frm
backup/mysql/time_zone_leap_second.frm
backup/mysql/time_zone_transition.MYI
sauvegarde/mysql/help_relation.MYD
sauvegarde/mysql/host.frm
backup/mysql/db.frm
backup/mysql/db.MYI
backup/mysql/columns_priv.frm
backup/mysql/time_zone.MYI
backup/mysql/time_zone_leap_second .MYD
backup/mysql/func.frm
backup/mysql/columns_priv.MYI
backup/mysql/help_topic.MYD
backup/mysql/host.MYI
backup/mysql/proc.frm
backup/mysql/user.MYI
backup/mysql/help_topic.MYI
backup/mysql/help_relation.frm
backup/mysql/tables_priv. frm
backup/mysql/help_keyword.frm
backup/mysql/user.frm
backup/mysql/time_zone_transition_type.MYI
backup/mysql/procs_priv.frm
sauvegarde /mysql/help_topic.frm
backup/mysql/procs_priv.MYI
backup/mysql/time_zone_transition_type.MYD
backup/mysql/func.MYI
backup/mysql/proc.MYD
backup/mysql/tables_priv.MYD
backup/mysql/help_keyword.MYI
backup/mysql/help_keyword.MYD
backup/mysql/time_zone_leap_second.MYI
backup/ mysql/tables_priv.MYI
backup/mysql/db.MYD
backup/mysql/time_zone_transition_type.fr m
backup/mysql/time_zone.MYD
backup/mysql/columns_priv.MYD
backup/lost+found/
backup/ibdata1
backup/ib_logfile1
backup-pos/backup-20120416_191658_mysql.pos
backup-pos/backup-20120416_191658_my.cnf
20120416 19:17:00 Info : TERMINÉ
20120416 19:17:00 Info : Nettoyage ...
20120416 19:17:00 Info : Statistiques d'utilisation LVM :
20120416 19:17:00 Info :   LV            VG      Attr   LSize Origin Snap %  Déplacer Log Copy %   Conversion
20120416 1 17:00 Info :   mysql_snapshot server1 swi-a- 5.00G mysql    0.00
  Le volume logique "mysql_snapshot" a supprimé avec succès
[email protected] :~#

Ensuite, vous pouvez trouver la sauvegarde dans le répertoire /var/cache/mylvmbackup/backup (sauf si vous avez spécifié un autre emplacement) :

ls -l /var/cache/mylvmbackup/backup
[email protected] :~# ls -l /var/cache/mylvmbackup/backup
total 248
-rw-r--r-- 1 root root 246847 2012-04-16 19 :17 backup-20120416_191658_mysql.tar.gz
[email protected] :~#

Le fichier tar.gz contient deux répertoires, backup (avec les bases de données et les tables de /var/lib/mysql que vous pouvez simplement recopier après un crash de la base de données - la base de données doit être arrêtée lorsque vous faites cela) et backup-pos qui contient votre fichier my.cnf (une sauvegarde de /etc/mysql/my.cnf) :

cd /var/cache/mylvmbackup/backup
tar xvfz backup-20120416_191658_mysql.tar.gz
ls -l
[email protected] :/var/cache/mylvmbackup/backup# ls -l
total 256
drwxr-xr-x 5 mysql mysql   4096 2012-04-16 19:10 sauvegarde
-rw-r--r-- 1 racine  racine  246847 2012-04-16 19:17 backup-20120416_191658_mysql.tar.gz
drwxr-xr-x 2 racine  racine    4096 2012-04-16 19 :24 positions de sauvegarde
[email protected] :/var/cache/mylvmbackup/backup#

  • mylvmbackup :http://www.lenzg.net/mylvmbackup/
  • MySQL :http://www.mysql.com/
  • Debian :http://www.debian.org/

Debian
  1. Comment installer Mattermost avec MySQL sur Ubuntu 14.04 et Debian 8

  2. Comment installer le serveur MySQL sur Debian 9

  3. Comment installer MySQL Workbench sur Debian 10

  4. Comment installer MySQL sur Debian 11

  5. Comment installer MySQL Workbench sur Debian 11

Comment installer Magento sur Debian 11

Hébergement virtuel avec vsftpd et MySQL sur Debian Squeeze

Comment protéger les répertoires par mot de passe avec mod_authn_dbd et MySQL sur Apache (Debian 8)

Comment installer Nginx avec PHP + MySQL (LEMP) sur Debian 9

Comment installer MySQL 8 sur Debian 10

Comment installer MySQL/MariaDB sur Debian 11