几招省磁盘空间的方法
- - OurMySQL 我们在工作中时常会遇到一些客户的TPS\QPS都不太高,但磁盘占用非常大,一旦单实例空间太大,像内存、网络、CPU以及备份都将增加相应的开销. 可能仅仅是由于空间不满足使得我们不得不进行扩容,下面的方法提供给大家参考. 1) 字符集是否遵循了最小化原则?(能用latin的就不用gbk. 2) 索引上是否有滥用.
一、通过软连接的方式迁移部分表空间到其他硬盘
优点:对数据没有任何影响,反而可以适当增加IO能力,使用多个磁盘的IOPS
缺点:需要停机
处理步骤:
1、关掉mysql实例
2、cp big.ibd /new/big.ibd
3、rename big.ibd big.ibd.remove
4、ln -s big.ibd /new/big.ibd
5、chow -R mysql:mysql /new/big.ibd
6、启动数据库,检查是否异常
7、删掉 remove的文件.
二、通过blackhole引擎,清理掉一些不重要,但是占用空间较大的表
优点:不需要停机
缺点:只能适用于slave,会缺少数据
处理步骤:
1、确认要处理的机器是slave,要处理的表不会有写入操作.
2、set sql_log_bin = off; stop slave;
3、rename table xx to test.xx;
4、create table xxx engine = blockhole;
5、start slave;
6、观察数据库是否异常
7、drop table if exists test.xxx