有一个MySQL的(percona,14.14 Distrib 5.6.28-76.1)机器与一个1TB的SSD托pipe约712GB的MySQL数据。 MySQL有4个数据库,比如说database1,占用主要空间,656Gb。 让我们打电话给这台机器1。
想要重build另一个MySQL数据库机器,比如machine2,它有完全相同的configuration。 所以在machine1上做了一个LVM快照。
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
使用NFS导出安装选项将machine2(/ var / lib / mysql)的SSD分区挂载到machine1上,并将LVM快照中的rsync同步到远程挂载。 挂载远程分区并执行rsync之后,df -h在machine1上显示以下输出。
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之后,数据的总大小增加了150Gb。 在比较每个单独的文件和文件计数的大小,都是相同的。 尺寸使用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,并再次得到相同的结果。 现在,它们都是MySQL所持有的4个数据库,然后让我们调用database1,database2 ….和database4。 每个数据库在/ var / lib / mysql中都有自己的目录。
如前所述,database1具有最大的大小,大约656Gb。 在machine2上检查/ var / lib / mysql中的database1目录的大小时,大约在799G。 rest所有目录和文件具有相同的大小。 检查每个文件(ibd和frm)并将它们与machine1上的文件进行比较,每个文件具有相同的大小。 没有额外的隐藏文件。
所以再次删除所有数据,销毁逻辑卷(/ dev / mapper / vgmysql-mysql)并重新创build它们。 又做了rsync同样的结果,磁盘使用量增加了150Gb。
在两台机器上检查文件系统(XFS)参数都一样。 使用ncdu命令,区别很明显:
总磁盘使用量:864.3GiB外观尺寸:713.3GiB项目:1500
什么导致磁盘使用量增加这么多? 我在这里错过了什么?
我不确定,但也许你的MySQL正在使用稀疏文件
您可以尝试使用–sparse或–inplace来执行rsync,如此处所述: Rsync和稀疏文件