Maison > Article > base de données > MySQL introduit la sauvegarde et la récupération incrémentielles
Recommandations d'apprentissage gratuites : Tutoriel vidéo MySQL
Répertoire d'articles
La sauvegarde incrémentielle peut réduire les coûts. taille des fichiers de sauvegarde sur la base d'une sauvegarde complète, accélérant ainsi la sauvegarde et la récupération
1. Concepts de sauvegarde incrémentielle
1.1 Pourquoi utiliser la sauvegarde incrémentielle. sauvegarde
Le chapitre précédent mentionnait qu'il existe deux façons de sauvegarder complètement, l'une consiste à utiliser tar pour empaqueter les fichiers de données, l'autre est utiliser mysqldump pour une sauvegarde complète
Les avantages de la sauvegarde incrémentielle sont qu'il n'y a pas de données en double, le volume de sauvegarde n'est pas important et le temps est courtL'inconvénient est également évident. nécessite la dernière sauvegarde complète et toutes les sauvegardes incrémentielles après la sauvegarde complète pour être restaurées, et toutes les sauvegardes incrémentielles sont restaurées une par une. L'opération est plus lourde
Le journal binaire commence à enregistrer après le démarrage du serveur MySQL et est recréé une fois que le fichier atteint la taille définie par max_binlog_size ou reçoit la commande flush logs Pour les fichiers journaux.
il vous suffit d'exécuter régulièrement la méthode de vidage des journaux pour créer de nouveaux journaux, générer des séquences de fichiers binaires et enregistrer ces journaux dans un endroit sûr à temps pour effectuer une sauvegarde incrémentielle d'une période
- 2. Exemple de sauvegarde incrémentielle
Activer la fonction de journal binaire
vim /etc/my.cnf...[mysqld]log-bin=mysql-binbinlog_format = MIXED#指定二进制日志(binlog)的记录格式为 MIXEDsystemctl restart mysqld.service#重启服务cd /usr/local/mysql/datals -l /usr/local/mysql/data/mysql-bin.*#查看二进制文件#二进制日志(binlog)有3种不同的记录格式:STATEMENT(基于SQL语句)、ROW(基于行)、MIXED(混合模式)#默认格式是 STATEMENT
Choisissez chaque semaine une période pendant laquelle la charge du serveur est plus légère ou lorsqu'il y a moins de visites d'utilisateurs pour la sauvegarde
mysqldump -uroot -p123123 SCHOOL CLASS01 > /opt/SCHOOL_CLASS01_$(date +%F).sql#对表进行完全备份mysqldump -uroot -p123123 --all-databases SCHOOL > /opt/SCHOOL_$(date +%F).sql#对库进行完全备份crontab -e#也可以使用计划性任务来执行30 3 * * 3 mysqldump -uroot -p123123 SCHOOL CLASS01 > /opt/SCHOOL_CLASS01_$(date +%F).sql30 3 * * 3 mysqldump -uroot -p123123 --all-databases SCHOOL > /opt/SCHOOL_$(date +%F).sql每周三的凌晨 3:00 对数据库和表进行完全备份
Peut effectuer des opérations de sauvegarde incrémentielles chaque jour et générer de nouveaux fichiers journaux binaires, de sorte qu'après l'insertion de nouvelles données, les nouveaux fichiers binaires correspondent au contenu modifié de la base de données
ls /usr/local/mysql/datamysqladmin -uroot -p123123 flush-logs
use SCHOOL;insert into CLASS01 values(3,'wangsan','woman','games');insert into CLASS01 values(4,'wangsi','man','runing');select * from CLASS01;
cd /usr/local/mysql/data/lsmysqladmin -uroot -p123123 flush-logs
cp mysql-bin.000002 /opt/#将记录变更的二进制文件02复制至/opt目录下cd /opt/lsmysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002#使用64位编码机制去解码,按行读取详细内容
2.
La récupération incrémentielle est plus lourde que la récupération complète Chaque sauvegarde incrémentielle est un individu distinct et les données ne sont pas répétées et doivent être contrôlées avec plus de précision
2.丢失完全备份之后更改的数据的恢复步骤
mysql -uroot -p123123use SCHOOL;delete from CLASS1 where id=3;delete from CLASS1 where id=4;#删除插入的两条数据,模拟完全备份后数据丢失的故障select * from CLASS01;#检查quitmysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -uroot -p123123#使用二进制文件进行恢复操作mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"#检查表内容是否恢复
3.完全备份之后丢失所有数据的恢复步骤
mysql -uroot -p123123use SCHOOL;drop table CLASS01;#直接删除整个表,假设完全备份后所有数据都丢失了quitmysql -uroot -p123123 SCHOOL <p><img src="https://img.php.cn/upload/article/000/000/052/c368a93d80781ae407afafe02a2ac327-11.png" alt="MySQL introduit la sauvegarde et la récupération incrémentielles"><br><img src="https://img.php.cn/upload/article/000/000/052/1481568b3321e7dca79c49d509572b7b-12.png" alt="MySQL introduit la sauvegarde et la récupération incrémentielles"></p><p><strong>4. 基于时间点与位置的恢复</strong></p>
4.1 基于时间点的恢复
#恢复用户“wangsan”的数据,而不恢复“wangsi”mysql -uroot -p123123 -e "truncate table SCHOOL.CLASS01;"mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysqlbinlog --no-defaults --stop-datetime='2021-02-06 15:58:39' /opt/mysql-bin.000002 |mysql -uroot -p123123mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"
#恢复“wangsi”的数据mysqlbinlog --no-defaults --start-datetime='2021-02-06 15:58:39' /opt/mysql-bin.000002 |mysql -uroot -p
4.1 基于位置的操作
mysqlbinlog --no-defaults --stop-position='609' /opt/mysql-bin.000002 | mysql -uroot -p#使用64位编码机制去解码并按行读取二进制文件02(增量备份)的详细内容......略
#仅恢复“1810”之前的数据,即不恢复“wangsi”的数据mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysql -uroot -p123123 -e "truncate table SCHOOL.CLASS01;"mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysqlbinlog --no-defaults --stop-position='1810' /opt/mysql-bin.000002 | mysql -uroot -pmysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"
#仅恢复“wangsi”的数据,跳过“wangsan”的数据恢复,即仅有第四条记录mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysqlbinlog --no-defaults --start-position='1810' /opt/mysql-bin.000002 | mysql -uroot -p123123mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"
5. 指定企业备份策略的思路
相关免费学习推荐:mysql数据库(视频)
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!