On 28/11/2018 8:00 pm, Olivier wrote:
Is there a way that gives an estimate of the size of a mysqldump such a
way that it would always be larger than the real size?
So far, I have found:
mysql -s -u root -e "SELECT SUM(data_length) Data_BB FROM
information_schema.tables WHERE table_schema NOT IN
but the result may be smaller than the real size.
In the above example, you also need to account for index_length, eg
mysql> select round(SUM(data_length+index_length)/POWER(1024,2),1)
data_MB,round(SUM(index_length)/POWER(1024,2),1) index_MB FROM
information_schema.tables where TABLE_SCHEMA not in (
"information_schema", "performance_schema", "mysql") ;
| Total_MB | data_MB | index_MB |
| 4546.0 | 4093.7 | 452.2 |
1 row in set (0.00 sec)
However, this doesn't 100% map to OS file size ( if using innodb file
per table ) and will likely never be 100% accurate to what the OS
reports, due to fragmentation etc.
I am writting a program that takes the result of mysqldump and pipe it
in a tar file.
A typical global mysqldump ( ie taken with -A ) will be a single file.
Why are you then wanting to pipe this to a tar archive?
Its also common for mysqldump to be compressed via a pipe due to the
nature of the output file created ( eg text files compress *very* well )
, to then be sent across the network , eg via ssh
mysqldump -u.. -p -A | gzip > schema.sql.gz
Aside from your stated goal of piping to tar, if we can step back a
level briefly - what are you trying to achieve here?
Tar file format has the size in the header, before the
data and if the size of the dump is bigger than the size declared in the
header, tar does not like that (if the size of the dump is smaller than
the actual size, it can be padded with spaces).
So, the estimate must be larger than the actual dump, how to acheive
It wont be anything other than an estimate , however it should still be
reasonably close if you arent doing a *lot* of dml on it.
You could artificially inflate the expected size by ,eg multiplying by
1.1x or 1.2x , however there will always be an edge case table which
will be greater still..
Thanks in advance,
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql