本篇文章給大家分享的是有關(guān)Linux運(yùn)維中ibdata1和MySQL-bin致磁盤空間問(wèn)題怎么處理,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
創(chuàng)新互聯(lián)公司擁有一支富有激情的企業(yè)網(wǎng)站制作團(tuán)隊(duì),在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕10年,專業(yè)且經(jīng)驗(yàn)豐富。10年網(wǎng)站優(yōu)化營(yíng)銷經(jīng)驗(yàn),我們已為近1000家中小企業(yè)提供了成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)解決方案,定制網(wǎng)站開發(fā),設(shè)計(jì)滿意,售后服務(wù)無(wú)憂。所有客戶皆提供一年免費(fèi)網(wǎng)站維護(hù)!
初學(xué)Linux運(yùn)維,我們可能會(huì)遇到各種故障或者問(wèn)題,想要成為行業(yè)老司機(jī),我們就需要不斷總結(jié)不斷積累。下面給大家整理了前輩分享的一個(gè)Linux運(yùn)維中常見(jiàn)問(wèn)題及解決辦法,我們一起來(lái)學(xué)習(xí):
問(wèn)題:2.51磁盤空間報(bào)警,經(jīng)查發(fā)現(xiàn)ibdata1和mysql-bin日志占用空間太多(其中ibdata1超過(guò)120G,mysql-bin超過(guò)80G)
原因:ibdata1是存儲(chǔ)格式,在INNODB類型數(shù)據(jù)狀態(tài)下,ibdata1用來(lái)存儲(chǔ)文件的數(shù)據(jù)和索引,而庫(kù)名的文件夾里的那些表文件只是結(jié)構(gòu)而已。
innodb存儲(chǔ)引擎有兩種表空間的管理方式,分別是:
1)共享表空間(可拆分為多個(gè)小的表空間文件),這個(gè)是我們目前多數(shù)數(shù)據(jù)庫(kù)使用的方法;
2)獨(dú)立表空間,每一個(gè)表有一個(gè)獨(dú)立的表空間(磁盤文件)
對(duì)于兩種管理方式,各有優(yōu)劣,具體如下:
①共享表空間:
優(yōu)點(diǎn):可以將表空間分成多個(gè)文件存放到不同的磁盤上(表空間文件大小不受表大小的限制,一個(gè)表可以分布在不同步的文件上)。
缺點(diǎn):所有數(shù)據(jù)和索引存放在一個(gè)文件中,則隨著數(shù)據(jù)的增加,將會(huì)有一個(gè)很大的文件,雖然可以把一個(gè)大文件分成多 個(gè)小文件,但是多個(gè)表及索引在表空間中混合存儲(chǔ),這樣如果對(duì)于一個(gè)表做了大量刪除操作后表空間中將有大量空隙。對(duì)于共享表空間管理的方式下,一旦表空間被 分配,就不能再回縮了。當(dāng)出現(xiàn)臨時(shí)建索引或是創(chuàng)建一個(gè)臨時(shí)表的操作表空間擴(kuò)大后,就是刪除相關(guān)的表也沒(méi)辦法回縮那部分空間了。
②獨(dú)立表空間:在配置文件(my.cnf)中設(shè)置: innodb_file_per_table
特點(diǎn):每個(gè)表都有自已獨(dú)立的表空間;每個(gè)表的數(shù)據(jù)和索引都會(huì)存在自已的表空間中。
優(yōu)點(diǎn):表空間對(duì)應(yīng)的磁盤空間可以被收回(Drop table操作自動(dòng)回收表空間,如果對(duì)于刪除大量數(shù)據(jù)后的表可以通過(guò):alter table tbl_name engine=innodb;回縮不用的空間。
缺點(diǎn):如果單表增加過(guò)大,如超過(guò)100G,性能也會(huì)受到影響。在這種情況下,如果使用共享表空間可以把文件分 開,但有同樣有一個(gè)問(wèn)題,如果訪問(wèn)的范圍過(guò)大同樣會(huì)訪問(wèn)多個(gè)文件,一樣會(huì)比較慢。如果使用獨(dú)立表空間,可以考慮使用分區(qū)表的方法,在一定程度上緩解問(wèn)題。 此外,當(dāng)啟用獨(dú)立表空間模式時(shí),需要合理調(diào)整innodb_open_files參數(shù)的設(shè)置。
解決:
1)ibdata1數(shù)據(jù)太大:只能通過(guò)dump,導(dǎo)出建庫(kù)的sql語(yǔ)句,再重建的方法。
2)mysql-bin Log太大:
①手動(dòng)刪除:
刪除某個(gè)日志:mysql>PURGE MASTER LOGS TO ‘mysql-bin.010′;
刪除某天前的日志:mysql>PURGE MASTER LOGS BEFORE ’2010-12-22 13:00:00′;
②在/etc/my.cnf里設(shè)置只保存N天的bin-log日志
expire_logs_days = 30 //Binary Log自動(dòng)刪除的天數(shù)
看完前輩分享的這個(gè)問(wèn)題,趕緊拿個(gè)小本記下來(lái),那樣遇到問(wèn)題就能游刃有余啦!
以上就是Linux運(yùn)維中ibdata1和mysql-bin致磁盤空間問(wèn)題怎么處理,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。