J'utilise un script Perl pour vider le contenu d'une base de données MySQL. Le module Perl que j'utilise est DBI de CPAN. Est-il possible de dire si l'état de la base de données a changé depuis la dernière sauvegarde afin que je n'aie pas besoin de rejeter le db?Déterminer l'état de MySQL avec le module DBI de Perl
Répondre
Si toutes vos tables utilisent le moteur InnoDB, je suppose que vous pouvez vérifier innodb_buffer_pool_write_requests:
SHOW STATUS LIKE 'innodb_buffer_pool_write_requests';
S'il y a eu une écriture à une table InnoDB depuis la dernière fois que vous vérifié, cette valeur aura augmenté.
Il peut y avoir des faux positifs. Une vérification rapide montre que cette valeur augmente pendant et après:
START TRANSACTION; INSERT INTO [...]; ROLLBACK;
Mais je crois que si les écritures ont eu lieu, cette valeur doit changer. Vérifiez-le avant le début de la sauvegarde précédente et après que la sauvegarde en cours se termine et si sa valeur reste la même et toutes vos tables sont InnoDB, les dumps doivent être identiques.
Cela dit ...
Si vous devez vider toute une base de données MySQL et vous êtes à toutes les parties concernées au sujet de la cohérence, vous voudrez certainement générer cette décharge avec mysqldump:
mysqldump databasename
ou , si SHOW TABLE STATUS
montre que toutes vos tables utilisent le moteur InnoDB,
mysqldump --single-transaction databasename
qui a le même effet mais Proba Verrouillez vos tables pendant une période beaucoup plus courte.
Essayer d'écrire son propre script pour obtenir une sauvegarde cohérente est presque certainement une mauvaise idée pour beaucoup de raisons. (Il sera difficile de savoir quand vous avez réussi, cela signifie que les bugs sont probables, les bugs avec la cohérence peuvent avoir des effets subtilement destructeurs qui sont les pires, votre script sera plus lent et utilisera probablement plus de RAM.)
By Par défaut, mysqldump
émet sa sortie en SQL standard. Si vous souhaitez manipuler les données vous-même, vous pouvez obtenir une sortie délimitée par des tabulations en ajoutant --tab=filename
.
Si la journalisation binaire est activée sur votre serveur, vous devriez pouvoir comparer la sortie de SHOW BINARY LOGS
à une exécution précédente pour voir si quelque chose a changé.
Ou, faites-le vous-même. Créer une "table de journal" dans votre base de données et insérez le nom de la table et un horodatage à chaque fois que vous faites le vidage de données. Devrait être quelques lignes de code DBI je pense.
HTH
- 1. Perl DBI DBD :: mysql récupère le nom des bases de données depuis le serveur mysql
- 2. perl dbi: fetchrow_arrayref
- 3. Comment me connecter à deux serveurs différents en utilisant le module DBI de Perl?
- 4. Perl DBI - Exécuter le script SQL avec plusieurs instructions
- 5. Création de tables temporaires perl cgi dbi
- 6. Comment déterminer l'état de connexion du gestionnaire de base de données Perl DBI
- 7. Comment puis-je obtenir une couverture de test de 100% dans un module Perl utilisant DBI?
- 8. Perl simulant Net :: DBI fetchall_arrayref()
- 9. Equivalent Python de dbi/DBD :: Accès par proxy? (Perl DBI/DBD :: Proxy pour Python)
- 10. Perl DBI avec mysql: comment obtenir la valeur de retour d'une procédure stockée?
- 11. Quel est l'équivalent Python de DBI de Perl?
- 12. PHP ADOdb/PDO équivalent de Perl DBI quote_identifier?
- 13. Accès à Apache :: DBI à partir de DBI
- 14. perl, dbi avec une instruction SQL avec une condition similaire
- 15. Perl DBI dynamique fetchrow en boucle
- 16. Comment me connecter à une base de données MSSQL en utilisant le module DBI de Perl dans Windows?
- 17. Comment insérer des valeurs d'un hachage dans une base de données en utilisant le module DBI de Perl?
- 18. Perl DBI extrait une partie de la base de données?
- 19. Perl Dbi et les procédures stockées
- 20. perl dbi rollback ne fonctionne pas
- 21. Comment insérer des valeurs de tableaux parallèles dans une base de données à l'aide du module DBI de Perl?
- 22. Utilisation de Ruby Gem DBI
- 23. Existe-t-il un équivalent de mysql_real_escape_string() de PHP pour DBI de Perl?
- 24. Développement de module Nginx avec mysql posible?
- 25. Module enfichable/traitement de données dynamique/munging/transformation perl?
- 26. Comment déterminer le sous-module SHA-1 avec gitweb?
- 27. Perl Comparer les dates avec MySQL
- 28. Perl Parallel :: ForkManager avec les gestionnaires de base de données DBI
- 29. Comment puis-je insérer des valeurs de hachage dans des colonnes avec DBI de Perl?
- 30. Déterminer si le module Magento est activé
Est-ce que MySQL offre une telle fonctionnalité? –