4
A
回答
5
下面的腳本是取自eycap的簡化版本,具體來說是this file。
set :dbuser "user"
set :dbhost "host"
set :database "db"
namespace :db do
desc "Get the database password from user"
task :get_password do
set(:dbpass) do
Capistrano::CLI.ui.ask "Enter mysql password: "
end
end
task :backup_name, :only => { :primary => true } do
now = Time.now
run "mkdir -p #{shared_path}/db_backups"
backup_time = [now.year,now.month,now.day,now.hour,now.min,now.sec].join('-')
set :backup_file, "#{shared_path}/db_backups/#{database}-snapshot-#{backup_time}.sql"
end
desc "Dump database to backup file"
task :dump, :roles => :db, :only => {:primary => true} do
backup_name
run "mysqldump --add-drop-table -u #{dbuser} -h #{dbhost} -p#{dbpass} #{database} | bzip2 -c > #{backup_file}.bz2"
end
end
編輯:是的,我想我錯過了你正在尋找一個rake任務,而不是一個Capistrano的任務了點,但我沒有手頭上有一個耙,對不起。
1
我沒有備份我的MySQL數據庫rake任務,但我沒有寫在Ruby腳本來做到這一點對我的WordPress DB:
filename = 'wp-config.php'
def get_db_info(file)
username = nil
password = nil
db_name = nil
file.each { |line|
if line =~ /'DB_(USER|PASSWORD|NAME)', '([[:alnum:]]*)'/
if $1 == "USER"
username = $2
elsif $1 == "PASSWORD"
password = $2
elsif $1 == "NAME"
db_name = $2
end
end
}
if username.nil? || password.nil? || db_name.nil?
puts "[backup_db][bad] couldn't get all needed info"
exit
end
return username, password, db_name
end
begin
config_file = open("#{filename}")
rescue Errno::ENOENT
puts "[backup_db][bad] File '#{filename}' didn't exist"
exit
else
puts "[backup_db][good] File '#{filename}' existed"
end
username, password, db_name = get_db_info(config_file)
sql_dump_info = `mysqldump --user=#{username} --password=#{password} #{dbname}`
puts sql_dump_info
您應該能夠藉此並對其進行一些修改,以便輸入用戶名/密碼/數據庫名稱以便爲您解決問題。我把它放在我的crontab中以便每天運行,因爲它已經是Ruby代碼(可能是一個很好的學習練習),所以將它轉換爲rake任務並不需要太多工作。
告訴我們它是怎麼回事!
1
0
如果您的數據庫中有任何存儲的特效,請務必將「--routines」參數添加到mysqldump中,以便將其備份。
1
有一個名爲「mysql任務」的插件,只是谷歌它。這只是一個rakefile - 我發現它非常易於使用。
1
爲了防止人們仍在衝浪解決方案,我們目前使用ar_fixtures插件來備份我們的數據庫,以及解決方案的一部分。
它提供了耙db:fixtures:dump
任務。這將YAML中的所有東西都吐出到測試/夾具中,因此可以使用db:fixtures:load
重新裝入。
我們在每次功能推送到生產之前使用它進行備份。在從sqlite3遷移到Postgres時,我們也使用了這種方法 - 這非常有用,因爲SQL方言之間的不兼容性在很大程度上隱藏了。
一切順利,d
0
還有就是我的耙任務備份mysql,並循環轉動備份。
#encoding: utf-8
#require 'fileutils'
namespace :mls do
desc 'Create of realty_dev database backup'
task :backup => :environment do
backup_max_records = 4
datestamp = Time.now.strftime("%Y-%m-%d_%H-%M")
backup_dir = File.join(Rails.root, ENV['DIR'] || 'backups', 'db')
backup_file_name = "#{datestamp}_#{Rails.env}_dump.sql"
backup_file_path = File.join(backup_dir, "#{backup_file_name}")
FileUtils.mkdir_p(backup_dir)
#database processing
db_config = ActiveRecord::Base.configurations[Rails.env]
system "mysqldump -u#{db_config['username']} -p#{db_config['password']} -i -c -q #{db_config['database']} > #{backup_file_path}"
raise 'Unable to make DB backup!' if ($?.to_i > 0)
# sql dump file compression
system "gzip -9 #{backup_file_path}"
# backup rotation
dir = Dir.new(backup_dir)
backup_all_records = dir.entries.sort[2..-1].reverse
puts "Created backup: #{backup_file_name}.gz"
#redundant records
backup_del_records = backup_all_records[backup_max_records..-1] || []
# backup deleting too old records
for backup_del_record in backup_del_records
FileUtils.rm_rf(File.join(backup_dir, backup_del_record))
end
puts "Deleted #{backup_del_records.length} old backups, #{backup_all_records.length - backup_del_records.length} backups available"
puts "Backup passed"
end
end
=begin
run by this command: " rake db:backup RAILS_ENV="development" "
=end
相關問題
- 1. SQL 2005中的備份數據庫任務維護計劃
- 2. 備份數據庫是否需要登錄和用戶備份
- 3. 數據庫備份
- 4. 備份數據庫
- 5. 備份數據庫
- 6. SSIS備份數據庫任務在winform失敗只有
- 7. WordPress的數據庫備份
- 8. VB.Net中mysql數據庫的數據庫備份
- 9. MSSQLLocalDb VB.NET中的數據庫備份
- 10. SQL Server 2008中的數據庫備份
- 11. 獲取SQLServer2005的錯誤:備份集擁有比現有的「DBNAME」數據庫以外的數據庫的備份
- 12. 備份來自postgreSQL數據庫(Django站點)的所有數據
- 13. 內容數據庫備份
- 14. ASP.net MVC數據庫備份
- 15. Drupal數據庫備份
- 16. PHP MySQL數據庫備份
- 17. 備份SQL Server數據庫
- 18. 備份數據庫從PHP
- 19. MySQL數據庫備份
- 20. Tsql數據庫備份C#
- 21. Android數據庫備份
- 22. 備份MySQL數據庫
- 23. Postgresql數據庫備份
- 24. Android數據庫備份
- 25. 製作數據庫備份
- 26. 數據庫備份Robocopy
- 27. SMO數據庫備份
- 28. Firebase數據庫備份
- 29. 備份數據庫Django MysqlDump
- 30. 當數據自動備份到備份數據庫時,如何防止數據庫服務器滯後?