【问题标题】:ssh Mysql dump table parts (11GB DB to smaller pieces)ssh Mysql 转储表部分(11GB DB 到更小的部分)
【发布时间】:2018-11-19 21:40:59
【问题描述】:

我面临以下问题:

我们有一个 11GB 的数据库表,其中包含超过 2.57 亿条记录,需要备份。无法通过 PHPmyAdmin 导出(chrome 不断崩溃),使用 SSH mysqldump 表名备份会出现空间不足磁盘错误(错误 28)。

现在我想知道是否有一种方法可以导出 mysqldump 的行 0 到 ~100.000.000 命令,这样我们就可以制作 3 个部分(或者如果需要更小的部分)。

我正在使用什么:

mysqldump -p -u 用户名 database_name database_table > dbname.sql

[编辑]

了解如何使用以下命令将

mysqldump -p -u db_name db_table --where='id

但现在还有一个大问题,如何走得更远?现在我想获取 50.000.000 和 100.000.000 之间的所有记录 ..

如果可能的话,任何人都知道答案以及我应该使用什么命令?

【问题讨论】:

    标签: mysql ssh


    【解决方案1】:

    问题已解决:

    第 1 部分 (

    mysqldump -p -u db_name db_table --where='idpart_1.sql

    第 2 部分(>50.000.000 到

    mysqldump -p -u db_name db_table --where='id>=50000000 && idpart_2.sql

    最后一部分 (>250.000.000)

    mysqldump -p -u db_name db_table --where='id>250000000' >part_final.sql

    等等……

    【讨论】:

    • 您错过了 100.000.000 到 250.000.000 之间的所有内容 - 或者您也只是懒惰输入:P
    【解决方案2】:

    mysqldump 创建一个包含 sql 语句的文本文件,如果要分段备份 mysql,则必须像这样运行 mysqldump

    mysqldump --where "id%2=0" database_name table > table_even.sql
    mysqldump --where "id%2=1" database_name table > table_odd.sql
    

    你需要编写一些程序,脚本来实现这一点

    【讨论】:

      【解决方案3】:

      我为大量转移找到了一个很好的解决方案!这也可以帮助您避免部分地传输数据库(如本例所示) - 因为它的速度非常快:

      1. 使用 mysqldump 导出完整数据库或部分数据库:

        mysqldump -p -u db_name db_table --where='id<50000000' >part_1.sql

      2. 导入新数据库 - 通过终端登录新数据库:

        mysql -h localhost -upotato -p123456

      3. 进入数据库:

        USE databasename;

      4. 使用源命令:

        source /path/to/file.sql;

      这比标准速度快 X1000:

      mysql -h localhost_new -upotato -p1234567 table_name < /path/to/file.sql
      

      自从你进入数据库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        相关资源
        最近更新 更多