Rake任务备份和恢复数据库

时间:2012-07-25 18:18:33

标签: ruby-on-rails database

我正在开发一个Rails项目,有时候我会在家里编程,有时也会在工作中编程。在我的开发过程中,我将数据添加到数据库中,我真的需要一种在家里和工作中同步数据库的方法。

我正在考虑在Rails应用程序中备份/恢复整个数据库的Rake任务 反正有吗?

2 个答案:

答案 0 :(得分:16)

写一个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

答案 1 :(得分:6)

我使用一个脚本将数据库转储到特定位置,第二个脚本获取转储并使用它来恢复指定的数据库。我使用Whenever gem来安排每日备份(通过调用第一个脚本),将它放在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

如果您正在使用其他数据库,这些工具显然会有所不同,但大多数数据库都支持某种形式的备份和恢复。