mysqldump,然后用于更新远程数据库

mysqldump,然后用于更新远程数据库,mysql,command-line,mysqldump,Mysql,Command Line,Mysqldump,我有一个数据库,包含一个非常大的表,其中包含二进制数据,我想在远程机器上每天更新一次。我不想转储整个表,在远程机器上传输和重新创建它,而是只转储更新,然后使用该转储更新远程机器 我已经知道我可以生成这样的转储文件 mysqldump -u user -p=pass --quick --result-file=dump_file \ --where "Updated >= one_day_ago" \ database_name table_name

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

我已经知道我可以生成这样的转储文件

mysqldump -u user -p=pass  --quick --result-file=dump_file \
          --where "Updated >= one_day_ago" \
          database_name table_name
1) 是否在远程计算机上执行结果“还原”

mysql-u user-p=passdatabase\u name
是否只更新必要的行?或者还有其他不良影响吗


2) 这是最好的方法吗?(我无法使用
--host
选项直接通过管道连接到服务器)

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

因此,要快速回答:

  • 是的,这将在远程计算机上还原,但仅当您使用--replace保存时(这将还原您拥有的文件的最新版本)
  • 我不完全确定您是否可以进行管道备份。据我所知,你可以,但我以前从未试过
  • mysql -u user -p=pass database_name < dump_file