如何收缩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 阅读 130 次 更新于 2025-09-09 06:23:18 我来答关注问题0
  •  翡希信息咨询 MySQL探秘(四):InnoDB的磁盘文件及落盘机制

    通过合理配置系统表空间、用户表空间和重做日志文件的大小和数量,以及调整innodb_flush_log_at_trx_commit等参数的值,可以优化InnoDB的性能和数据安全性。后续我们还将学习binlog文件以及数据文件的落盘机制,以及InnoDB事务相关的其他知识。

  •  文暄生活科普 MySql简要框架(上)

    写入磁盘策略:innodb_flush_log_at_trx_commit参数控制,0-每秒刷新一次、1-每次事务提交时写入、2-先写入操作系统的缓存,后周期性每秒刷入硬盘。写入磁盘时机:事务提交时、log buffer空间不足时、Mysql服务正常关闭时、checkpoint时。5. Double Writer Buffer(双写缓冲)缓冲池中的页刷入硬盘之前先写...

  •  爱可生云数据库 mysql删除数据库没有备份怎么恢复

    mysql> delete from sn_test;Query OK, 4 rows affected (0.00 sec)mysql> select * from sn_test;Empty set (0.00 sec)4、mysqlbinlog恢复数据 mysqlbinlog mysql-bin.000006 > 1.sql 查看1.txt里面数据插入的纪录,把删除之前的数据进行恢复 mysqlbinlog mysql-bin.000006 --start-position...

  • 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 - 檬味博客
返回顶部