我面对以下情况:
我们有一个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之间的所有记录..
任何人都知道答案是否可能以及我应该使用什么命令?
答案 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)
我找到了一个很好的解决方案,可以进行大量转帐!这也可以帮助您避免分部分转移数据库(如本例中所示)-因为这样做的速度非常快:
使用mysqldump导出完整的数据库或部分内容:
mysqldump -p -u db_name db_table --where='id<50000000' >part_1.sql
要导入到新数据库-通过终端登录到新数据库:
mysql -h localhost -upotato -p123456
输入数据库:
USE databasename;
使用源命令:
source /path/to/file.sql;
这比标准X1000的运行速度更快:
mysql -h localhost_new -upotato -p1234567 table_name < /path/to/file.sql
进入数据库后。