簡體   English   中英

Rake任務備份和恢復數據庫

[英]Rake task to backup and restore database

我正在開發一個Rails項目,有時候我會在家里編程,有時也會在工作中編程。 在我的開發過程中,我將數據添加到數據庫中,我真的需要一種在家和工作中同步數據庫的方法。

我正在考慮在Rails應用程序中備份/恢復整個數據庫的Rake任務。
反正有嗎?

寫一個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

我使用一個腳本將數據庫轉儲到特定位置,第二個腳本提取轉儲並使用它來恢復指定的數據庫。 我使用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

如果您正在使用其他數據庫,這些工具顯然會有所不同,但大多數數據庫都支持某種形式的備份和恢復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM