mysql下存款和储蓄文件难点

ibdata1 & mysql-bin

复制代码 代码如下:

MySql ibdata1文件

MySql
innodb假设是分享表空间,ibdata1文本进一层大,达到了30七个G,对大器晚成都部队分没用的表张开清空:
truncate table xxx;
下一场optimize table xxx; 未有成效
因为对分享表空间不起功能。
mysql ibdata1寄放数据,索引等,是MYSQL的最器重的数据。
假定不把多少分开存放的话,这几个文件的大小十分轻巧就上了G,以致几十G。对于一些应用来讲,并非太方便。由此要把此文件缩短。
不可能自动缩短,必得数据导出,删除ibdata1,然后数据导入,相比费心,因而要求改为每种表单独的文本。
除恶务尽办法:数据文件单独贮存(分享表空间怎么着改为种种表独立的表空间文件卡塔尔国。
手续如下:
1)备份数据库
备份全部数据库,实施命令
#mysqldump -q -uroot -ppassword –add-drop-table –all-databases
>/home/backup/all.sql
做完此步后,截至数据库服务。
#service mysqld stop
2)找到my.ini或my.cnf文件
linux下执行 
# /usr/libexec/mysqld –verbose –help | grep -A 1 ‘Default options’
Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf 
windows境况下得以:
mysqld –verbose –help > mysqlhelp.txt
notepad mysqlhelp.txt
在里头查找Default options,能够看见查找my.ini的次第,以找到实际目录
3)矫正mysql配置文件
打开my.ini或my.cnf文件
[mysqld]下增添上面配置
innodb_file_per_table=1
表达配置是还是不是见效,能够重启mysql后,试行
#service mysqld restart
#mysql -uroot -ppassword
mysql> show variables like ‘%per_table%’;
+———————–+——-+
| Variable_name         | Value |
+———————–+——-+
| innodb_file_per_table | ON    |
+———————–+——-+
1 row in set (0.00 sec)
mysql> 
看看innodb_file_金莎娱乐手机版,per_table变量是还是不是为ON
4)删除原数据文件
删去原本的ibdata1文件及日志文件ib_logfile*,删除/var/lib/mysql目录下的利用数据库文件夹(mysql文件夹不要删卡塔尔国
5)还原数据库
起始数据库服务
从命令行步向MySQL Server
复原全体数据库,实施命令
#service mysqld start
#mysql -uroot -pocs < /home/backup/all.sql 
透过以上几步后,能够见见新的ibdata1文书就唯有几十M了,数据及索引都成为了针对单个表的小ibd文件了,它们在对应数据库的文书夹下边。
# ll
total 295028
drwx——  2 mysql mysql     36864 Apr 22 14:16 glpi
drwx——  2 mysql mysql     36864 Feb 15 13:45 glpi-1
-rw-rw—-  1 mysql mysql  10485760 Apr 22 14:27 ibdata1
-rw-rw—-. 1 mysql mysql 270532608 Apr 22 14:14 ibdata1-1
-rw-rw—-  1 mysql mysql   5242880 Apr 22 14:27 ib_logfile0
-rw-rw—-. 1 mysql mysql   5242880 Apr 22 14:14 ib_logfile0_bak
-rw-rw—-  1 mysql mysql   5242880 Apr 22 14:28 ib_logfile1
-rw-rw—-. 1 mysql mysql   5242880 Apr 21 22:50 ib_logfile1_bak
drwx——  2 mysql mysql      4096 Apr 22 14:16 mrbs
drwx——  2 mysql mysql      4096 Apr 14 12:05 mrbs-1
drwx——. 2 mysql mysql      4096 Apr 22 14:16 mysql
srwxrwxrwx  1 mysql mysql         0 Apr 22 14:16 mysql.sock
drwx——  2 mysql mysql     12288 Apr 22 14:16 ocsweb
drwx——  2 mysql mysql     12288 Nov 16  2011 ocsweb-1
# ll mrbs
total 808
-rw-rw—- 1 mysql mysql     61 Apr 22 14:16 db.opt
-rw-rw—- 1 mysql mysql  10492 Apr 22 14:16 mrbs_area.frm
-rw-rw—- 1 mysql mysql  98304 Apr 22 14:16 mrbs_area.ibd
-rw-rw—- 1 mysql mysql   9264 Apr 22 14:16 mrbs_entry.frm
-rw-rw—- 1 mysql mysql 131072 Apr 22 14:16 mrbs_entry.ibd
-rw-rw—- 1 mysql mysql   9442 Apr 22 14:16 mrbs_repeat.frm
-rw-rw—- 1 mysql mysql  98304 Apr 22 14:16 mrbs_repeat.ibd
-rw-rw—- 1 mysql mysql   8888 Apr 22 14:16 mrbs_room.frm
-rw-rw—- 1 mysql mysql 114688 Apr 22 14:16 mrbs_room.ibd
-rw-rw—- 1 mysql mysql   8688 Apr 22 14:16 mrbs_users.frm
-rw-rw—- 1 mysql mysql  98304 Apr 22 14:16 mrbs_users.ibd
-rw-rw—- 1 mysql mysql   8658 Apr 22 14:16 mrbs_variables.frm
-rw-rw—- 1 mysql mysql  98304 Apr 22 14:16 mrbs_variables.ibd
-rw-rw—- 1 mysql mysql   8738 Apr 22 14:16 mrbs_zoneinfo.frm
-rw-rw—- 1 mysql mysql  98304 Apr 22 14:16 mrbs_zoneinfo.ibd
# ll mrbs-1
total 88
-rw-rw—- 1 mysql mysql    61 Apr 14 12:05 db.opt
-rw-rw—- 1 mysql mysql 10492 Apr 14 12:05 mrbs_area.frm
-rw-rw—- 1 mysql mysql  9264 Apr 14 12:05 mrbs_entry.frm
-rw-rw—- 1 mysql mysql  9442 Apr 14 12:05 mrbs_repeat.frm
-rw-rw—- 1 mysql mysql  8888 Apr 14 12:05 mrbs_room.frm
-rw-rw—- 1 mysql mysql  8688 Apr 14 12:05 mrbs_users.frm
-rw-rw—- 1 mysql mysql  8658 Apr 14 12:05 mrbs_variables.frm
-rw-rw—- 1 mysql mysql  8738 Apr 14 12:05 mrbs_zoneinfo.frm

