sql >> Base de Datos >  >> RDS >> Mysql

¿Mysqldump admite una barra de progreso?

Instalar y usar pv (está disponible como paquete yum para CentOS)

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

Suponiendo que el tamaño esperado del archivo dumpfile.sql resultante es de 100 m (100 megabytes), el uso de pv sería el siguiente:

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

La salida de la consola se verá así:

[===> ] 20%

Mire la página man man pv para más opciones. Puede mostrar la tasa de transferencia, cuánto tiempo ha transcurrido, cuántos bytes se han transferido y más.

Si no sabe el tamaño de su archivo de volcado, hay una manera de obtener un tamaño de la base de datos MySQL desde table_schema - no será el tamaño de su archivo de volcado, pero puede ser lo suficientemente cerca para sus necesidades:

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;

Actualizar

En mi experiencia, al volcar todo el servidor MySQL, el tamaño real sin comprimir del volcado mysql (usando la opción mysqldump --hex-blob) es aproximadamente entre el 75 % y el 85 % del tamaño real de los datos MySQL obtenidos de information_schema. Entonces, para una solución general, podría intentar lo siguiente:

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