class NixAdm::PostgreSQL::Export
This class exports an entire PostgreSQL
database cluster to $backup_dir/db, including the relevant global settings.
Example:
export = Export.new('db', { :debug => true }) export.run()
Attributes
filesystems[RW]
targets[RW]
Public Class Methods
new(host, options = {})
click to toggle source
Calls superclass method
NixAdm::Backup::new
# File src/lib/nixadm/db/postgresql.rb, line 81 def initialize(host, options = {}) super host, options: options @ssh_opts = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' end
Public Instance Methods
backup_databases()
click to toggle source
This does a pg_dump of all databases in plaintext format. It gzips them all.
# File src/lib/nixadm/db/postgresql.rb, line 108 def backup_databases() cd backup_dir('db') # List of databases on server databases = listDatabases() # List of databases to exclude exclude = { 'template0' => true, 'template1' => true } # Backup individual databases databases.each do |db| next if exclude.has_key?(db) begin log "Dumping: #{db}" store @host, "pg_dump -p 5433 #{db}", "#{db}.db" rescue puts $! log "Failed #{@host} #{db}: #{$?.to_s}", 1 next end end # Dump the globals globals_file = 'globals.sql' log "Dumping globals to #{globals_file}" store @host, 'pg_dumpall -g -p 5433', globals_file end
log(msg, code=0)
click to toggle source
# File src/lib/nixadm/db/postgresql.rb, line 87 def log(msg, code=0) $stderr.puts msg end
run()
click to toggle source
# File src/lib/nixadm/db/postgresql.rb, line 95 def run() begin backup_databases() rescue Exception => ex log "Backup failed: #{ex.to_s}\n #{ex.backtrace}" end end
Protected Instance Methods
listDatabases()
click to toggle source
# File src/lib/nixadm/db/postgresql.rb, line 143 def listDatabases() command = %Q{ psql -At -p 5433 postgres -c 'select datname from pg_database' } pipeline = resolveCommand(command) dbs = [] exec([pipeline]) do |line| dbs << line.strip end return dbs end