MySQL ibdata1和mysql-bin过大的问题

Ibdata1过大

原因:ibdata1是存储格式,在INNODB类型数据状态下,ibdata1用来存储文件的数据和索引,而库名的文件夹里的那些表文件只是结构而已。
InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就感觉不爽,增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。 

1,备份全部数据库,执行命令mysqldump -q -uusername -pyourpassword --add-drop-table -all-databases > /all.sql
做完此步后,停止数据库服务。
2,修改mysql配置文件
修改my.ini文件,增加下面配置
innodb_file_per_table = 1
对每张表使用单独的innoDB文件, 修改/etc/my.cnf文件
3,删除原数据文件
删除原来的ibdata1文件及日志文件ib_logfile*,删除/var/lib/mysql目录下应用数据库文件夹(mysql文件夹不要删)
4,还原数据库
启动数据库服务
还原全部数据库,执行命令mysql -uusername -pyourpassword < /all.sql

mysql-bin过大

查看关于binlog的配置信息
mysql> show variables like '%max_binlog_size%';

重置日志文件,清空原来的日志索引顺序,产生新的日志。
mysql>reset master;

删除7天前的日志
mysql>PURGE BINARY LOGS BEFORE DATE_SUB(NOW( ), INTERVAL 7 DAY);

删除某日志文件
mysql>PURGE BINARY LOGS to 'xxx.log';

 

posted @ 2014-08-12 16:33  haishi633  阅读(280)  评论(0编辑  收藏  举报