Innobackupex et mydumper, outils de sauvegarde MySQL
-------------------------------------------------------------- --- -
------Outil de sauvegarde physique Innobackupex------
------------------ --- -----------------------------
Manuel officiel : https://www.percona.com /doc/percona- xtrabackup/LATEST/index.html
est principalement utilisé pour la sauvegarde à chaud des données stockées dans des moteurs tels que InnoDB et MyISAM. Lors de la sauvegarde, les données à sauvegarder sont chargées dans la mémoire et. puis écrit dans le fichier de données de sauvegarde sur le disque. Les données modifiées lors de la sauvegarde sont ajoutées au fichier de sauvegarde de la même manière que pour la récupération du journal redo.
============================================ == ================================================= == ==
Processus de préparation complet d'innobackupex :
1. Activez xtrabackup_logfile. Utilisé pour enregistrer ces nouvelles modifications de données dans xtrabackup_logfile en temps réel pendant tout le processus de sauvegarde à chaud lorsque de nouvelles opérations DML sous le moteur de stockage InnoDB produisent des modifications de données. Le format d'enregistrement est le même que celui du redo log
2, en page. unités Copiez les fichiers de données stockés dans InnoDB : fichiers ibdataX et .ibd de l'espace table partagé. Étant donné que la page peut être écrite pendant la copie, les valeurs de somme de contrôle de tête et de queue de la page seront différentes. Par conséquent, lors de la génération ultérieure de fichiers de sauvegarde, vous devez appliquer le journal avant de les utiliser pour réparer certaines pages incomplètes.
3. Tables affleurantes avec verrou de lecture. Ajoutez un verrou en lecture à la table MyISAM pour copier les données stockées dans le moteur de non-transaction MyISAM
4. Copiez les fichiers .frm, .MYD et .MYI.
5. Obtenez la dernière position du binlog au moment où la sauvegarde est terminée : xtrabackup_binlog_info (les fichiers de données InnoDB peuvent être mis à jour).
6. Déverrouiller les tables ;
7. Une fois la sauvegarde terminée, enregistrez les paramètres minimaux requis pour démarrer la sauvegarde sur backup-my.cnf
( 2) Enregistrez le LSN dans xtrabackup_logfile.
(3) Enregistrez le type de sauvegarde (sauvegarde complète : complète, incrémentielle : incrémentielle ; les sauvegardes qui ont été appliquées dans le journal seront modifiées en préparation complète) et d'autres informations dans xtrabackup_checkpoints.
(4) Enregistrez d'autres informations de sauvegarde : xtrabackup_info
Ce qui suit est un résumé des données de la table de base de données, des fichiers d'espace table (ibdata) et du journal de rétablissement (ib_logfile) dans le répertoire de données sauf copie. De plus, tous les fichiers générés :
(1) backup-my.cnf
(2) xtrabackup_binlog_info : lors de l'utilisation de MyISAM. pour la sauvegarde des données, plus précis que xtrabackup_binlog_pos_innodb
(3) xtrabackup_binlog_pos_innodb : le fichier nouvellement généré après l'application du journal enregistre uniquement la position du journal binaire d'innodb et ne calcule pas le journal binaire généré par MyISAM
(4) xtrabackup_checkpoints
(5) xtrabackup_info
(6) xtrabackup_logfile (fichier principal)
(7) xtrabackup_slave_info (sauvegarder les fichiers importants de la bibliothèque) : vous devez ajouter l'option --slave-info lors de la sauvegarde, et "modifier master" sera enregistré dans ce fichier pour..." informations. Après avoir utilisé le fichier de sauvegarde pour restaurer la base de données esclave, ces informations seront utilisées pour pointer vers la base de données maître pour la synchronisation.
============================================ == ================================================= == ==
Processus de sauvegarde incrémentielle d'innobackupex
Lorsque innobackupex sauvegarde de manière incrémentielle les données de la table InnoDB, par rapport au processus de sauvegarde complète, lorsque la sauvegarde incrémentielle copie la page, elle comparera la sauvegarde. Le LSN de la page entre le fichier et les données actuelles, et le LSN de la page liée aux données modifiées augmenteront. Ainsi, innobackupex n'a besoin que de sauvegarder les pages avec des LSN modifiés.
Lors de la sauvegarde de MyISAM, une opération de sauvegarde complète est toujours effectuée.
============================================ == ================================================= == ==
Exemple d'instruction de sauvegarde
Autorisations requises pour le compte de sauvegarde : RELOAD, LOCK TABLES, REPLICATION CLIENT
(1) Entièrement préparé :
étape 1 :
innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=username --password='user_passwd' --host=[HOST] -- port=【PORT】 --no-timestamp /tmp/innobackup_all
step2:
innobackupex --apply-log --defaults-file=/tmp/innobackup_all/backup-my .cnf --user=username --password='user_passwd' --host=[HOST]--port=[PORT] --/tmp/innobackup_all
(2) Sauvegardes partielles : formulaire de sauvegarde Par exemple : mydatabase.mytable
étape 1 :
Utilisez --include avec l'expression régulière
innobackupex --include='^mydatabase[.]mytable' /path/to /backup --no-timestamp
Utilisez --tables-file avec un fichier texte enregistrant le nom complet de la table (un nom de table par ligne)
echo "mydatabase.mytable " > /tmp/tables.txt
innobackupex --tables-file=/tmp/tables.txt /path/to/backup --no-timestamp
Utilisez --databases pour spécifier les bibliothèques et les tables (par exemple, table de sauvegarde : mydatabase.mytable et bibliothèque : mysql)
innobackupex --databases="mydatabase.mytable mysql" /path/to/backup --no -timestamp --user=backup --password=backup
étape 2 :
préparer une sauvegarde partielle : innobackupex --apply-log --export /path/to/ backup/
(--databases, les tables de base de données non spécifiées vous demanderont « est-ce que la note existe » pendant la phase de préparation, vous pouvez ignorer ce message)
(3) Sauvegarde incrémentielle (en supposant qu'elle est entièrement préparé, Chemin : $FULLBACKUP)
étape 1 :
Première sauvegarde incrémentielle (basée sur une sauvegarde complète) : innobackupex --incremental $INCREMENTALBACKUP_1 --incremental-basedir=$FULLBACKUP --user=USER --password=PASSWORD
Deuxième sauvegarde incrémentielle (basée sur la première sauvegarde incrémentielle) : innobackupex --incremental $INCREMENTALBACKUP_2 --incremental-basedir=NCREMENTALBACKUP_1 --user=USER -- password=PASSWORD
(...)
Nième fois
étape 2 : préparer
innobackupex -- apply-log --redo-only $FULLBACKUP --use-memory=1G --user=USER --password=PASSWORD
innobackupex --apply-log --redo-only $FULLBACKUP--incremental- dir=$INCREMENTALBACKUP_1 --use- memory=1G --user=DVADER --password=D4RKS1D3
innobackupex --apply-log --redo-only $FULLBACKUP --incremental-dir=$ INCREMENTALBACKUP_2 --use-memory=1G --user=DVADER --password=D4RKS1D3
(...)
innobackupex --apply-log--redo -only $FULLBACKUP --incremental-dir=$ INCREMENTALBACKUP_N --use-memory=1G --user=DVADER --password=D4RKS1D3
innobackupex --apply-log $FULLBACKUP --use- memory=1G --user=$USERNAME -- password=$PASSWORD
--use-memory : Spécifiez la mémoire que la préparation peut utiliser en conjonction avec --apply-log pour accélérer la préparation
====== ======================================== ========== ========================================= =
De Quanbei Avec Percona XtraBackup, vous pouvez exporter des tables individuelles de n'importe quelle base de données InnoDB et les importer dans Percona Server avec XtraDB ou MySQL 5.6 (la source n'a pas besoin d'être XtraDB ou MySQL 5.6, mais la destination le fait). Cela ne fonctionne que sur des fichiers .ibd individuels et ne peut pas exporter une table qui n'est pas contenue dans son propre fichier .ibd.
est requis Dans la phase de préparation, une seule table est exportée via l'option --export :
Une fois une sauvegarde complète créée, préparez-la avec l'option --export :
$ innobackupex --apply-log --export /path/to/backup
Cela créera pour chaque InnoDB avec son propre tablespace un fichier avec l'extension .exp.
Un fichier se terminant par .exp sera créé pour l'espace table de chaque table innodb
Le fichier de sortie est sous la forme :
/data/backups/mysql/test/export_test .exp
/data/backups/mysql/test/export_test.ibd
/data/backups/mysql/test/export_test.cfg
Lors de l'importation de tables à partir d'autres serveurs, vous avez besoin pour créer d'abord une table (car il n'y a pas d'informations sur la structure de la table dans le fichier de table indépendant) :
mysqlfrm --diagnostic /data/2017-03-22_16-13-00/yayun/t1.frm (en utilisant le L'outil mysql-utilities mysqlfrm lit la structure de la table à partir du fichier de sauvegarde)
mysql> CREATE TABLE mytable (...) ENGINE=InnoDB; (Allez créer une table basée sur la structure de table lue précédemment)
Supprimer les fichiers d'espace table :
mysql> ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;
Copiez les fichiers .ibd et .exp exportés dans le répertoire de données :
Après cela, copiez les fichiers mytable.ibd et mytable.exp (ou mytable.cfg si vous importez vers MySQL 5.6) dans le répertoire d'accueil de la base de données
, puis importez l'espace table :
mysql> mabase de données.mytable IMPORT TABLESPACE;
-------------------------------------- --- ---
------Outil de sauvegarde logique mydumper------
---------------- --- ------------------------
Certains documents en anglais sont extraits du README sur GitHub : https://github. com/maxbube/ mydumper
Dans la version 5.5/5.6 de la base de données MySQL, par rapport à l'utilisation du mysqldump officiellement fourni pour la sauvegarde monothread, l'outil de sauvegarde multithread mydumper présente des avantages uniques. (Pour les versions postérieures à MySQL 5.7.11, le responsable a finalement résolu le problème de sauvegarde cohérente de l'outil de sauvegarde logique parallèle mysqlpump. Pour mysqlpump, veuillez vous référer à l'introduction de Daniel Jiang Chengyao : http://www.tuicool.com/articles/ E77bYz7)
Inconvénients : Il est difficile de sauvegarder sur un centre de sauvegarde distant via un streaming simultané, et le plus souvent cela se fait directement sur le disque local.
== Comment fonctionne un instantané cohérent ? ==
Tout cela est effectué selon les meilleures pratiques et traditions MySQL :
* Par précaution, les requêtes lentes sur le serveur annulent le dump, ou se faire tuer
* Le verrouillage global en écriture est acquis ("FLUSH TABLES WITH READ LOCK")
* Diverses métadonnées sont lues ("SHOW SLAVE STATUS", "SHOW MASTER STATUS")
* Autres threads connectez-vous et établissez des instantanés ("START TRANSACTION AVEC UN INSTANTANÉ CONSISTANT")
** Dans la version antérieure à la version 4.1.8, il crée une table InnoDB factice et la lit.
* Une fois que tous les threads de travail annoncent l'établissement de l'instantané, le maître exécute "DÉVERROUILLEZ LES TABLES" et démarre la mise en file d'attente des tâches.
Mécanisme de mise en œuvre de la cohérence de Mydumper :
* Lorsque vous rencontrez une requête lente, soit le dump arrête de s'exécuter, soit mydumper tue la requête lente. (Le paramètre --long-query-guard est utilisé pour convenir de la durée d'une requête lente. La valeur par défaut est de 60 secondes. Si --kill-long-queries est ajouté à ce paramètre, la requête lente sera activement supprimée. S'il n'est pas ajouté, mydumper tuera automatiquement la requête lente lorsqu'il rencontrera la requête lente. Il cessera de s'exécuter)
* Utilisez "FLUSH TABLES WITH READ LOCK" pour appliquer un verrou de lecture global, ce qui empêchera les instructions DML
* Afficher les métadonnées : "SHOW SLAVE STATUS", "SHOW MASTER STATUS"
* "START TRANSACTION AVEC un instantané cohérent" : Lorsque le démarrage de la transaction ouvre la transaction, il établit immédiatement un instantané de la lecture cohérente de la transaction en cours. Sans l'option with, la transaction ne démarrera réellement que lorsque la première instruction de la transaction sera exécutée, et un instantané de lecture cohérent sera établi
* À partir de la version 4.1.8, mydumper crée une table virtuelle de type InnoDB . Lisez les données à partir de celui-ci
* Une fois que tous les threads signalent que l'instantané de cohérence est établi, exécutez "UNLOCK TABLES" et démarrez la tâche de file d'attente.
Exemple d'instruction de sauvegarde :
mydumper --user=username --password=user_passwd --socket=/... --regex '^( ?!(mysql))' --output=/backupdir --compress --verbose=3 --logfile=/backupdir/mydumper_backup.log
Explication des paramètres communs :
-- base de données Spécifiez les bibliothèques qui doivent être sauvegardées
--tables-list Spécifiez les tables qui doivent être sauvegardées, séparées par (en cas de conflit avec l'option regex, l'expression régulière prévaudra)
- -regex '^(?!(mysql |test))' : options de filtrage de la base de données
--output=/backupdir : chemin de sortie du fichier de sauvegarde
--compress : sortie compressée fichier (suffixe .gz)
--verbose=3 : informations de niveau de journal de sortie pour faciliter l'observation de l'état de la sauvegarde (0 = silencieux, 1 = erreurs, 2 = avertissements, 3 = informations, par défaut 2)
--logfile=/ backupdir/mydumper_backup.log : Spécifiez l'emplacement du fichier journal d'exécution de mydumper
--threads Spécifiez le nombre de threads utilisés lors de la sauvegarde, la valeur par défaut est 4
--statement-size : Limiter la longueur maximale des instructions SQL (mydumper fusionnera SQL lors de la sauvegarde)
--rows : Divisez la table par le nombre de lignes. Améliorez les performances de concurrence lorsque myloader
--chunk-filesize : divisez les données de la table en fonction de la taille du fichier de sortie. Améliorez les performances de concurrence de myloader
--no-locks : ne verrouillez pas la table (les données peuvent être incohérentes)
--binlogs : sauvegardez le binlog. Lorsque la sauvegarde échoue, vous pouvez vérifier le journal de sauvegarde et trouver la cause de l'erreur à proximité du point de sauvegarde
Répertoire du fichier de sauvegarde de sortie :
* Structure de la bibliothèque : dbname-schema- créer.sql.gz
* Structure de la table : dbname.tblname1-schema.sql.gz
* Données de la table : dbname.tblname1.sql.gz
(Chaque bibliothèque et table possède son propre fichier de sauvegarde indépendant. Lorsqu'une seule table doit être restaurée, restaurez-la via mydumper Table données complètes + incrément de récupération du binlog)
* métadonnées : lors de l'inclusion de la sauvegarde, la position actuelle du binlog est
---------------- -- ------------------------------------------------ --
Dump démarré à : 2017-07-04 09:45:57
AFFICHER LE STATUT DU MAÎTRE :
Journal : mysql-bin.000048
Pos : 107
GTID : (null)
Dump terminé à : 2017-07-04 09:45:57
--------------------- ----- ---------------------------------------
* mydumper_backup.log : Enregistrez l'état d'exécution du programme de sauvegarde
Explication des paramètres pertinents de la commande de récupération myloader
--emplacement du fichier de sauvegarde du répertoire
--requêtes-par-transaction Le nombre de SQL exécutés pour chaque transaction, la valeur par défaut est 1000
--overwrite-tables Supprimez d'abord les tables existantes, puis restaurez-les (il est nécessaire de sauvegarder la structure des tables lors de la sauvegarde des fichiers)
--database spécifie la base de données qui doit être restaurée
--enable-binlog est utilisée pour restaurer les données Operation record binlog
--threads spécifie le nombre de threads utilisés lors de la restauration, la valeur par défaut est 4
- -enable-binlog : restaurer le binlog sauvegardé
Remarque : myloader ne peut être que dans la bibliothèque Récupérer au niveau niveau. La récupération d'une seule table peut appeler directement le fichier correspondant contenant les instructions SQL dans le fichier de sauvegarde
De plus, innobackupex sauvegarde les données avant ce moment où la sauvegarde est terminée, tandis que mydumper (y compris mysqldump , mysqlpump, etc.) Le moment des données sauvegardées est l'heure à laquelle la sauvegarde démarre.Démarrez la lecture à partir de l'événement lorsque la première position dans le journal binaire est égale au paramètre N.
–stop-position=N (non inclus lors de la lecture)
Arrêtez la lecture de l'événement lorsque la première position dans le journal binaire est égale ou supérieure au paramètre N.
Conseils :

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

Créez une base de données à l'aide de NAVICAT Premium: Connectez-vous au serveur de base de données et entrez les paramètres de connexion. Cliquez avec le bouton droit sur le serveur et sélectionnez Créer une base de données. Entrez le nom de la nouvelle base de données et le jeu de caractères spécifié et la collation. Connectez-vous à la nouvelle base de données et créez le tableau dans le navigateur d'objet. Cliquez avec le bouton droit sur le tableau et sélectionnez Insérer des données pour insérer les données.

MySQL est un système de gestion de la base de données relationnel open source, principalement utilisé pour stocker et récupérer les données rapidement et de manière fiable. Son principe de travail comprend les demandes des clients, la résolution de requête, l'exécution des requêtes et les résultats de retour. Des exemples d'utilisation comprennent la création de tables, l'insertion et la question des données et les fonctionnalités avancées telles que les opérations de jointure. Les erreurs communes impliquent la syntaxe SQL, les types de données et les autorisations, et les suggestions d'optimisation incluent l'utilisation d'index, les requêtes optimisées et la partition de tables.

Vous pouvez créer une nouvelle connexion MySQL dans NAVICAT en suivant les étapes: ouvrez l'application et sélectionnez une nouvelle connexion (CTRL N). Sélectionnez "MySQL" comme type de connexion. Entrez l'adresse Hostname / IP, le port, le nom d'utilisateur et le mot de passe. (Facultatif) Configurer les options avancées. Enregistrez la connexion et entrez le nom de la connexion.

Redis utilise une architecture filetée unique pour fournir des performances élevées, une simplicité et une cohérence. Il utilise le multiplexage d'E / S, les boucles d'événements, les E / S non bloquantes et la mémoire partagée pour améliorer la concurrence, mais avec des limites de limitations de concurrence, un point d'échec unique et inadapté aux charges de travail à forte intensité d'écriture.

MySQL est choisi pour ses performances, sa fiabilité, sa facilité d'utilisation et son soutien communautaire. 1.MySQL fournit des fonctions de stockage et de récupération de données efficaces, prenant en charge plusieurs types de données et opérations de requête avancées. 2. Adoptez l'architecture client-serveur et plusieurs moteurs de stockage pour prendre en charge l'optimisation des transactions et des requêtes. 3. Facile à utiliser, prend en charge une variété de systèmes d'exploitation et de langages de programmation. 4. Avoir un solide soutien communautaire et fournir des ressources et des solutions riches.

MySQL et SQL sont des compétences essentielles pour les développeurs. 1.MySQL est un système de gestion de base de données relationnel open source, et SQL est le langage standard utilisé pour gérer et exploiter des bases de données. 2.MySQL prend en charge plusieurs moteurs de stockage via des fonctions de stockage et de récupération de données efficaces, et SQL termine des opérations de données complexes via des instructions simples. 3. Les exemples d'utilisation comprennent les requêtes de base et les requêtes avancées, telles que le filtrage et le tri par condition. 4. Les erreurs courantes incluent les erreurs de syntaxe et les problèmes de performances, qui peuvent être optimisées en vérifiant les instructions SQL et en utilisant des commandes Explication. 5. Les techniques d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'améliorer la lisibilité du code.