Linux磁盘空间报警的解决方式
ibdata1和mysql-bin日志占用空间太多导致磁盘空间报警的解决办法 。 首先分析问题原因:ibdata1为存储类格式,而在INNODB的类型数据状态下,ibdata1用来存储文件的数据和索引,在库名的文件夹里的那些表文件只是结构而已。innodb存储引擎有两种表空间的管理方式,分别是: 1)共享表空间,目前这个是各数据库使用最多的方法; 2)独立表空间,每一个表都会享有一个独立的表空间; 当然,这两种方式都有各自的优点和缺点: 优点: 共享表空间的优点是:能够将表空间切成很多个文件存放到不同的磁盘上(表空间文件大小不受表大小的限制,一个表可以分布在不同步的文件上)。 独立表空间的优点是:其对应的磁盘空间实可以被收回的。 缺点: 共享表空间的缺点是:数据和索引都全部存放在了一个文件里,但数据越来越大时,就将会有一个很大的文件,尽管可以将它分成多个小文件,但是多个表及索引在表空间中混合存储,这样如果对于一个表做了大量删除操作后表空间中将有大量空隙。在共享表空间管理的方式下,如果表空间被分配,就不可能再回缩。若出现临时建索引或是创建一个临时表的操作表空间扩大后,就是删除相关的表也没办法回缩那部分空间了。 独立表空间的缺点:如果单表超过100G,则性能会受到影响。若用共享表空间把文件分开,但会出现的问题就是,如果访问的范围过大同样会访问多个文件。若使用独立表空间,则考虑使用分区表的方法,可缓解问题。当启用独立表空间模式时,需要合理调整innodb_open_files参数的设置。 解决: 1)ibdata1数据太大:只可以通过dump,先导出建库的sql语句,最后重新建立的方法。 2)mysql-bin Log太大有两个解决办法: 手动删除: 删除某个日志:mysql>PURGE MASTER LOGS TO ‘mysql-bin.010′; 删除某天前的日志:mysql>PURGE MASTER LOGS BEFORE ’2010-12-22 13:00:00′; 在/etc/my.cnf里设置只保存N天的bin-log日志 expire_logs_days = 30 //Binary Log自动删除的天数。 (编辑:银川站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |