/ 20.Jul.2007
U m task para o rake que faz o backup do banco de dados. Na verdade, uma ligeira melhoria nesta task para utilizar o host durante a execução do mysqldump, necessário para dump na Dreamhost.
Dentro da pasta lib/tasks, crie um arquivo chamado backup.rake com o conteúdo abaixo.
require 'find'
namespace :db do
desc "Backup the database to a file. Options: DIR=base_dir RAILS_ENV=production"
task :backup => [:environment] do
datestamp = Time.now.strftime("%Y-%m-%d")
hourstamp = Time.now.strftime("%H-%M-%S")
base_path = ENV["DIR"] || "db"
backup_base = File.join(base_path, 'backup')
backup_folder = File.join(backup_base, datestamp)
backup_file = File.join(backup_folder, "#{RAILS_ENV}_#{hourstamp}_dump.sql")
File.makedirs(backup_folder)
db_config = ActiveRecord::Base.configurations[RAILS_ENV]
host = " -h #{db_config['host']} " if db_config['host'] and !db_config['socket']
sh "mysqldump #{host} -u #{db_config['username']} -p#{db_config['password']} #{db_config['database']} > #{backup_file} ; bzip2 -z #{backup_file}"
dir = Dir.new(backup_base)
all_backups = dir.entries[2..-1].sort.reverse
puts "Created backup: #{backup_file}.bz2"
end
end
Depois é só executar:
rake db:migrate
ou
rake db:migrate RAILS_ENV=production
E para resturar o banco:
bzcat db/backup/2007-07-20/production_18-11-43_dump.sql.bz2 | mysql -u root mephisto_development
(manual ainda – talvez idéia para uma outra task. Mas prefiro não facilitar muito o restore por enquanto, pois pode causar estragos.)
micro theme by seaofclouds, and powered with Mephisto
2 Comments
Interessante … hehe
Humm legal, vou atualizar a minha hehe ;)
Sorry, comments are closed for this article.