Module: S3BackupManager::PostgresAdapter

Defined in:
lib/adapters/postgres_adapter.rb

Instance Method Summary collapse

Instance Method Details

#dump_database_to_file(username, database, directory) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/adapters/postgres_adapter.rb', line 4

def dump_database_to_file(username, database, directory)
  directory = "#{directory}/s3postgresbackup/#{database}"
  FileUtils.mkdir_p(directory)
  FileUtils.chmod_R 0770, directory
  FileUtils.chown_R nil, username, directory
  system "cd #{directory} && sudo -u #{username} vacuumdb -z #{database} >/dev/null 2>&1"
  exit(1) unless $?.success?
  dump_file = "#{directory}/#{database}.pgsql"
  system "cd #{directory} && sudo -u #{username} pg_dump --blobs --format=t #{database} > #{dump_file}"
  exit(1) unless $?.success?
  user_file = "#{directory}/globals.pgsql"
  system "cd #{directory} && sudo -u #{username} pg_dumpall -v -f #{user_file} --globals-only >/dev/null 2>&1"
  exit(1) unless $?.success?
  [directory]
end

#restore_database_from_file(username, database, directory) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/adapters/postgres_adapter.rb', line 20

def restore_database_from_file(username, database, directory)
  directory = "#{directory}/tmp/#{database}/s3postgresbackup/#{database}"
  user_file = "#{directory}/globals.pgsql"
  system "cd /tmp && sudo -u #{username} psql -f #{user_file} >/dev/null 2>&1"
  exit(1) unless $?.success?
  dump_file = "#{directory}/#{database}.pgsql"
  recreate_database!(username, database)
  system "cd /tmp && sudo -u #{username} pg_restore --format=t -d #{database} #{dump_file} >/dev/null 2>&1"
  exit(1) unless $?.success?
end