4

ステージングおよび本番サーバーでレールとカピストラーノを使用しています。ステージングにデプロイするときに、本番データベースをステージング データベースにコピーできる必要があります。これを達成する簡単な方法はありますか?

私はmysqlと次のようなものでこれを行うことを考えました:

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

(私はこれをテストしていないので、うまくいくかどうかはわかりません)しかし、別の方法があればもっと簡単/良いでしょう。

助けてくれてありがとう

4

4 に答える 4

3

これが私の展開スニペットです:

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"
于 2012-04-12T16:54:58.167 に答える
3

これも手っ取り早い方法です。これは、SSH リモート コマンドとパイプを使用して一時ファイルを回避します。

mysql -e 'DROP DATABASE stag_dbname;'
ssh prod.foo.com mysqldump -uprodsqluser -pprodsqlpw prod_dbname | gzip -c | gunzip -c | mysql stag_dbname
于 2011-09-26T17:05:13.803 に答える
2

私はこれを行います-それは本当に便利です。方法を説明するリンクは次のとおりです...

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

また

https://web.archive.org/web/20160404204752/http://blog.robseaman.com/2008/12/2/production-data-to-development

于 2010-11-03T23:05:30.660 に答える