sql >> Databasteknik >  >> RDS >> Mysql

Stöder mysqldump en förloppsindikator?

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



  1. Vad är SQLite

  2. Hur uppdaterar jag en rad i en tabell eller infogar den om den inte finns?

  3. Dåliga vanor :Räkna rader den hårda vägen

  4. Mycket enkel användarinmatning i django