ssh Mysql转储表部件(11GB DB转小件)

时间:2014-06-02 12:55:03

标签: mysql ssh

我面对以下情况:

我们有一个11GB的数据库表,超过2.57亿条记录,需要备份。通过PHPmyAdmin导出是不可能的(chrome不断崩溃)并使用SSH mysqldump tablename备份将导致空间磁盘空间不足(错误28)。

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

我正在使用的内容:

  

mysqldump -p -u username database_name database_table> dbname.sql

[编辑]

了解如何使用以下内容获取< 50.0000.0000到SQL的行:

  

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

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

任何人都知道答案是否可能以及我应该使用什么命令?

3 个答案:

答案 0 :(得分:1)

问题已解决:

第1部分(< 50.000.000):

  

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

第2部分(> 50.000.000至< 100.0000.000):

  

mysqldump -p -u db_name db_table --where =' id> = 50000000&&   ID<亿' > part_2.sql

最后一部分(> 250.000.000)

  

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

等等..

答案 1 :(得分:0)

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

OR

你需要写一些程序,脚本来实现那个

答案 2 :(得分:0)

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

  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

进入数据库后。