文字来源:

8,在翻看一下,是改变好了

难题:磁盘空间报告急方,经查发现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>PU奥迪Q5GE MASTEOdyssey LOGS TO ‘mysql-bin.010′; 删除某天前的日记:mysql>PU福睿斯GE MASTE奥迪Q5 LOGS BEFORE ’2009-12-22 13:00:00′; ②在/etc/my.cnf里安装只保留N天的bin-log日志 expire_logs_days = 30 //Binary Log自动删除的大运

innodb-file-per-table=1

2,停掉mysql

复制代码 代码如下:

从那边能够看来,每一张表都对应当三个.ibd的文本,根分享表空间是不均等的。到此刻就全盘配置好了。

复制代码 代码如下:

复制代码 代码如下:

mysqldump -u tg -p tg >/home/6fan/tg.sql;

mysql -u root -p < /home/6fan/tg.sql

假就算OFF,肯定不是独立表空间。如若是ON的话,也不确定是独立表空间。最直接的方法便是翻开硬盘上的文书,独立表空间,每种表都对应了二个空中。
[/code]
[[email protected]
tg]# ll
总用量 64
-rw-rw—-. 1 mysql mysql 65 12月 30 20:09 db.opt
-rw-rw—-. 1 mysql mysql 8658 12月 30 23:17 gb.frm
-rw-rw—-. 1 mysql mysql 8658 12月 30 23:19 qr.frm
-rw-rw—-. 1 mysql mysql 8658 12月 30 23:19 qy.frm
-rw-rw—-. 1 mysql mysql 8658 12月 30 23:19 tg.frm
-rw-rw—-. 1 mysql mysql 8658 12月[/code]

3,修改my.cnf的安插文件

5,删除使用innodb的数据库,以致日志文件

假如不删除使用innodb的数据库文件夹,运维不了innodb引擎,作者翻看了一下荒诞日志。如下

1,查看一下是分享表空间,依旧独立表空间

复制代码
代码如下: mysql show variables like ‘%per_table%’;
+———————–+——-+ | Variable_name | Val…

相关文章