为MySQL数据文件ibdata1瘦身_MySQL
bitsCN.com
为MySQL数据文件ibdata1瘦身
MySQL在运行一段时间后,ibdata1的文件会增长大小,就算删除了表的数据,ibdata1的体积也不会减小。由于硬盘空间有限,这样一直膨胀下去磁盘空间接近崩溃。今天在导出数据的时候就发现了,磁盘竟然满了,明明预留了1个月的用量,1周就占满了,下面就要给ibdata1做个瘦身。
1. 系统环境
Linux Ubuntu 13.04 64bit server
~ uname -a
Linux d2 3.8.0-21-generic #32-Ubuntu SMP Tue May 14 22:16:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
~ cat /etc/issue
Ubuntu 13.04 /n /l
MySQL: 5.5.31-0ubuntu0.13.04.1
~ mysql --version
mysql Ver 14.14 Distrib 5.5.31, for debian-linux-gnu (x86_64) using readline 6.2
硬盘:36G+4G+4G+36G
~ df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/server3--vg-root 36G 31G 3.2G 91% /none 4.0K 0 4.0K 0% /sys/fs/cgroupudev 4.1G 1.1G 3.0G 26% /devtmpfs 824M 280K 823M 1% /runnone 5.0M 0 5.0M 0% /run/locknone 4.1G 3.4G 729M 83% /run/shmnone 100M 0 100M 0% /run/user/dev/vda1 228M 30M 187M 14% /boot192.168.1.10:/home/amg/data 36G 13G 21G 39% /home/amg/dataMySQL的ibdata1占用空间:20G~ cd /var/lib/mysql~ ls -ldrwxr-xr-x 2 mysql mysql 4096 Aug 2 19:38 CBdrwxr-xr-x 2 mysql mysql 4096 Jun 24 23:08 conandrwxr-xr-x 2 mysql mysql 4096 Jun 2 00:52 dbwordpress-rwxr-xr-x 1 root root 0 May 23 00:48 debian-5.5.flag-rwxr-xr-x 1 mysql mysql 20101201920 Aug 2 20:08 ibdata1-rwxr-xr-x 1 mysql mysql 5242880 Aug 2 20:08 ib_logfile0-rwxr-xr-x 1 mysql mysql 5242880 Aug 2 19:38 ib_logfile1drwxr-xr-x 2 mysql mysql 4096 Jun 26 09:03 Macrodrwxr-xr-x 2 mysql root 4096 May 23 00:48 mysql-rwxr-xr-x 1 root root 6 May 23 00:48 mysql_upgrade_infodrwxr-xr-x 2 mysql mysql 4096 May 23 00:48 performance_schemadrwxr-xr-x 2 mysql mysql 4096 May 23 00:53 phpmyadmindrwxr-xr-x 2 mysql root 4096 May 23 00:48 testdrwxr-xr-x 2 mysql mysql 4096 Jul 22 14:09 TFdrwxr-xr-x 2 mysql mysql 4096 Jun 2 01:04 wordpress业务数据表mysql> show tables;+-----------------+| Tables_in_CB |+-----------------+| NSpremium || cb_hft || cb_hft_20130801 || cb_hft_20130802 |+-----------------+4 rows in set (0.00 sec)
2. 发现问题
ibdata1单个文件占用20G大小。
1. MySQL默认设置,没有按表空间分离数据,所有的表的数据都被放到ibdata1文件中。
2. 业务操作,每天会产生一张表cb_hft,晚上的时候对表进行重命名。
RENAME TABLE cb_hft TO cb_hft_20130801;
create table cb_hft like cb_hft_20130801;
3. 每周会把数据导出,同时drop表。但drop后,ibdata1不会减少,随着数据的积累ibdata1越来越大,根空间已经不够用了。
3. 解决问题
1). 导出数据
现在数据库中,有两个数据表,cb_hft_20130801,cb_hft_20130802,分别导出到/run/shm, /dev
~ cd /dev~ mysqldump -uroot -p CB cb_hft_20130802 > export_cb_hft_20130802.sql~ cd /run/shm~ mysqldump -uroot -p CB cb_hft_20130801 > export_cb_hft_20130801.sql~ df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/server3--vg-root 36G 31G 3.2G 91% /none 4.0K 0 4.0K 0% /sys/fs/cgroupudev 4.1G 3.7G 368M 92% /devtmpfs 824M 280K 823M 1% /runnone 5.0M 0 5.0M 0% /run/locknone 4.1G 3.4G 729M 83% /run/shmnone 100M 0 100M 0% /run/user/dev/vda1 228M 30M 187M 14% /boot192.168.1.10:/home/amg/data 36G 13G 21G 39% /home/amg/data两张表分别占了,3.4G,3.7G。登陆mysql删除CB数据库~ mysql -uroot -p~ drop database CB导出其他数据库数据~ cd /run/shm~ mysqldump -uroot -p -R -q --all-databases > others.sql
2). 修改配置文件/etc/mysql/my.cnf
对每张表使用单独的数据文件存储innodb_file_per_table
停止mysql服务器~ sudo /etc/init.d/mysql stop#清空所有数据文件~ sudo rm -rf /var/lib/mysql/*修改配置文件~ sudo vi /etc/mysql/my.cnf[mysqld]innodb_file_per_table重新构建数据库实例~ /usr/bin/mysql_install_db~ ls /var/lib/mysqlmysql performance_schema test#启动MySQL~ sudo /etc/init.d/mysql start
3). 恢复其他数据库
~ mysql < /run/shm/others.sql ~ mysql -umysql -p mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || Macro || TF || conan || dbwordpress || mysql || performance_schema || phpmyadmin || test || wordpress |+--------------------+10 rows in set (0.01 sec)#查看ibdata1大小~ ls -l /var/lib/mysqldrwx------ 2 mysql mysql 4096 Aug 2 21:33 CBdrwx------ 2 mysql mysql 4096 Aug 2 21:23 conandrwx------ 2 mysql mysql 4096 Aug 2 21:23 dbwordpress-rw-rw---- 1 mysql mysql 18874368 Aug 2 21:34 ibdata1-rw-rw---- 1 mysql mysql 5242880 Aug 2 21:34 ib_logfile0-rw-rw---- 1 mysql mysql 5242880 Aug 2 21:34 ib_logfile1drwx------ 2 mysql mysql 4096 Aug 2 21:23 Macrodrwx------ 2 mysql root 4096 Aug 2 21:23 mysqldrwx------ 2 mysql mysql 4096 Aug 2 21:19 performance_schemadrwx------ 2 mysql mysql 4096 Aug 2 21:23 phpmyadmindrwx------ 2 mysql root 4096 Aug 2 21:19 testdrwx------ 2 mysql mysql 4096 Aug 2 21:23 TFdrwx------ 2 mysql mysql 4096 Aug 2 21:23 wordpress
4). 恢复CB数据库
mysql> create database CB;Query OK, 1 row affected (0.00 sec)~ mysql --database CB < /run/shm/export_cb_hft_20130801.sql~ mysql --database CB < /dev/export_cb_hft_20130802.sql~ mysql --database CB < /dev/export_NSpremium.sql#查看ibdata1大小:还是出初始值没有增长~ ls -l /var/lib/mysqldrwx------ 2 mysql mysql 4096 Aug 2 21:33 CBdrwx------ 2 mysql mysql 4096 Aug 2 21:23 conandrwx------ 2 mysql mysql 4096 Aug 2 21:23 dbwordpress-rw-rw---- 1 mysql mysql 18874368 Aug 2 22:01 ibdata1-rw-rw---- 1 mysql mysql 5242880 Aug 2 22:01 ib_logfile0-rw-rw---- 1 mysql mysql 5242880 Aug 2 22:01 ib_logfile1drwx------ 2 mysql mysql 4096 Aug 2 21:23 Macrodrwx------ 2 mysql root 4096 Aug 2 21:23 mysqldrwx------ 2 mysql mysql 4096 Aug 2 21:19 performance_schemadrwx------ 2 mysql mysql 4096 Aug 2 21:23 phpmyadmindrwx------ 2 mysql root 4096 Aug 2 21:19 testdrwx------ 2 mysql mysql 4096 Aug 2 21:23 TFdrwx------ 2 mysql mysql 4096 Aug 2 21:23 wordpress#查看CB库目录:所有的数据都保存在自己单独的数据文件~ ls -l /var/lib/mysql/CB-rw-rw---- 1 mysql mysql 9928 Aug 2 21:33 cb_hft_20130801.frm-rw-rw---- 1 mysql mysql 7159676928 Aug 2 22:08 cb_hft_20130801.ibd-rw-rw---- 1 mysql mysql 9928 Aug 2 22:09 cb_hft_20130802.frm-rw-rw---- 1 mysql mysql 7805599744 Aug 2 22:38 cb_hft_20130802.ibd-rw-rw---- 1 mysql mysql 61 Aug 2 21:30 db.opt
刚才设置的innodb_file_per_table参数已经起作用了,当我们再导出表drop后,对应的数据文件idb就会被删除,系统硬盘空间使用就会在正常值范围内。
查看表数据
mysql> show tables;+-----------------+| Tables_in_CB |+-----------------+| cb_hft_20130801 || cb_hft_20130802 |+-----------------+2 rows in set (0.00 sec)mysql> select count(1) from cb_hft_20130801;+----------+| count(1) |+----------+| 21063172 |+----------+1 row in set (1 min 1.46 sec)#删除表~ drop table cb_hft_20130801;#查看数据文件~ ls -l /var/lib/mysql/CB-rw-rw---- 1 mysql mysql 9928 Aug 2 22:09 cb_hft_20130802.frm-rw-rw---- 1 mysql mysql 7805599744 Aug 2 22:38 cb_hft_20130802.ibd-rw-rw---- 1 mysql mysql 61 Aug 2 21:30 db.opt-rw-rw---- 1 mysql mysql 9274 Aug 2 22:52 NSpremium.frm-rw-rw---- 1 mysql mysql 98304 Aug 2 22:53 NSpremium.ibd
drop后,数据就一起被删除了。
经过对MySQL的调优,ibdata1已经被瘦身!数据库又可以继续正常的稳定的工作了。
bitsCN.com

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本文轉載自微信公眾號「活在資訊時代」,作者活在資訊時代。轉載本文請聯絡活在資訊時代公眾號。在機器學習中,一個基礎的概念就是如何判斷兩個樣本之間的差異,以便能夠評估兩個樣本之間的相似性和類別等資訊。而判斷這種相似性的測量就是兩個樣本在特徵空間內的距離。根據資料特徵的不同,度量方法有很多種。一般而言,對兩個資料樣本x,y,定義一個函數d(x,y),如果定義其為兩個樣本之間的距離,那麼d(x,y)則需要滿足以下幾個基本性質:非負性:d(x,y)>=0同一性:d(x,y)=0 ⇔ x=y對

