【发布时间】:2014-04-09 16:50:58
【问题描述】:
我有 150GB 的数据库,我的 ibdata1 文件大小为 240GB,所以我想缩小 ibdata1 文件,因此我必须导出数据库,然后删除表,然后停止 mysql,删除 ibdata1 文件,然后启动 =MYSQL再次导入数据库。
如果上述解决方案是正确的,我如何导出和导入如此庞大的数据库,并且在数据库表中创建了分区。
而且我也不确定在此过程中我是否会丢失任何数据。
提前致谢
【问题讨论】:
我有 150GB 的数据库,我的 ibdata1 文件大小为 240GB,所以我想缩小 ibdata1 文件,因此我必须导出数据库,然后删除表,然后停止 mysql,删除 ibdata1 文件,然后启动 =MYSQL再次导入数据库。
如果上述解决方案是正确的,我如何导出和导入如此庞大的数据库,并且在数据库表中创建了分区。
而且我也不确定在此过程中我是否会丢失任何数据。
提前致谢
【问题讨论】:
如果您使用 mysqldump 导出它,那么该文件可能包含之前重新创建表所需的 CREATE 语句,然后是 INSERT 以重新加载它。
建议您在此过程中(重新加载之前)也将其添加到 my.ini 中:
innodb_file_per_table = 1
或者...如果磁盘空间甚至进行转储,您是否没有备用 150GB 的问题?如果是这样,你已经“把自己画到了一个角落”。
如果您可以得到另一台具有 150GB(或更多)空闲空间的机器,则从该机器运行 mysqldump,写入该机器。
至于“在DB表中创建了分区”;让我们看看细节。 SHOW CREATE TABLE 会很有用。
【讨论】: