Mysql
 sql >> Database >  >> RDS >> Mysql

mysqldump supporta una barra di avanzamento?

Installa e usa pv (è disponibile come pacchetto yum per CentOS)

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

Supponendo che la dimensione prevista del file dumpfile.sql risultante sia 100 m (100 megabyte), l'uso di pv sarebbe il seguente:

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

L'output della console sarà simile a:

[===> ] 20%

Guarda la pagina man man pv per più opzioni. Puoi visualizzare la velocità di trasferimento, quanto tempo è trascorso, quanti byte sono stati trasferiti e altro ancora.

Se non conosci la dimensione del tuo file di dump, c'è un modo per ottenere una dimensione del database MySQL da table_schema - non sarà la dimensione del tuo file di dump, ma potrebbe essere abbastanza vicino per le tue esigenze:

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;

Aggiorna

Nella mia esperienza, durante il dump dell'intero server MySQL, la dimensione effettiva non compressa del dump mysql (usando l'opzione mysqldump --hex-blob) è all'incirca tra il 75% e l'85% della dimensione live dei dati MySQL ottenuti da information_schema. Quindi, per una soluzione generale, potrei provare quanto segue:

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