交換空間在Linux系統中扮演著重要角色,特別是在系統記憶體不足時。它充當一個備用的記憶體儲存空間,可以幫助系統平穩運行,即使在負載高的情況下也能保持穩定性。本文為您提供了在Ubuntu22.04LTS上新增交換空間的詳細指南,以確保您的系統效能經過最佳化並能應付各種工作負載。了解交換空間交換空間提供虛擬內存,用於補充系統的實體RAM。當系統的RAM不足時,核心會將資料交換到磁碟,以防止記憶體不足和系統崩潰。 Linux系統常用交換空間來處理這種情況。同時運行多個內存密集型應用程式處理非常大的檔案或數據

c盤剩餘空間50-80G比較適合。由於系統在日後使用當中會產生垃圾檔案,快取檔案等因此建議至少預留50GB-80GB的空間給C碟;如果您不習慣在安裝軟體時選擇路徑,日常也不是經常清理電腦,那麼至少需要100GB 。

眾所周知,如果系統安裝完成後佔用系統碟太大,可能會導致系統運行卡頓、延遲,甚至是檔案遺失。因此大家在安裝win11系統之前,需要先了解升級win11需要多大C盤空間,下面就跟著小編一起來看看吧。升級win11需要多大C碟空間:答:升級win11需要20-30GB的C碟空間。 1.根據微軟的win11設定要求可以看到,win11安裝需要64GB的硬碟空間。 2、但其實一般來說是不需要這麼大的空間的。 3.根據已經安裝win11的用戶回饋,win11升級大概需要20-30GB的C碟空間。 4.但是如果我門只有

