我有一个很大的数据库。我需要在单个文件中转储所有数据库,同时忽略特定表的数据。我的研发在windows上是成功的,但在Linux服务器上却失败了。
我的windows env数据库转储命令如下,
F:\xampp\mysql\bin/mysqldump -h localhost -u root --password= db_name --add-drop-table --ignore-table=db_name.table1 > F:\xampp\htdocs\c4s\temp\backup\db_name.sql && F:\xampp\mysql\bin/mysqldump -h localhost -u root --password= --add-drop-table --no-data db_name table2 >> F:\xampp\htdocs\projectName\temp\backup\db_name.sql 这个很好!但是当我在Linux环境中执行它时,第二个转储选项不起作用。
Linux环境的转储命令是,
/usr/bin/mysqldump -h localhost -u root --password=mypass db_name db_name.table1 > /var/www/html/projectName/temp/backup/2/db_name.sql && /usr/bin/mysqldump -h localhost -u root --password=mypass --add-drop-table --no-data db_name table2 >> /var/www/html/projectName/temp/backup/db_name.sql 谢谢!
发布于 2015-08-02 19:52:19
如果每个转储单独工作,只需创建一个小的shell脚本dump.sh。
#!/bin/sh -eu
/usr/bin/mysqldump -h localhost -u root --password=mypass db_name db_name.table1
/usr/bin/mysqldump -h localhost -u root --password=mypass --add-drop-table --no-data db_name table2然后,您可以将结果转储到文件中:
./dump.sh > /var/www/html/projectName/temp/backup/db_name.sql由于您没有提到原始方法的问题所在,这里有一个粗略的猜测:
> /var/www/html/projectName/temp/backup/2/db_name.sql
>> /var/www/html/projectName/temp/backup/db_name.sql你在两个不同的文件中转储。如果您想转储到同一个文件中,实际上需要再次命名同一个文件。
此外,通过命令行传递密码也不是一个好主意。在备份运行时,服务器上的任何人都可以使用ps查看密码。最好的方法是创建一个选项文件,其中包含密码和您想要使用的所有其他选项,然后让mysqldump使用这个选项。
选项文件mysqldump.cnf
[mysqldump]
password=secret若要使用该文件,请通过命令行传递它,但不要在命令行提供密码-它将从选项文件中使用:
/usr/bin/mysqldump --defaults-extra-file=mysqldump.cnf -h localhost -u root …有关mysqldump的更多信息,您可以自由地查阅mysqldump手册。
发布于 2015-08-02 20:17:14
我发现了这个问题。--如果在数据库中找不到该列表中的任何表(表后面的表列表--无数据选项),则无数据选项将无法工作。
https://stackoverflow.com/questions/31696812
复制相似问题