Cet article vous présente une introduction à ce qu'est la sauvegarde physique MySQL (lvm-snapshot). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
lvm-snapshot (sauvegarde de l'outil)
Avantages :
Veille presque chaude (verrouillez la table avant de prendre l'instantané et relâchez-le immédiatement après la création)
Prend en charge tous les moteurs
Vitesse de sauvegarde Rapide
Pas besoin d'utiliser un logiciel commercial coûteux (c'est au niveau du système d'exploitation)
Inconvénients :
Peut nécessiter une collaboration entre les services (utilisez des commandes au niveau du système d'exploitation, le DBA n'a généralement pas d'autorité)
Impossible de prédire le temps d'interruption du service
Ce sera gênant si les données sont distribuées sur plusieurs volumes (pour les niveaux de stockage)
Le principe de l'instantané de volume logique
Pourquoi choisir la sauvegarde d'instantanés LVM ?
Raison : L'heure de verrouillage de la table étant incohérente, l'écriture ne peut pas être effectuée au moment du verrouillage de la table. Faites une sauvegarde instantanée de celle-ci, déverrouillez-la immédiatement une fois la sauvegarde terminée, puis le service. peut être utilisé normalement (écriture et autres opérations), par exemple Lorsque la quantité de données est importante, un instantané peut être pris immédiatement puis déverrouillé immédiatement, sans affecter l'écriture et d'autres opérations. Si vous utilisez mysqldump pour la sauvegarde, lorsque la quantité de données est importante, le temps de verrouillage de la table sera long, ce qui affectera l'efficacité.
Processus de fonctionnement
1、flush table with read locak; 2、create snapshot 3、show master status; show slave status; [可选] 4、unlock tables; 5、Copy files from the snapshot 6、Unmount the snapshot. 7、Remove snapshot
快照备份: 1.迁移数据到逻辑卷(不是必须,视情况而定) 2.锁表(时间) 3.给数据库所在的逻辑卷拍快照 4.解锁 5.将快照挂载到临时挂载点上 6.将快照上的所有数据拷贝到相应的备份目录里(不同主机) 7.卸载快照并删除
Exemple de sauvegarde LVM
1. Migrer les données vers des volumes logiques
Environnement : Le fichier de données n'est pas sur le volume logique, alors le fichier de données doit être migré vers le volume logique
1. Créez un volume logique
[root@Admin ~]# pvcreate /dev/sdb [root@Admin ~]# vgcreate vg01 /dev/sdb [root@Admin ~]# lvcreate -n lv_mysql -L 4G vg01 [root@Admin ~]# mkfs.ext4 /dev/mapper/vg01-lv_mysql
2. Migrez la base de données mysql actuelle vers le volume logique
1>先停止应用 2>停止mysql服务 [root@Admin ~]# service mysqld stop 3>备份所有的数据文件到指定的地方 [root@Admin ~]# tar -czvf /tmp/backmysql/mysql.tar.gz /data/DB/* 4>挂载逻辑卷到当前mysql的数据目录里 [root@Admin ~]# mount /dev/mapper/vg01-lv_mysql /data/DB/ 5>将刚刚备份的数据解压到数据目录里 [root@Admin ~]# tar xf /tmp/backmysql/mysql.tar.gz -C /data/DB/ [root@Admin ~]# mv /data/DB/data/DB/* /data/DB/ && rm -rf /data/DB/data/ 6>启动数据库 [root@Admin ~]# service mysqld start 此处启动失败原因/data/DB/数据目录的权限变成了root, 更改权限重新启动 [root@Admin ~]# chown mysql. -R /data/DB/ && service mysqld start
2. Base de données de sauvegarde d'instantanés
1. Ajouter un verrou en lecture à la base de données
mysql> flush table with read lock;
2. Créez un instantané du volume logique où se trouve la base de données mysql
[root@Admin ~]# lvcreate -n lv_mysql_s -L 50M -s /dev/vg01/lv_mysql [root@Admin ~]# dmsetup --tree ls vg01-lv_mysql (253:0) └─vg01-lv_mysql-real (253:1) └─ (8:16) vg01-lv_mysql_s (253:3) ├─vg01-lv_mysql_s-cow (253:2) │ └─ (8:16) └─vg01-lv_mysql-real (253:1) └─ (8:16)
3 . Déverrouillez la base de données
[root@Admin ~]# unlock tables
Les étapes 1 à 3 ci-dessus peuvent être combinées en une seule étape
[root@Admin ~]# echo "flush tables with read lock; system lvcreate -n lv_mysql_s -L 50M -s /dev/vg01/lv_mysql;unlock tables;" |mysql -p123
4. Montez l'instantané dans le répertoire temporaire
[root@Admin ~]# mkdir /mnt/mysql && mount /dev/vg01/lv_mysql_s /mnt/mysql/
5. 🎜>
[root@Admin ~]# ls /mnt/mysql/ # 可以看到新的挂载目录里面的数据 Admin.pid db01 ib_logfile0 mysql mysql-bin.000003 mysql-bin.000006 mysql-bin.000009 performance_schema auto.cnf db02 ib_logfile1 mysql-bin.000001 mysql-bin.000004 mysql-bin.000007 mysql-bin.000010 test binlog ibdata1 login mysql-bin.000002 mysql-bin.000005 mysql-bin.000008 mysql-bin.index [root@Admin ~]# mkdir /backup && rsync -av /mnt/mysql /backup
[root@Admin ~]# umount /mnt/mysql/ && lvremove /dev/vg01/lv_mysql_s
1>我们来点狠的,直接把mysql的数据目录/data/DB/删除。 [root@Admin ~]# rm -rf /data/DB/* && ls /data/DB/ 2>删除后可以看到重启mysql直接报错了 [root@Admin ~]# service mysqld restart MySQL server PID file could not be found! [失败] Starting MySQL...The server quit without updating PID file [失败]/DB/Admin.pid). 3>根据上面的/backup里面备份的数据进行恢复 [root@Admin ~]# mv /backup/mysql/* /data/DB/ [root@Admin ~]# ls /data/DB/ auto.cnf db02 ib_logfile1 mysql-bin.000001 mysql-bin.000004 mysql-bin.000007 mysql-bin.000010 test binlog ibdata1 login mysql-bin.000002 mysql-bin.000005 mysql-bin.000008 mysql-bin.index db01 ib_logfile0 mysql mysql-bin.000003 mysql-bin.000006 mysql-bin.000009 performance_schema 4>重新启动 [root@Admin ~]# chown mysql. /data/DB/ -R [root@Admin ~]# service mysqld restart 这里权限更改了如果启动还是报错的话,查看下是否mysql进程还存在,如果存在,将其kill掉再重启就OK [root@Admin ~]# mysql -p123 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | binlog | | db01 | | db02 | | login | | mysql | | performance_schema | | test | +--------------------+ rows in set (0.00 sec)
Organisez la sauvegarde ci-dessus dans un script + tâche planifiée Crontab pour effectuez la sauvegarde régulièrement
#!/bin/bash #LVM BackMysql back_dir=/backup/`date +%F` [ -d $back_dir ] mkdir -p $back_dir echo "flush tables with read lock; system lvcreate -n lv_mysql_s -L 50M -s /dev/vg01/lv_mysql;unlock tables;" |mysql -p123 mount /dev/vg01/lv_mysql_s /mnt/mysql/ rsync -a /mnt/mysql/ $back_dir if [ $? -eq 0 ];then umount /mnt/mysql/ && lvremove -f /dev/vg01/lv_mysql_s fi
Sauvegarde automatique des instantanés mylvmbackup
1. Installez le logiciel correspondant2. Deux méthodes de sauvegarde 1>sauvegarde du terminal mylvmbackup xxx 2>Modifier le fichier de configuration pour spécifier les paramètres correspondants
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!