Class: BR::MysqlDatabase

Inherits:
DatabaseEngine show all
Defined in:
lib/brbackup.rb

Instance Attribute Summary

Attributes inherited from DatabaseEngine

#logger

Instance Method Summary collapse

Methods inherited from DatabaseEngine

#dbpass, #dbuser, #initialize, #log, register_as

Constructor Details

This class inherits a constructor from BR::DatabaseEngine

Instance Method Details

#clone_database(staging_name, io) ⇒ Object



322
323
324
325
326
327
328
329
330
331
332
333
334
335
# File 'lib/brbackup.rb', line 322

def clone_database(staging_name, io)
  log "dropping #{staging_name} database"
  cmd = "mysql -u#{dbuser} #{password_option} -e 'drop database #{staging_name}'"
  Open4.popen4 cmd do |pid, stdin, stdout, stderr|
    log stdout.read
  end
  log "creating #{staging_name} database"
  Open4.popen4 "mysql -u#{dbuser} #{password_option} -e 'create database #{staging_name}'" do |pid, stdin, stdout, stderr|
    log stdout.read
  end
  log "loading new dump..."
  Open4.spawn ["gzip -dc | mysql -u#{dbuser} #{password_option} #{staging_name}"], :stdin => io
  log "new dump loaded."
end

#db_has_myisam?(name) ⇒ Boolean

Returns:

  • (Boolean)


312
313
314
315
# File 'lib/brbackup.rb', line 312

def db_has_myisam?(name)
  query = "SELECT 1 FROM information_schema.tables WHERE table_schema='#{name}' AND engine='MyISAM' LIMIT 1;"
  %x{mysql -u #{dbuser} #{password_option} -N -e"#{query}"}.strip == '1'
end

#dump_database(name, io) ⇒ Object



307
308
309
310
# File 'lib/brbackup.rb', line 307

def dump_database(name, io)
  single_transaction = db_has_myisam?(name) ? '' : '--single-transaction'
  Open4.spawn ["mysqldump -u#{dbuser} #{password_option} #{single_transaction} #{name} | gzip -c"], :stdout => io
end

#password_optionObject



337
338
339
# File 'lib/brbackup.rb', line 337

def password_option
  dbpass.nil? || dbpass.empty? ? "" : "-p'#{dbpass}'"
end

#restore_database(name, io) ⇒ Object



317
318
319
320
# File 'lib/brbackup.rb', line 317

def restore_database(name, io)
  log "mock restoring database..."
  # Open4.spawn ["gzip -dc | mysql -u#{dbuser} #{password_option} #{name}"], :stdin => io
end