Я пытаюсь сделать что-то с задачей Capistrano, похожей на heroku db:pull
функциональность, если вы с ней знакомы.
У меня удаленный сервер. На этом сервере у меня есть куча резервных копий в /path/db_backups/
папка. И в этой папке каждый день создается резервная копия базы данных.
Все, что я хочу сделать, это
Кто-нибудь знает, как с этим справиться? Есть ли драгоценный камень, о котором я не знаю? Есть ли у вас под рукой сценарий?
это довольно старая тема, но вот как я справился с ней с Capistrano 3.
Это будет использовать ваш удаленный двоичный файл MySQL (например, тот, который находится на вашем веб-сервере). Вам не понадобится прямой доступ к серверу 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{mysql -u#{local_db_user} -p#{local_db_pass} -h#{local_db_host} #{local_db_name} < #{dump_dir}/#{db_name}_#{stage}_#{date}.sql}
Надеюсь, это поможет кому-то другому.