私はRailsプロジェクトに取り組んでおり、自宅でプログラムすることもあれば、職場でプログラムすることもあります。開発プロセスでは、データベースにデータを追加しますが、自宅と職場でデータベースを同期する方法が本当に必要です。
Railsアプリでデータベース全体をバックアップ/復元するRakeタスクについて考えています。
とにかくそれをすることはありますか?
私はRailsプロジェクトに取り組んでおり、自宅でプログラムすることもあれば、職場でプログラムすることもあります。開発プロセスでは、データベースにデータを追加しますが、自宅と職場でデータベースを同期する方法が本当に必要です。
Railsアプリでデータベース全体をバックアップ/復元するRakeタスクについて考えています。
とにかくそれをすることはありますか?
レーキタスクを書く:
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
データベースを特定の場所にダンプするスクリプトを使用し、ダンプをフェッチして指定されたデータベースを復元するために使用するスクリプトを使用します。私は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
他のデータベースを使用している場合、これらのツールは明らかに異なりますが、ほとんどのデータベースは何らかの形でバックアップと復元をサポートしています。