如果您使用的是iPhone15或iPhone15ProMax,iOS17.2允許您錄製空間視頻,以便在Apple即將推出的VisionPro耳機上的照片應用程式中查看。這是你如何做到的。 Apple的VisionPro耳機預計將於2024年<>月左右發售。在那之前,您可以為此做好準備的一種方法是使用iPhone以一種稱為空間視頻的特殊格式錄製視頻,該格式可在Apple的耳機上觀看。在iPhone上觀看時,空間視頻顯示為普通視頻,但它們在VisionPro上提供了近乎三維

Xbox遊戲機有大量可供下載玩的遊戲。再加上Microsoft的Xbox遊戲通行證訂閱,樂趣無窮無盡的遊戲收藏永遠不會停止。但是,有可用於遊戲的空間問題,XboxSeriesS為356GB,XboxSeriesX為850GB。雖然這在以前的遊戲版本中很好,遊戲的最大大小可能在20到45GB之間,這不是最近的遊戲。最近可用的遊戲最終佔用了磁碟上的大量空間,從而使我們下載其他遊戲的空間更少。 ForzaHorizon5和Halo5Guardians等

1、引言由于当下计算机网络的爆炸式增长,随之而来的问题是数目急剧增长的网络攻击。我们社会的各种部门,从政府部门到社会上的各种关键基础设施,都十分依赖计算机网络以及信息技术。显然它们也很容易遭受网络攻击。典型的网络攻击就是使目标计算机禁用、使服务脱机或者访问目标计算机的数据。自上世纪九十年代以来,网络攻击的数量和影响已经显著增加。网络安全指的是一系列用来保护网络设备活动和措施的,能够使得它们免遭所有可能威胁的技术。在传统的网络安全技术中,大都是静态的访问管理,安全控制系统会根据预设的定义进行保护。

隨著手機的使用日益頻繁,許多用戶可能會發現手機儲存空間不足,這可能會導致一些應用程式無法正常運作或影響手機的整體效能。對於頭條搜尋極速版的用戶來說,可能有的時候快取內容很多,那麼手機提示空間不足時,該如何處理呢?那就快來下文跟著小編一起操作清理吧!頭條搜尋極速版空間不足怎麼辦答案:清理空間。清理空間的方法:1、先打開頭條搜尋極速版軟體,進入到軟體的首頁後我們點擊右下角的【我的】;2、然後在我的頁面中滑動到下方之後找到【系統設定】功能點選;3、接著在系統設定的頁面中我們點選【清除快取】;4、
