скопировать производственную базу данных в постановку Capistrano - PullRequest
3 голосов
/ 04 ноября 2010

Я использую рельсы и капистрано с промежуточным и рабочим сервером. Мне нужно иметь возможность копировать производственную базу данных в промежуточную базу данных при развертывании в промежуточную. Есть ли простой способ сделать это?

Я думал о том, чтобы сделать это с MySQL и что-то вроде:

before "deploy:migrate" do
  run "mysqldump -u root #{application}_production > output.sql"
  run "mysql -u root #{application}_staging < output.sql"
end

(я не проверял это кстати, так что не уверен, что это будет работать) но было бы легче / лучше, если бы был другой путь.

Спасибо за любую помощь

Ответы [ 3 ]

3 голосов
/ 26 сентября 2011

Это быстрый способ сделать это тоже. При этом используются удаленные команды и каналы SSH, чтобы избежать временных файлов.

mysql -e 'DROP DATABASE stag_dbname;'
ssh prod.foo.com mysqldump -uprodsqluser -pprodsqlpw prod_dbname | gzip -c | gunzip -c | mysql stag_dbname
3 голосов
/ 12 апреля 2012

Вот мой фрагмент развертывания:

namespace :deploy do
  task :clone_production_database, :except => { :no_release => true } do
    mysql_user = "username"
    mysql_password = "s3C_re"
    production_database = "production"
    preview_database = "preview"
    run "mysql -u#{mysql_user} -p#{mysql_password} --execute='CREATE DATABASE IF NOT EXISTS #{preview_database}';"
    run "mysqldump -u#{mysql_user} -p#{mysql_password} #{production_database} | mysql -u#{mysql_user} -p#{mysql_password} #{preview_database}"
  end
end
before "deploy:migrate", "deploy:clone_production_database"
2 голосов
/ 04 ноября 2010

Я делаю это - это действительно полезно. Вот ссылки, объясняющие, как ...

http://c.kat.pe/post/capistrano-task-for-loading-production-data-into-your-development-database/

или

http://blog.robseaman.com/2008/12/2/production-data-to-development

...