Re: Estimate mysqldump size
Ronan McGlue <[email protected]> Wed, 28 Nov 2018 20:39:06 +1100
| Newsgroups | gmane.comp.db.mysql.general |
|---|---|
| Message-ID | <[email protected]> |
Hi Olivier,
On 28/11/2018 8:00 pm, Olivier wrote:
> Hello,
>
> 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
> ('information_schema','performance_schema','mysql');
>
> 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)
Total_MB,round(SUM(data_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
> that?
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..
Regards
Ronan McGlue
MySQL Support
>
> Thanks in advance,
>
> Olivier
>
>
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql