heroku db:pull
如果您熟悉的话,我正在尝试使用 Capistrano 任务来执行与其功能类似的操作。
我有一台远程服务器。在那台服务器上,我在文件夹中保存了一堆备份/path/db_backups/
。该文件夹中每天都会备份数据库。
我只想
- 在客户端计算机上的 /path/to/backups_dir/ 下载最新备份
- 在本地解压。
- 将其导入到本地 mysql db。
有人知道处理这个问题的好方法吗?有没有我不知道的宝藏?你手边有脚本吗?
答案1
这是一个相当古老的话题,但这里是我使用 Capistrano 3 处理它的方法。
这将使用您的远程 MySQL 二进制文件(例如,来自您的 Web 服务器的二进制文件)。您不需要直接访问 MySQL 服务器,但必须在您的远程服务器上安装 MySQL 二进制文件。
# ensure that the dump directory exists
%x{mkdir -p #{dump_dir}}
# run mysqldump command to backup the db from the remote server
args = "-u#{db_user} -p#{db_pass} -h#{db_host} #{db_name}"
dump = []
if fetch(:answer)== 'overwrite' then true else false end
# stream the output to local
output = capture(:mysqldump, args)
output.each_line do |line|
dump << line
end
# write the streamed output to a file
File.open("#{dump_dir}/#{db_name}_#{stage}_#{date}.sql", 'w') do |file|
file.puts(dump)
end
然后使用以下方式导入到任何 MySQL 数据库%X
%x{mysql -u#{local_db_user} -p#{local_db_pass} -h#{local_db_host} #{local_db_name} < #{dump_dir}/#{db_name}_#{stage}_#{date}.sql}
希望这能对其他人有所帮助。