Frage

Ich verwende Rails und Capistrano mit einem Staging- und Produktionsserver. Ich muss in der Lage sein, die Produktionsdatenbank in die Staging -Datenbank zu kopieren, wenn ich mich für die Staging bereitstellen kann. Gibt es eine einfache Möglichkeit, dies zu erreichen?

Ich habe darüber nachgedacht, dies mit MySQL und so ähnlich zu tun:

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

(Ich habe diese übrigens nicht getestet, also nicht sicher, ob es überhaupt funktionieren würde), aber es wäre einfacher / besser, wenn es einen anderen Weg gäbe.

Danke für jede Hilfe

War es hilfreich?

Andere Tipps

Dies ist auch eine schnelle Möglichkeit, dies zu tun. Damit werden SSH -Remote -Befehle und -Pipes verwendet, um TEMP -Dateien zu vermeiden.

mysql -e 'DROP DATABASE stag_dbname;'
ssh prod.foo.com mysqldump -uprodsqluser -pprodsqlpw prod_dbname | gzip -c | gunzip -c | mysql stag_dbname

Hier ist mein Bereitstellungsausschnitt:

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"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top