我计划将所有虚拟机移至共享存储,并且我有一个关于如何处理 MySQL 虚拟机的问题:
目前,VM 映像的大小为 100GB,其中大部分空间被 MySQL 数据占用。我觉得迁移到共享存储时有两种选择,但我不确定哪种是最常见/推荐的做法:
- 只需将 100GB 虚拟机放在共享存储上
- 将 95GB 数据目录移至共享存储,将虚拟机大小调整为 5GB 并移至共享存储,然后将虚拟机指向数据目录
有人对此有什么看法吗?
数据和索引大小如下:
+----------------+----------------------+----------------------+----------------------+
| Storage Engine | Data Size | Index Size | Table Size |
+----------------+----------------------+----------------------+----------------------+
| MEMORY | 0.002 GB | 0.001 GB | 0.003 GB |
| FEDERATED | 2.198 GB | 0.000 GB | 2.198 GB |
| MyISAM | 2.258 GB | 0.337 GB | 2.595 GB |
| InnoDB | 47.249 GB | 30.568 GB | 77.817 GB |
| Total | 51.706 GB | 30.906 GB | 82.613 GB |
+----------------+----------------------+----------------------+----------------------+
答案1
常用/推荐的做法应该可以正常工作。只要确保你运行这个
chown -R mysql:mysql /var/lib/mysql
选择
根据查询输出和数据目录大小,由于某些碎片,您浪费了 13GB 的空间。现在正是消除这些碎片的机会。
mysqldump 您的数据并对其进行 gzip
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQLDUMP_OPTIONS="--routines --triggers --single-transaction --all-databases"
mysqldump ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} | gzip > MySQLData.sql.gz
在共享存储中使用 datadir 设置 MySQL 实例
将该备份加载到 MySQL 实例中
gzip -d < MySQLData.sql.gz | mysql ${MYSQL_CONN}
这样,重新加载时数据目录应该是 82GB,而不是 95GB