Installera och använd pv
(det är tillgängligt som ett yum-paket för CentOS)
http://www.ivarch.com/programs/pv.shtml
Om man antar att den förväntade storleken på den resulterande dumpfile.sql-filen är 100 m (100 megabyte), används pv
skulle vara följande:
mysqldump <parameters> | pv --progress --size 100m > dumpfile.sql
Konsolutgången kommer att se ut så här:
[===> ] 20%
Titta på man-sidan man pv
för fler alternativ. Du kan visa överföringshastigheten, eller hur mycket tid som har förflutit, eller hur många byte som har överförts och mer.
Om du inte vet storleken på din dumpfil, finns det ett sätt att få en storlek på MySQL-databasen från table_schema - det kommer inte att vara storleken på din dumpfil, men det kan vara tillräckligt nära för dina behov:
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;
Uppdatera
Enligt min erfarenhet, när du dumpar hela MySQL-servern, är den faktiska okomprimerade storleken på mysql-dumpen (med alternativet mysqldump --hex-blob) ungefär mellan 75 % till 85 % av den faktiska storleken på MySQL-data som erhålls från information_schema. Så för en allmän lösning kan jag försöka med följande:
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