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. 备份数据库数据的方法
- 7. SSIS备份数据库任务在winform失败只有
- 8. 数据库备份的Android
- 9. mysqli的数据库备份
- 10. 备份集拥有比其他数据库的备份现有
- 11. SQL服务器数据库备份
- 12. 是否有脚本可以将SQL Azure数据库与数据进行备份?
- 13. VB.Net中mysql数据库的数据库备份
- 14. SQL Server 2008中的数据库备份
- 15. MSSQLLocalDb VB.NET中的数据库备份
- 16. cakephp中的数据库备份问题
- 17. 获取SQLServer2005的错误:备份集拥有比现有的“DBNAME”数据库以外的数据库的备份
- 18. 备份来自postgreSQL数据库(Django站点)的所有数据
- 19. Tsql数据库备份C#
- 20. ASP.net MVC数据库备份
- 21. NodeJS:备份MySQL数据库
- 22. Oracle全数据库备份
- 23. 制作数据库备份
- 24. PHP MySQL数据库备份
- 25. Android数据库备份
- 26. SMO数据库备份
- 27. pythonanywhere备份mysql数据库
- 28. 备份MySQL数据库
- 29. 备份数据库Django MysqlDump
- 30. Drupal数据库备份