Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysqldump prend-il en charge une barre de progression ?

Installer et utiliser pv (il est disponible en tant que package yum pour CentOS)

http://www.ivarch.com/programs/pv.shtml

En supposant que la taille attendue du fichier dumpfile.sql résultant est de 100 m (100 mégaoctets), l'utilisation de pv serait comme suit :

mysqldump <parameters> | pv --progress --size 100m > dumpfile.sql

La sortie de la console ressemblera à :

[===> ] 20%

Regardez la page de manuel man pv pour plus d'options. Vous pouvez afficher le taux de transfert, ou combien de temps s'est écoulé, ou combien d'octets ont été transférés, et plus encore.

Si vous ne connaissez pas la taille de votre fichier de vidage, il existe un moyen d'obtenir une taille de la base de données MySQL à partir de table_schema - ce ne sera pas la taille de votre fichier de vidage, mais cela peut être assez proche pour vos besoins :

SELECT table_schema AS "Database", ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema;

Mettre à jour

D'après mon expérience, lors du vidage de l'intégralité du serveur MySQL, la taille réelle non compressée du vidage mysql (à l'aide de l'option mysqldump --hex-blob) est d'environ 75% à 85% de la taille réelle des données MySQL obtenues à partir de information_schema. Donc, pour une solution générale, je pourrais essayer ce qui suit :

SIZE_BYTES=$(mysql --skip-column-names <parameters> <<< 'SELECT ROUND(SUM(data_length) * 0.8) AS "size_bytes" FROM information_schema.TABLES;')

mysqldump <parameters> --hex-blob | pv --progress --size $SIZE_BYTES > dumpfile.sql