如何收缩Mysql的ibdata1文件

6.开启Mysql服务;7.进入Mysql Console执行:◦SET FOREIGN_KEY_CHECKS=0;◦SOURCE all-databases.sql;◦SET FOREIGN_KEY_CHECKS=1;8.重启数据库测试OK就领赏去吧。如果因为断电或者直接关机导致idb文件出错,就需要重构这些文件 [mysqld]加 innodb_force_recovery=1 ...
如何收缩Mysql的ibdata1文件
修改表引擎
1.对每个InnoDB表执行 ALTER TABLE table_name ENGINE=MyISAM;
2.停止Mysql服务;
3.移除InnoDB相关文件ibdata1等;
4.修改my.cnf中的参数,添加innodb_file_per_table;
在my.cnf中[mysqld]下设置
innodb_file_per_table=1
5.启动Mysql服务;
6.将刚才修改后的那些表改回InnoDB:ALTER TABLE table_name ENGINE=InnoDB;
导出InnoDB表
1.使用mysqldump命令导出所有的InnoDB表,例如: mysqldump –add-drop-table –extended-insert –disable-keys –quick ‘db_name’ –tables ‘tbl_name’ > ‘db_name.tbl_name.sql’
2.删掉这些表:
◦SET FOREIGN_KEY_CHECKS=0;
◦DROP TABLE db_name.tbl_name;
◦DROP TABLE db_name1.tbl_name1;
◦–– DROP other tables here…
◦SET FOREIGN_KEY_CHECKS=1;
3.停止Mysql服务;
4.移除InnoDB相关文件ibdata1等;
5.修改my.cnf中的参数,添加innodb_file_per_table;
6.启动Mysql服务;
7.在Mysql Console下导入表:
◦SET FOREIGN_KEY_CHECKS=0;
◦SOURCE db_name.tbl_name.sql;
◦SOURCE db_name1.tbl_name1.sql;
◦–– SOURCE other files here…
◦SET FOREIGN_KEY_CHECKS=1;
导出整个数据库
这个是我常用的,虽然他和耗磁盘和时间,但是确实是最简便的:
1.导出所有的数据: /usr/bin/mysqldump ––extended-insert ––all-databases ––add-drop-database ––disable-keys ––flush-privileges ––quick ––routines ––triggers > all-databases.sql
2.停止Mysql服务;
3.重命名mysql数据文件夹;
4.修改my.cnf中的参数,添加innodb_file_per_table;
5.mysql_install_db重新初始化mysqld;
6.开启Mysql服务;
7.进入Mysql Console执行:
◦SET FOREIGN_KEY_CHECKS=0;
◦SOURCE all-databases.sql;
◦SET FOREIGN_KEY_CHECKS=1;
8.重启数据库测试OK就领赏去吧。

如果因为断电或者直接关机导致idb文件出错,就需要重构这些文件
[mysqld]

加 innodb_force_recovery=12016-08-12
mengvlog 阅读 8 次 更新于 2025-07-20 00:11:53 我来答关注问题0
  •  爱可生云数据库 mysql数据使用逻辑备份mysqldump备份出来的文件有多大

    命令没啥问题,数据文件是二进制文件,备份出来的是转换为SQL语句的文本文件,当然更大了,另外超过10G的数据库备份还原最好使用专门的工具。

  • 1 innodb引擎表开启了事务,执行dml语句,比如delete、update、insert之类,并且没有提交即commit操作的话,可以执行rollback进行回滚恢复。如果是ddl操作,如drop、create、alter之类的操作时无效的 2 在进行删除操作之前有备份,比如mysqldump,物理备份数据文件之类的操作,那么可以恢复到删除前的数据 3 如果...

  •  爱可生云数据库 mysql数据文件大小超过5GB,如何用mysqldump备份,或者其它方式?

    第一:做个定时的Job放到crontab里面,晚上跑 第二:在丛库上做备份 第三:你要搞清楚什么叫冷备?你上面的备份方式是完全错误的。。。停服务备份叫冷备,你这个叫热备 如果你用的是myisam,你网站打不开的原因并不是因为性能,而是因为备份把表锁了,如果是innodb,就更糟糕了,你上面的备份是无...

  • 1 innodb引擎表开启了事务,执行dml语句,比如delete、update、insert之类,并且没有提交即commit操作的话,可以执行rollback进行回滚恢复。如果是ddl操作,如drop、create、alter之类的操作时无效的 2 在进行删除操作之前有备份,比如mysqldump,物理备份数据文件之类的操作,那么可以恢复到删除前的数据 3 如果...

  •  懂视生活 MySQL备份的几种方式的讨论,重点关注在线热备

    innobackupex: from original InnoDB data directory ‘/home/mysql’innobackupex: Backing up as tar stream ‘ibdata1′innobackupex: Backing up file ‘/home/mysql/serverinfo/simsys_djgameserver.ibd’innobackupex: Backing up file ‘/home/mysql/serverinfo/simsys_djgameserverlog.ibd’innobackupex: Backing...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部