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
子句)
因此,要快速回答:
mysql -u user -p=pass database_name < dump_file