8

私はRailsプロジェクトに取り組んでおり、自宅でプログラムすることもあれば、職場でプログラムすることもあります。開発プロセスでは、データベースにデータを追加しますが、自宅と職場でデータベースを同期する方法が本当に必要です。

Railsアプリでデータベース全体をバックアップ/復元するRakeタスクについて考えています。
とにかくそれをすることはありますか?

4

2 に答える 2

17

レーキタスクを書く:

namespace :db do
  task :backup do
    system "mysqldump --opt --user=root --password rose userdetails> xyz.sql"
  end

  task :restore do
    system "mysqldump --user=root --password  < xyz.sql"
  end
end

によって、rake db:backupあなたはあなたがあなたのgit / svnにコミットすることができるSQLを手に入れるでしょう、そしてあなたが家から復元するために働いたらそれを引っ張って実行してくださいrake db:restore

于 2012-07-25T18:36:46.980 に答える
7

データベースを特定の場所にダンプするスクリプトを使用し、ダンプをフェッチして指定されたデータベースを復元するために使用するスクリプトを使用します。私はWhenevergemを使用して、(最初のスクリプトを呼び出して)毎日のバックアップをスケジュールします。これをschedule.rbファイルに入れます。

  every :day, :at => "05:00" do
    command "/var/www/current/script/db_backup.sh -n #{@db_name}"
  end

スクリプトの正確な内容は、使用しているデータベースによって異なります。postgreSQLを使用しているため、バックアップスクリプトは、ダンプの適切な場所を特定した後、pg_dumpを実行します。

pg_dump -F t -U username -f file_location<timestamp>.dat database_name

また、テストのために本番バックアップをローカルデータベースにコピーするために使用する「restore」スクリプトは、pg_restoreを使用します。

pg_restore -U username -O -x -d database_name_new path/to/file

他のデータベースを使用している場合、これらのツールは明らかに異なりますが、ほとんどのデータベースは何らかの形でバックアップと復元をサポートしています。

于 2012-07-25T18:31:16.670 に答える