Я пытаюсь использовать rsync для резервного копирования данных MySQL. В таблицах используется механизм хранения MyISAM.
Я ожидал, что после первой rsync последующие rsync будут очень быстрыми. Оказывается, если данные таблицы вообще были изменены, операция замедляется.
Я провел эксперимент с файлом MYD размером 989 МБ, содержащим реальные данные:
Тест 1 - повторное копирование неизмененных данных
rsync -a orig.MYD copy.MYD
- занимает некоторое время, как и ожидалось
rsync -a orig.MYD copy.MYD
- мгновенно - ускорение в миллионах
Тест 2 - повторное копирование слегка измененных данных
rsync -a orig.MYD copy.MYD
- занимает некоторое время, как и ожидалось
UPDATE table SET counter = counter + 1 WHERE id = 12345
rsync -a orig.MYD copy.MYD
- занимает столько же времени, сколько оригинальная копия!
Что дает? Почему rsync вечно просто копирует крошечные изменения?
Редактировать: На самом деле вторая rsync в Тесте 2 занимает столько же времени, сколько и первая. Rsync, очевидно, снова копирует весь файл.
Edit: получается при копировании с локального на локальное, --whole-file подразумевается. Даже с параметром --no-whole-file производительность по-прежнему ужасна.