Percona XtraBackup est le seul logiciel de sauvegarde à chaud MySQL open source et gratuit au monde qui effectue des sauvegardes non bloquantes pour les bases de données InnoDB et XtraDB. Avec Percona XtraBackup, vous pouvez bénéficier des avantages suivants :
Sauvegardes rapides et fiables
Traitement ininterrompu des transactions pendant la sauvegarde
Économisez de l'espace disque et de la bande passante réseau
Vérification automatique des sauvegardes
Créez des sauvegardes InnoDB à chaud sans suspendre la base de données
Effectuer une sauvegarde incrémentielle de MySQL
Compresser la sauvegarde MySQL compressée sur un autre serveur
Déplacer les tables entre les serveurs MySQL
Créez facilement un nouveau maître-esclave MySQL
Sauvegardez MySQL sans ajouter de charge au serveur
Percona XtraBackup effectue une sauvegarde MySQL à chaud, une sauvegarde MySQL compressée et incrémentielle pour toutes les versions de Percona Server, MySQL et MariaDB. Percona XtraBackup fonctionne avec MySQL, MariaDB et Percona Server. Il prend en charge la sauvegarde entièrement non bloquante des moteurs de stockage InnoDB, XtraDB et HailDB.
Percona XtraBackup est une fonction de récupération après incident basée sur InnoDB. Copie les fichiers de données InnoDB, ce qui entraîne des données incohérentes en interne ; mais il effectue ensuite une récupération sur incident sur les fichiers, ce qui en fait à nouveau une base de données cohérente et utilisable.
En effet, InnoDB maintient un journal redo, également appelé journal des transactions. Celui-ci contient un enregistrement de chaque modification apportée aux données InnoDB. Lorsque InnoDB démarre, il vérifie les fichiers de données et le journal des transactions et effectue deux étapes. Il applique les entrées du journal des transactions validées aux fichiers de données et effectue des opérations d'annulation sur toutes les transactions qui ont modifié les données mais n'ont pas été validées.
Percona XtraBackup commence par enregistrer le numéro de séquence du journal (LSN), puis copie les fichiers de données. Cela prend peu de temps, donc si les fichiers changent, ils reflètent l'état de la base de données à différents moments. Dans le même temps, Percona XtraBackup exécute un processus en arrière-plan qui surveille les fichiers journaux de transactions et en copie les modifications. Percona XtraBackup doit le faire en permanence car les journaux de transactions sont écrits de manière circulaire et peuvent être réutilisés après un certain temps. Percona XtraBackup nécessite une journalisation des transactions pour chaque modification depuis le début de l'exécution du fichier de données.
Percona XtraBackup utilisera Backup Lock comme alternative légère. Cette fonctionnalité est disponible dans Percona Server 5.6+. Percona XtraBackup l'utilise pour copier automatiquement les données non-InnoDB afin d'éviter de bloquer les requêtes DML qui modifient les tables InnoDB. Lorsque le serveur prend en charge les verrous de sauvegarde, xtrabackup copiera d'abord les données InnoDB, exécutera et copiera les tables MyISAM et les fichiers .frm. Une fois terminée, la sauvegarde des fichiers commencera. Il sauvegardera .frm, .MRG, .MYD, .MYI, .TRG, FLUSH TABLES AVEC READ LOCKLOCK TABLES FOR BACKUP.par
REMARQUE
le verrouillage est uniquement pour MyISAM et autres non -Tables InnoDB, seulement après que Percona XtraBackup ait terminé la sauvegarde de toutes les données et journaux InnoDB/XtraDB. Percona XtraBackup utilisera Backup Lock comme alternative légère. Cette fonctionnalité est disponible dans Percona Server 5.6+. Percona XtraBackup l'utilise pour copier automatiquement les données non-InnoDB afin d'éviter de bloquer les requêtes DML qui modifient les tables InnoDB. FLUSH TABLES AVEC READ LOCK
Après cela, xtrabackup bloquera toutes les opérations susceptibles de modifier l'emplacement du journal binaire ou le rapport. Ensuite, xtrabackup finira de copier les fichiers journaux REDO et d'obtenir les coordonnées du journal binaire. Une fois cette opération terminée, xtrabackup débloquera le journal binaire et les tables. LOCK BINLOG FOR BACKUPExec_Master_Log_PosExec_Gtid_SetSHOW MASTER/SLAVE STATUS
Enfin, la position du journal binaire sera imprimée sur STDERR et xtrabackup quittera en renvoyant 0 si tout est OK.
Il est à noter que le xtrabackup de STDERR n'est écrit dans aucun fichier. Il faut le rediriger vers un fichier, par exemple. xtrabackup OPTIONS2> backupout.log
Il créera également les fichiers suivants dans le répertoire sauvegardé.
Pendant la phase de préparation, Percona XtraBackup utilise les fichiers journaux de transactions répliqués pour effectuer une récupération sur incident sur les fichiers de données répliqués. Une fois cela fait, la base de données est prête à être restaurée et utilisée.
Les tables MyISAM et InnoDB sauvegardées finiront par être cohérentes les unes avec les autres car après le processus de préparation (récupération), les données d'InnoDB sont restaurées jusqu'au point où la sauvegarde est terminée, plutôt que restaurées jusqu'au point là où tout a commencé. Ce moment correspond à la position prise afin que les données MyISAM et les données InnoDB préparées soient synchronisées. TABLES FLUSH AVEC VERROU DE LECTURE
En bref, ces outils vous permettent d'effectuer des opérations telles que des sauvegardes en streaming et incrémentielles en copiant des fichiers de données, en copiant des fichiers journaux et en appliquant des journaux à diverses combinaisons de données.
Pour restaurer une sauvegarde à l'aide de xtrabackup, vous pouvez utiliser l'option ou . xtrabackup –copy-backxtrabackup –move-back
xtrabackup lira les variables my.cnf datadir, innodb_data_home_dir, innodb_data_file_path, innodb_log_group_home_dir et vérifiera si le répertoire existe.
Cela copiera les tables MyISAM, les index, etc. (fichiers .FRM, .MRG, .MYD, .MYI, .TRG, .TRN, .ARM, .ARZ, .CSM, .CSV, par et .opt ) d'abord, l'étape suivante dans InnoDB concerne les tables et les index, et enfin les fichiers journaux. Il conservera les attributs des fichiers lors de leur copie, MySQL devra peut-être modifier la propriété des fichiers avant de démarrer le serveur de base de données, car ils appartiendront à l'utilisateur qui a créé la sauvegarde.
Alternativement, cette option peut être utilisée pour restaurer la sauvegarde. La seule différence avec cette option est qu'au lieu de copier le fichier, elle le déplace vers l'emplacement de destination. Cette option supprimant les fichiers de sauvegarde, elle doit être utilisée avec prudence. Cette fonctionnalité est utile dans les situations où il n'y a pas suffisamment d'espace disque libre pour enregistrer à la fois les fichiers de données et leurs copies de sauvegarde. xtrabackup –move-backxtrabackup –copy-back
[root@ZHENGDA ~]# uname -r
3.10.0-327 .el7.x86_64
yum -y install
Installer
yum -y install percona-xtrabackup-24
Créer un utilisateur de connexion et autoriser
mysql> CREATE USER 'zhengda'@'localhost' IDENTIFIED BY 'goyun.org'; mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'zhengda'@'localhost'; mysql> FLUSH PRIVILEGES;
Sauvegarde complète
(1) xtrabackup uniquement Il peut sauvegarder les tables des moteurs innodb et xtradb, mais pas les tables du moteur myisam
(2) innobackupex est un script Perl qui encapsule xtrabackup et prend en charge la sauvegarde simultanée d'innodb et de myisam, mais il doit être ajouté lors de la sauvegarde. up myisam. Un verrou de lecture global. De plus, myisam ne prend pas en charge la sauvegarde incrémentielle.
$ xtrabackup --user=zhengda --password=goyun.org --backup \ --target-dir=/data/backup $ innobackupex --user=zhengda --password=goyun.org /path/ to /backup/dir/ $ innobackupex --user=zhengda --password=goyun.org --stream=tar ./ | bzip2 -
Sauvegarder vers /data/backup
备份所有库:$ innobackupex --defaults-file=/etc/my.cnf--user=zhengda \ --password=goyun.org --socket=/tmp/mysql.sock /data/backup 备份两个库:$ innobackupex --databases="db1 db2"--defaults-file=/etc/my.cnf--user=zhengda \ --password=goyun.org --socket=/tmp/mysql.sock /data/backup
Sauvegarde incrémentielle
Remarque : La première sauvegarde incrémentielle doit être basée sur la sauvegarde complète. Vous pouvez
–incremental /data/backup1 spécifiez le répertoire cible pour le stockage de sauvegarde incrémentielle
–incremental-basedir=/data/backup spécifiez le répertoire pour la sauvegarde complète
$ innobackupex --defaults-file=etc/my.cnf --user=zhengda --password=goyun.org \ --socket=/tmp/mysql.sock --incremental /data/backuup1 --incremental-basedir=/data/backup/#会根据当天时间生成个目录
pour le deuxième incrément Pour la sauvegarde, vous besoin de spécifier le répertoire de la dernière sauvegarde incrémentielle
–incremental /data/backup2 Spécifiez le répertoire de cette sauvegarde incrémentielle
–incremental-basedir=/data/backup1 Spécifiez le répertoire de la dernière sauvegarde incrémentielle
$ innobackupex --defaults-file=/etc/my.cnf --user=zhengda --password=goyun.org \ --socket=/tmp/mysql.sock --incremental /data/backup2 --incremental-basedir=/data/backup1/(....)
Restaurer la sauvegarde
–option apply-log pour préparer la restauration de la sauvegarde
–use-memory=8G Définir la mémoire utilisée lors de la préparation de la restauration des données, ce qui peut améliorer le temps passé en préparation
$ innobackupex --apply-log --use-memory=8G /data/backup #还原如下 $ innobackupex --defaults-file=/etc/my.cnf --user= --password= --copy-back /data/backup #或 $ xtrabackup --user=zhengda --password=goyun.org --copy-back --target-dir=/data/backup
Utilisez Mysqldump pour la sauvegarde logique
En tant qu'outil de sauvegarde MySQL important, mysqldump est assez puissant. Les paramètres de sauvegarde et les stratégies de récupération doivent être étudiés attentivement.
Sauvegarder la base de données :
Sauvegarder une seule base de données ou une table spécifiée dans une seule base de données :
mysqldump [OPTIONS] base de données [tb1] [tb2]…
Sauvegarder plusieurs bases de données :
mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…]
Sauvegarder toutes les bases de données :
mysqldump [OPTIONS ] –all-databases [OPTIONS]
Ajoutez cette option pour ne pas verrouiller les tables lors de la sauvegarde
--single-transaction
Cas : Sauvegarder toutes les bibliothèques localement
mysqldump -u root -p密码 --all-databases > ./all.sql
Case : Restaurer toutes les bibliothèques localement
mysql -u root -p密码 < ./all.sql
Cas : Sauvegarder les bibliothèques db1 et db2 locales
mysqldump -u root -p密码 --databases db1 db2 > ./db1_2.sql
Cas : Restaurer les bibliothèques db1 et db2 locales
mysql -u root -p密码 db1 db2 < ./db1_2.sql
Cas : Sur l'hôte B Exécutez la sauvegarde de la bibliothèque yun de l'hôte A vers l'hôte B. La bibliothèque yun doit être créée sur l'hôte B
-C indique que la transmission de données entre les hôtes utilise la compression des données
mysqldump --host=192.168.6.108(A) -u root -p密码 --opt yun | mysql --host=localhost(B) -u root -p密码 -C yun
Cas : dans Exécuter sur l'hôte B pour sauvegarder toutes les bases de données de l'hôte A en local
mysqldump --host=192.168.6.108(A) -u root -p密码 --all-databases > all.sql(B)
Cas : restaurer et exécuter sur l'hôte B
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!