您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關Linux運維中ibdata1和mysql-bin致磁盤空間問題怎么處理,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
初學Linux運維,我們可能會遇到各種故障或者問題,想要成為行業老司機,我們就需要不斷總結不斷積累。下面給大家整理了前輩分享的一個Linux運維中常見問題及解決辦法,我們一起來學習:
問題:2.51磁盤空間報警,經查發現ibdata1和mysql-bin日志占用空間太多(其中ibdata1超過120G,mysql-bin超過80G)
原因:ibdata1是存儲格式,在INNODB類型數據狀態下,ibdata1用來存儲文件的數據和索引,而庫名的文件夾里的那些表文件只是結構而已。
innodb存儲引擎有兩種表空間的管理方式,分別是:
1)共享表空間(可拆分為多個小的表空間文件),這個是我們目前多數數據庫使用的方法;
2)獨立表空間,每一個表有一個獨立的表空間(磁盤文件)
對于兩種管理方式,各有優劣,具體如下:
①共享表空間:
優點:可以將表空間分成多個文件存放到不同的磁盤上(表空間文件大小不受表大小的限制,一個表可以分布在不同步的文件上)。
缺點:所有數據和索引存放在一個文件中,則隨著數據的增加,將會有一個很大的文件,雖然可以把一個大文件分成多 個小文件,但是多個表及索引在表空間中混合存儲,這樣如果對于一個表做了大量刪除操作后表空間中將有大量空隙。對于共享表空間管理的方式下,一旦表空間被 分配,就不能再回縮了。當出現臨時建索引或是創建一個臨時表的操作表空間擴大后,就是刪除相關的表也沒辦法回縮那部分空間了。
②獨立表空間:在配置文件(my.cnf)中設置: innodb_file_per_table
特點:每個表都有自已獨立的表空間;每個表的數據和索引都會存在自已的表空間中。
優點:表空間對應的磁盤空間可以被收回(Drop table操作自動回收表空間,如果對于刪除大量數據后的表可以通過:alter table tbl_name engine=innodb;回縮不用的空間。
缺點:如果單表增加過大,如超過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自動刪除的天數
看完前輩分享的這個問題,趕緊拿個小本記下來,那樣遇到問題就能游刃有余啦!
以上就是Linux運維中ibdata1和mysql-bin致磁盤空間問題怎么處理,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。