为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 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사는 WeChat 공개 계정 "정보 시대에 살기"에서 재인쇄되었습니다. 저자는 정보 시대에 살고 있습니다. 이 기사를 재인쇄하려면 Living in the Information Age 공개 계정에 문의하세요. 머신러닝에서는 두 샘플 간의 차이를 판단하는 방법을 기본 개념으로 하여 두 샘플 간의 유사성과 카테고리 정보를 평가할 수 있습니다. 이러한 유사성을 판단하는 척도는 특징 공간에서 두 샘플 사이의 거리입니다. 다양한 데이터 특성에 따라 다양한 측정 방법이 있습니다. 일반적으로 두 데이터 샘플 x, y에 대해 함수 d(x, y)를 정의합니다. 두 샘플 사이의 거리로 정의되면 d(x, y)는 다음 기본 속성을 충족해야 합니다. 부정성: d(x, y)>=0 동일성: d(x, y)=0 ⇔ x=y 쌍

스왑 공간은 Linux 시스템에서 중요한 역할을 하며, 특히 시스템의 메모리가 부족한 경우 더욱 그렇습니다. 높은 부하에서도 시스템이 원활하게 실행되고 안정성을 유지할 수 있도록 도와주는 백업 메모리 저장 공간 역할을 합니다. 이 문서에서는 시스템 성능이 최적화되고 다양한 작업 부하를 처리할 수 있도록 Ubuntu 22.04LTS에 스왑 공간을 추가하는 방법에 대한 자세한 가이드를 제공합니다. 스왑 공간 이해 스왑 공간은 시스템의 물리적 RAM을 보완하는 데 사용되는 가상 메모리를 제공합니다. 시스템의 RAM이 부족하면 커널은 메모리 부족 및 시스템 충돌을 방지하기 위해 데이터를 디스크로 교환합니다. Linux 시스템은 일반적으로 이러한 상황을 처리하기 위해 스왑 공간을 사용합니다. 여러 메모리 집약적 애플리케이션을 동시에 실행하여 매우 큰 파일이나 데이터를 처리합니다.

c 드라이브의 남은 공간은 50-80G가 더 적합합니다. 향후 시스템에서 정크 파일, 캐시 파일 등이 생성되므로 소프트웨어 설치 시 경로 선택에 익숙하지 않고 정리하지 않는 경우 C 드라이브용으로 최소 50GB~80GB의 공간을 확보하는 것이 좋습니다. 컴퓨터를 자주 사용하는 경우 최소 100GB가 필요합니다.

우리 모두 알고 있듯이 시스템 설치가 완료된 후 차지하는 시스템 디스크가 너무 크면 시스템 지연, 지연 및 파일 손실이 발생할 수 있습니다. 따라서 win11 시스템을 설치하기 전에 win11을 업그레이드하는 데 필요한 C 드라이브 공간이 얼마나 되는지 알아야 합니다. win11을 업그레이드하는 데 필요한 C 드라이브 공간: 답변: win11을 업그레이드하려면 20-30GB의 C 드라이브 공간이 필요합니다. 1. Microsoft의 win11 구성 요구 사항에 따르면 win11 설치에는 64GB의 하드 드라이브 공간이 필요함을 알 수 있습니다. 2. 그러나 실제로는 일반적으로 이렇게 큰 공간이 필요하지 않습니다. 3. 이미 win11을 설치한 사용자의 피드백에 따르면 win11 업그레이드에는 약 20-30GB의 C 드라이브 공간이 필요합니다. 4. 하지만 우리 문에

Xbox 콘솔에는 다운로드하고 플레이할 수 있는 다양한 게임이 있습니다. Microsoft의 Xbox Game Pass 구독과 함께 게임 컬렉션의 재미가 멈추지 않습니다. 하지만 Xbox Series S의 경우 356GB, Xbox Series X의 경우 850GB에 달하는 게임용 공간 문제가 있습니다. 이전 버전의 게임에서는 문제가 없었지만 게임의 최대 크기는 아마도 20GB에서 45GB 사이였을 것입니다. 최근 게임에서는 그렇지 않습니다. 최근에 사용 가능한 게임은 결국 디스크 공간을 많이 차지하게 되어 다른 게임을 다운로드할 수 있는 공간이 줄어듭니다. ForzaHorizon5 및 Halo5Guardians 등

iPhone 15 또는 iPhone 15 Pro Max를 사용하는 경우 iOS 17.2를 사용하면 곧 출시될 Apple Vision Pro 헤드폰의 사진 앱에서 볼 수 있도록 공간 비디오를 녹화할 수 있습니다. 방법은 다음과 같습니다. Apple의 VisionPro 헤드폰은 2024년 2월경에 출시될 것으로 예상됩니다. 그때까지 이를 준비할 수 있는 한 가지 방법은 iPhone을 사용하여 Apple 헤드폰에서 볼 수 있는 공간 비디오라는 특수 형식으로 비디오를 녹화하는 것입니다. 공간 비디오는 iPhone에서 볼 때 일반 비디오로 나타나지만 VisionPro에서는 거의 3차원에 가까운 비디오를 제공합니다.

1. 서론 현재 컴퓨터 네트워크의 폭발적인 성장으로 인해, 그에 따른 문제는 네트워크 공격의 수가 급증하고 있다는 점이다. 정부 부서부터 사회의 다양한 주요 인프라에 이르기까지 우리 사회의 다양한 부문은 컴퓨터 네트워크와 정보 기술에 크게 의존하고 있습니다. 분명히 그들은 사이버 공격에도 취약합니다. 일반적인 네트워크 공격은 대상 컴퓨터를 비활성화하거나, 서비스를 오프라인으로 전환하거나, 대상 컴퓨터의 데이터에 액세스합니다. 사이버 공격의 횟수와 영향은 1990년대 이후 크게 증가했습니다. 네트워크 보안은 네트워크 장치 활동을 보호하는 데 사용되는 일련의 기술과 가능한 모든 위협으로부터 이를 보호하기 위한 조치를 의미합니다. 기존 네트워크 보안 기술에서는 대부분 정적 액세스 관리이며 보안 제어 시스템은 미리 설정된 정의에 따라 보호합니다.

클라우드 스토리지는 우리의 일상생활과 업무에서 없어서는 안 될 부분이 되었습니다. 파일 수가 지속적으로 증가함에 따라 클라우드 저장 공간에 대한 수요가 점점 더 두드러지고 있습니다. 중국 최고의 클라우드 스토리지 서비스 제공업체인 Baidu Cloud는 강력한 스토리지 기능과 편리한 운영 경험으로 사용자의 호감을 얻었습니다. 하지만 많은 사용자들이 사용 중에 공간이 부족하다는 문제를 겪을 수 있으므로 이 튜토리얼이 용량 확장을 위한 자세한 솔루션을 제공할 것입니다. 1. Baidu Cloud에 로그인하세요. (바이두 계정, QQ 계정으로 로그인 가능합니다.) 2. 로그인 후 바이두 클라우드 좌측의 "2048G 용량 무료로 받기"를 클릭하세요. 3. Baidu Cloud 모바일 클라이언트를 다운로드하세요. Android 휴대폰용으로 다운로드하려면 클릭하세요.
