Назад | Перейти на главную страницу

Размер каталога увеличивается после rsyncing на другой компьютер с той же конфигурацией

У вас есть машина MySQL (percona, 14.14 Distrib 5.6.28-76.1) с 1 ТБ SSD, на которой размещено около 712 ГБ данных mysql. MySQL имеет 4 базы данных, из которых, скажем, database1 занимает много места, 656 ГБ. Назовем эту машину machine1.

Хотите перестроить другую машину MySQL DB, скажем, machine2, которая имеет точно такую ​​же конфигурацию. Итак, сделал снимок LVM на machine1.

Команда df -h покажет следующий вывод для разделов MySQL и LVM:

On Machine1, after taking LVM snapshot:

/dev/mapper/vgmysql-mysql_tmp        100G   33M  100G   1% /var/tmp/mysql
/dev/mapper/vgmysql-mysql            900G  713G  188G  79% /var/lib/mysql
/dev/mapper/vgmysql-mysql_snapshot   900G  713G  188G  79% /var/cache/mylvmbackup/mnt/backup
/dev/mapper/vgroot-mysql_backup      905G   33M  905G   1% /var/cache/mylvmbackup/backup

Смонтировал раздел SSD машины2 (/ var / lib / mysql) на машину1, используя параметр монтирования экспорта NFS, и выполнил rsync из снимка LVM на удаленное монтирование. После монтирования удаленного раздела и выполнения rsync команда df -h показала следующий вывод на машине1.

On Machine1, after rsyncing to Machine2's remote mount:

/dev/mapper/vgmysql-mysql           800G  713G   88G  90% /var/lib/mysql
/dev/mapper/vgmysql-mysql_tmp       100G   33M  100G   1% /var/tmp/mysql
/dev/mapper/vgmysql-mysql_snapshot  800G  712G   89G  89% /var/cache/mylvmbackup/mnt/backup
/dev/mapper/vgroot-mysql_backup     805G   33M  805G   1% /var/cache/mylvmbackup/backup
machine2:/var/lib/mysql             900G  864G   36G  97% /mnt/machine2

Таким образом, после rsync общий размер данных увеличивается на 150 ГБ. При сравнении размеров каждого отдельного файла и количества файлов все одинаковы. Размеры проверены с помощью ls -l и du команда. При проверке размера раздела на machine2 выводятся следующие данные, подтверждающие, что использование диска увеличилось:

On Machine2:

/dev/mapper/vgmysql-mysql_tmp      100G   33M  100G   1% /var/tmp/mysql
/dev/mapper/vgmysql-mysql          900G  864G   36G  97% /var/lib/mysql

Удалил все данные на machine2 и повторно выполнил rsync, и снова тот же результат. Теперь, всего это 4 базы данных, которые хранятся в MySQL, давайте затем вызовем database1, database2 .... и database4. Каждая база данных имеет свой собственный каталог в / var / lib / mysql.

Как упоминалось ранее, database1 имеет самый большой размер, около 656 ГБ. При проверке размера каталога database1 в / var / lib / mysql на машине2 он составляет около 799 ГБ. Остальные все каталоги и файлы имеют одинаковый размер. Проверил каждый файл (ibd и frm) и сравнил их с файлами на machine1, и каждый из них имеет одинаковый размер. Никаких лишних скрытых файлов.

Поэтому снова удалил все данные, уничтожил логический том (/ dev / mapper / vgmysql-mysql) и воссоздал их. Сделал rsync снова и получил те же результаты, использование диска увеличилось на 150 ГБ.

Проверены параметры файловой системы (XFS) на обеих машинах, все одинаковы. Используется команда ncdu, и разница очевидна:

Общее использование диска: 864,3 ГБ Видимый размер: 713,3 ГБ Элементы: 1500

Что приводит к такому увеличению использования диска? Что мне здесь не хватает?

Я не уверен, но, возможно, ваш MySQL использует разреженные файлы

Вы можете попробовать выполнить свою rsync с помощью --sparse или --inplace, как описано здесь: Rsync и разреженные файлы