este é um tema bastante antigo, mas eis como liduei com o Capistrano 3.
Isto irá usar o seu binário MySQL remoto (por exemplo, aquele do seu servidor web). Você não precisará de um acesso direto ao servidor MySQL, mas o MySQL binário deve estar instalado em seu servidor remoto.
# 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
Em seguida, importe para qualquer banco de dados MySQL com % 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}
Espero que isso ajude alguém.