mysql ibdata1最大空间_mysql数据库解决ibdata1文件过大方案

1.问题描述

收到值班室电话,某服务器空间占用超过80%,通过du -sh命令查看定位mysql库里ibdata1文件持续增长所致

2.问题分析

6e7964a91535?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

查看mysql相关配置信息发现mysql未开启分表存储系统,所有数据共享ibdata1存储空间导致ibdata1文件增长过快

6e7964a91535?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

该表格第二列字段为ibdata1中已经使用的空间,第三列为未使用空间。通过该表格可以看出ibdata中有很多空白空间未重复使用

3.问题原因及解决方案

由于MySQL配置方式为数据不独立存储(共享表空间),导致空白空间无法重复使用,占用空间逐渐增加。这个是Mysql的innodb引擎一直以来的问题,即这个ibdata1文件从不会缩小,即使数据删除后的碎片空间也不会被利用,会导致文件的大小大会远大于实际数据的大小。具体参见mysql这个bug描述

解决方案:

重装mysql数据库,整个过程需要暂停服务,主要步骤:

3.1 备份mysql数据库sdnxs

[root@jk-3 mysql]# mysqldump -uroot -p sdnxs > sdnxs.sql

Enter password:

备份/etc/my.cnf

3.2 停止mysql数据库

service mysqld stop

3.3 配置yum源

[root@jk-3 media]# cd /etc/yum.repos.d/

[root@jk-3 yum.repos.d]# vi my.repo

[base]

name=base

baseurl=file:///media/john

enabled=1

gpgcheck=0

挂载iso文件

[root@jk-3 media]# mount -o loop -t iso9660 /media/linux6.8x64.iso /media/john/

3.4 卸载mysql安装包

操作之前需要对my.cnf文件做备份

yum remove mysql*

rm –rf /var/lib/mysql/

rm –rf /etc/my.cnf

3.5 重新安装mysql

[root@jk-3 john]# yum -y install mysql*

设置密码

[root@jk-3 john]#  /usr/bin/mysqladmin -u root password 'root'

3.6 将配置文件修改为单表数据分开存储

vim /etc/my.cnf

加入配置

innodb_file_per_table=1

#自动启动

chkconfig  mysqld on

3.7登录mysql创建数据库

启动数据库

service mysqld start

登录

[root@jk-3 john]# mysql -uroot -p

Enter password:

show variables like '%innodb_file%';

导入备份sql

create database sdnxs character set utf8;

use sdnxs;

source /tmp/sdnxs.sql;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值