How to make big MySQL database more diffable/rsyncable? (aka
rsyncing big files)
Krzysztof Nosek
krzysztof.nosek at techland.pl
Fri Jul 10 06:48:08 MDT 2009
Hello,
> So I do not think the basic data structure is the problem,
> unless mysql hotcopy does something really strange like inserting a
> timestamp or other changing data info every few KB in the output stream.
>
No, really, mysqlhotcopy performs just a raw file system copy of
/var/lib/mysql taken from the locked database. If nothing particular
happens meanwhile in the running database, the copy is 1:1 with the
original. Easy to check with any smaller database.
> I would suggest trying a tool like xdelta (on the same machine) against two
> consecutive backup files, just to see if it can extract similarities. If
> xdelta can find significant matched data, rsync should be able to as well.
>
I'd love to do that but I can't make it actually working:
xdelta: open ../mantis_game_20090707/mantis_bug_file_table.MYD failed:
Value too large for defined data type
Same for dumps. I think it's running out of memory just like diff does
with files that large, isn't it?
> Also, is the transfer CPU bound or network bound? Can you send the output
> of rsync with the --stats and -v options?
>
I'm pretty sure it's the network. The rsync jobs on both machines use no
more than 30-50% of the CPU. I may be wrong - please find the log attached.
Perhaps I am memory bound, could it be?
Regards,
nosek
-------------- next part --------------
$ rsync -kavzO --del --stats --block-size=32768 --delete-excluded \
--exclude=phpThumb/cache \
--exclude=glpi.techland.pl/files/_cache \
--exclude=glpi.techland.pl/files/_sessions \
--exclude=moinmoin/data/cache \
--exclude=tmp/cgisess \
--exclude=*.old --exclude=*_old \
knosek at mantis.techland.pl:/ftp2/backup/mysql-mirror /home/nosek/rsync-test2/ftp2 2>&1 \
| tee -a /home/nosek/rsync-test2/ftp2/mysql-mirror.log
receiving incremental file list
# ...27 entries of some smaller databases here...
mysql-mirror/mantis_game/mantis_bug_file_table.MYD
mysql-mirror/mantis_game/mantis_bug_file_table.MYI
mysql-mirror/mantis_game/mantis_bug_history_table.MYD
mysql-mirror/mantis_game/mantis_bug_history_table.MYI
mysql-mirror/mantis_game/mantis_bug_monitor_table.MYD
mysql-mirror/mantis_game/mantis_bug_monitor_table.MYI
mysql-mirror/mantis_game/mantis_bug_relationship_table.MYD
mysql-mirror/mantis_game/mantis_bug_relationship_table.MYI
mysql-mirror/mantis_game/mantis_bug_table.MYD
mysql-mirror/mantis_game/mantis_bug_table.MYI
mysql-mirror/mantis_game/mantis_bug_text_table.MYD
mysql-mirror/mantis_game/mantis_bug_text_table.MYI
mysql-mirror/mantis_game/mantis_bugnote_table.MYD
mysql-mirror/mantis_game/mantis_bugnote_table.MYI
mysql-mirror/mantis_game/mantis_bugnote_text_table.MYD
mysql-mirror/mantis_game/mantis_bugnote_text_table.MYI
mysql-mirror/mantis_game/mantis_custom_field_string_table.MYD
mysql-mirror/mantis_game/mantis_custom_field_string_table.MYI
mysql-mirror/mantis_game/mantis_email_table.MYD
mysql-mirror/mantis_game/mantis_email_table.MYI
mysql-mirror/mantis_game/mantis_filters_table.MYD
mysql-mirror/mantis_game/mantis_filters_table.MYI
mysql-mirror/mantis_game/mantis_project_version_table.MYD
mysql-mirror/mantis_game/mantis_project_version_table.MYI
mysql-mirror/mantis_game/mantis_tokens_table.MYD
mysql-mirror/mantis_game/mantis_tokens_table.MYI
mysql-mirror/mantis_game/mantis_user_table.MYD
mysql-mirror/mantis_game/mantis_user_table.MYI
# ... 32 entries of some smaller databases here ...
Number of files: 1617
Number of files transferred: 87
Total file size: 18029881002 bytes
Total transferred file size: 18013399877 bytes
Literal data: 123736377 bytes
Matched data: 17889663500 bytes
File list size: 43382
File list generation time: 0.020 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 4361279
Total bytes received: 103628292
sent 4361279 bytes received 103628292 bytes 31406.01 bytes/sec
total size is 18029881002 speedup is 166.96
More information about the rsync
mailing list