美文网首页
DB cluster数据删除

DB cluster数据删除

作者: 酸辣粉_2329 | 来源:发表于2019-07-26 06:46 被阅读0次

    当数据库的磁盘满了,需要drop一些比较大的表,但是DROP TABLE 不管用,因为数据库不能写入。

    背景

    Database: my_db
    Table name: my_tbl
    Table size: 300GB+

    保存了show create table my_tbl的结果
    删除了对应的my_tbl.ibdmy_tbl.frm文件

    删除之后,想重新把table建上,可能会遇见以下错误

    ERROR 1813 (HY000): Tablespace '`XXX`.`XXXXXX`' exists.
    

    尝试

    ALTER TABLESPACE [tablespace_name] DROP DATAFILE [file_name]:不管用。


    解决方法:

    1. 创建一个新数据库my_db_2,一定是要在同一个MySQL的server上。
    2. 在新db中,运行保存下来的create table语句,此方法可以在当前数据库文件里生成两个对应的文件my_tbl.ibdmy_tbl.frm
    3. my_tbl.frm文件拷贝到旧的数据库(my_db)目录下
    4. chown mysql:mysql my_tbl.frm
    5. 在旧db(my_db)中,运行DROP TABLE my_tbl,此时就能把表删除,然后再用保存的语句创建同样的表。

    Reference:

    https://stackoverflow.com/a/12086798/5755004

    InnoDB: You can drop the orphaned table inside InnoDB by
    InnoDB: creating an InnoDB table with the same name in another
    InnoDB: database and copying the .frm file to the current database.
    InnoDB: Then MySQL thinks the table exists, and DROP TABLE will
    InnoDB: succeed.

    相关文章

      网友评论

          本文标题:DB cluster数据删除

          本文链接:https://www.haomeiwen.com/subject/zhulrctx.html