Empty the database during Postgres backup restore
The expected behavior during a GitLab backup restore is to overwrite existing database data. This works for MySQL because the output of mysqldump contains 'DROP TABLE IF EXISTS' statements. pg_dump on the other hand assumes that one will restore into an empty database. When this is not the case, during the restore with psql some of the data will be skipped if existing data is 'in the way'. By first invoking `rake db:schema:load` during a Postgres GitLab backup restore, we make sure that all important data is correctly restored.
This commit is contained in:
parent
5d6e4bd2d8
commit
8fe10e642a
1 changed files with 2 additions and 0 deletions
|
@ -29,6 +29,8 @@ module Backup
|
||||||
print "Restoring MySQL database #{config['database']} ... "
|
print "Restoring MySQL database #{config['database']} ... "
|
||||||
system('mysql', *mysql_args, config['database'], in: db_file_name)
|
system('mysql', *mysql_args, config['database'], in: db_file_name)
|
||||||
when "postgresql" then
|
when "postgresql" then
|
||||||
|
puts "Destructively rebuilding database schema for RAILS_ENV #{Rails.env}"
|
||||||
|
Rake::Task["db:schema:load"].invoke
|
||||||
print "Restoring PostgreSQL database #{config['database']} ... "
|
print "Restoring PostgreSQL database #{config['database']} ... "
|
||||||
pg_env
|
pg_env
|
||||||
system('psql', config['database'], '-f', db_file_name)
|
system('psql', config['database'], '-f', db_file_name)
|
||||||
|
|
Loading…
Reference in a new issue