mysqldump通过查询,然后用来更新远程数据库

时间:2014-11-26 02:19:40

标签: mysql command-line mysqldump

我有一个包含非常大的表的数据库,包括我想在远程机器上更新的二进制数据,每天一次。我不想转储整个表,在远程计算机上传输和重新创建它,而是只转储更新,然后使用该转储来更新远程计算机。

我已经明白我可以生成转储文件了。

mysqldump -u user -p=pass  --quick --result-file=dump_file \
          --where "Updated >= one_day_ago" \
          database_name table_name

1)结果"恢复"在远程计算机上

mysql -u user -p=pass database_name < dump_file

只更新必要的行?还是有其他不良影响?

2)这是最好的方法吗? (我无法直接管道并使用--host选项)

1 个答案:

答案 0 :(得分:1)

如果只转储WHERE子句为true的行,则只会获得包含要更新的值的.sql文件。因此,如果使用当前导出选项,则永远不会获得重复值。但是,将这些插入数据库将不起作用。您将不得不使用命令行参数--replace,否则,如果您在表6中转储数据库和标识为table1的行并尝试将其导入您的其他数据库,那么您'如果行已经有id = 6,则会在重复项上出错。使用--replace参数,它将覆盖旧值,只有在有新值时才会发生(根据您的WHERE子句)。

快速回答:

  1. 是的,这将在远程计算机上恢复,但前提是您使用--replace保存(这将恢复您拥有的文件的最新版本)
  2. 我不完全确定你是否可以管道备份。根据{{​​3}},您可以,但我以前从未尝试过。