MySQL Innodb表空间不足的处理方法

504 阅读6分钟
原文链接: www.cnblogs.com
一抹云烟

导航

统计

  • 随笔 - 26
  • 文章 - 2
  • 评论 - 6
  • 引用 - 0
公告

搜索

   

常用链接

随笔档案

最新评论

  • 1. Re:TCP心跳的意义
  • 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表示层 数据格式化,代码转换,数据加密 没有协议会话层 解除或建立与别的接点的联系 ......
  • --风好大
  • 2. Re:远程连接 mySql数据库
  • 10.250.3.153
  • --风好大
  • 3. Re:远程连接 mySql数据库
  • grant all on *.* to 'root'@'10.250.13.148' identified by ‘123’;
  • --风好大
  • 4. Re:远程连接 mySql数据库
  • grant all privileges on *.* to 'root'@'%' with grant option; grant all on *.* to 用户名@"%" identified.......
  • --风好大
  • 5. Re:远程连接 mySql数据库
  • --本地连接 mysql –uroot -p mysql -uroot -p123456 (-p后为用户密码)--远程连接 mysql –uwgb –hXXX.XXX.XXX.XXX –p...
  • --风好大

阅读排行榜

评论排行榜

推荐排行榜

 

MySQL Innodb表空间不足的处理方法

官方给出的解决方案:

添加和删除 InnoDB 数据和日志文件

这一节描述在InnoDB表空间耗尽空间之时,或者你想要改变日志文件大小之时,你可以做的一些事情。

最简单的,增加InnoDB表空间大小的方法是从开始配置它为自动扩展的。为表空间定义里的最后一个数据文件指定autoextend属性。然后在文件耗尽空间之时,InnoDB以8MB为 增量自动增加该文件的大小。增加的大小可以通过设置innodb_autoextend_increment值来配置,这个值以MB为单位,默认的是8。

作为替代,你可以通过添加另一个数据文件来增加表空间的尺寸。要这么做的话,你必须停止MySQL服务器,编辑my.cnf文件 ,添加一个新数据文件到innodb_data_file_path的末尾,然后再次启动服务器。

如果最后一个数据文件是用关键字autoextend定义的,编辑my.cnf文件的步骤必须考虑最后一个数据文件已经增长到多大。获取数据文件的尺寸,把它四舍五入到最接近乘积1024 × 1024bytes (= 1MB),然后在innodb_data_file_path中明确指定大致的尺寸。然后你可以添加另一个数据文件。记得只有innodb_data_file_path里最后一个数据可以被指定为自动扩展。

作为一个例子。假设表空间正好有一个自动扩展文件ibdata1:

innodb_data_home_dir =

innodb_data_file_path = /ibdata/ibdata1:10M:autoextend

假设这个数据文件过一段时间已经长到988MB。下面是添加另一个总扩展数据文件之后的配置行:

innodb_data_home_dir =

innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend

当你添加一个新文件到表空间的之后,请确信它并不存在。当你重启服务器之时,InnoDB创建并初始化这个文件。

当前,你不能从表空间删除一个数据文件。要增加表空间的大小,使用如下步骤:

1.    使用mysqldump 转储所有InnoDB表。

2.    停止服务器。

3.    删除所有已存在的表空间文件。

4.    配置新表空间。

5.    重启服务器。

6.    导入转储文件。

如果你想要改变你的InnoDB日志文件的数量和大小,你必须要停止MySQL服务器,并确信它被无错误地关闭。随后复制旧日志文件到 一个安全的地方以防万一某样东西在关闭时出错而你需要用它们来恢复表空间。从日志文件目录删除所有旧日志文件,编辑my.cnf来改变日志文件配置,并再 次启动MySQL服务器。mysqld 在启动之时发现没有日志文件,然后告诉你它正在创建一个新的日志文件。

 

实际中的简化版:

mysql ibdata1存放数据,索引等,是MYSQL的最主要的数据。

如果不把数据分开存放的话,这个文件的大小很容易就上了G,甚至10+G。对于某些应用来说,并不是太合适。因此要把此文件缩小。

方法:数据文件单独存放。

步骤:

1,备份数据库

从命令行进入MySQL Server 5.0\bin备份全部数据库,执行命令mysqldump -q -uusername -pyourpassword --add-drop-table -all-databases > /all.sql

做完此步后,停止数据库服务。

2,修改mysql配置文件

修改my.ini文件,增加下面配置

innodb_file_per_table

对每张表使用单独的innoDB文件, 修改/etc/my.cnf文件

3,删除原数据文件

删除原来的ibdata1文件及日志文件ib_logfile*,删除data目录下的应用数据库文件夹(mysql文件夹不要删)

4,还原数据库

启动数据库服务

从命令行进入MySQL Server 5.0\bin还原全部数据库,执行命令mysql -uusername -pyourpassword < /all.sql

经过以上几步后,可以看到新的ibdata1文件就只有几十M了,数据及索引都变成了针对单个表的小ibd文件了,它们在相应数据库的文件夹下面。

 

转载 http://robinson.iteye.com/blog/758796

posted on 2017-12-23 10:17 风好大 阅读(1604) 评论(0) 编辑 收藏   刷新评论刷新页面返回顶部 注册用户登录后才能发表评论,请 登录注册访问网站首页。 【推荐】超50万VC++源码: 大型组态工控、电力仿真CAD与GIS源码库!
【免费】要想入门学习Linux系统技术,你应该先选择一本适合自己的书籍
【前端】SpreadJS表格控件,可嵌入应用开发的在线Excel
【直播】如何快速接入微信支付功能
腾讯云 最新IT新闻:
· 区块链概念股票大盘点:蹭了热点就真的能涨么?
· 中国著名物理学家闵乃本因病去世 享年83岁
· 腾讯文档推出“在线收集表”功能:数据收集神器
· 对话极验CEO吴渊:网易甩锅搜索引擎 对侵权行为毫无歉意
· 井贤栋:支付宝增2亿年活 蚂蚁海外9地落地支付
» 更多新闻... 华为云HC0917 最新知识库文章:
· 为什么说 Java 程序员必须掌握 Spring Boot ?
· 在学习中,有一个比掌握知识更重要的能力
· 如何招到一个靠谱的程序员
· 一个故事看懂“区块链”
· 被踢出去的用户
» 更多知识库文章...   Powered by:
博客园
Copyright © 风好大