diff options
author | Kamil Trzciński <ayufan@ayufan.eu> | 2015-07-07 10:58:27 +0000 |
---|---|---|
committer | Kamil Trzciński <ayufan@ayufan.eu> | 2015-07-07 10:58:27 +0000 |
commit | 474d798c421517a092ddef2861634df6027b1b19 (patch) | |
tree | 9385d6049d2cf09615c91d1d18ed3e82e4172c98 | |
parent | f76092c06dd1f3b40a6d32ad3d62ea09bf32d1a0 (diff) | |
parent | 69c659ebd3387ec331a30d6bf53d989803f7276f (diff) | |
download | gitlab-ce-474d798c421517a092ddef2861634df6027b1b19.tar.gz |
Merge branch 'compress-db' into 'master'
Compress database backup
Restore handles both cases: uncompressed and compressed backup. As an improvement `IO.popen` can be used.
/cc @jacobvosmaer
See merge request !873
-rw-r--r-- | CHANGELOG | 2 | ||||
-rw-r--r-- | doc/update/mysql_to_postgresql.md | 5 | ||||
-rw-r--r-- | lib/backup/database.rb | 14 |
3 files changed, 20 insertions, 1 deletions
diff --git a/CHANGELOG b/CHANGELOG index 6f607e2da06..4ada5df5bc1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -53,6 +53,8 @@ v 7.12.1 - Fix closed merge request scope at milestone page (Dmitriy Zaporozhets) - Revert merge request states renaming - Fix hooks for web based events with external issue references (Daniel Gerhardt) + - Improve performance for issue and merge request pages + - Compress database dumps to reduce backup size v 7.12.0 - Fix Error 500 when one user attempts to access a personal, internal snippet (Stan Hu) diff --git a/doc/update/mysql_to_postgresql.md b/doc/update/mysql_to_postgresql.md index 2c43cf59c1f..8ef3e0d55cc 100644 --- a/doc/update/mysql_to_postgresql.md +++ b/doc/update/mysql_to_postgresql.md @@ -57,12 +57,15 @@ sudo -u git -H git clone https://github.com/gitlabhq/mysql-postgresql-converter. sudo -u git -H mkdir db sudo -u git -H python mysql-postgresql-converter/db_converter.py gitlabhq_production.mysql db/database.sql +# Compress database backup +sudo -u git -H gzip db/database.sql + # Replace the MySQL dump in TIMESTAMP_gitlab_backup.tar. # Warning: if you forget to replace TIMESTAMP below, tar will create a new file # 'TIMESTAMP_gitlab_backup.tar' without giving an error. -sudo -u git -H tar rf TIMESTAMP_gitlab_backup.tar db/database.sql +sudo -u git -H tar rf TIMESTAMP_gitlab_backup.tar db/database.sql.gz # Done! TIMESTAMP_gitlab_backup.tar can now be restored into a Postgres GitLab # installation. Remember to recreate the indexes after the import. diff --git a/lib/backup/database.rb b/lib/backup/database.rb index 9ab6aca276d..f677f8def2b 100644 --- a/lib/backup/database.rb +++ b/lib/backup/database.rb @@ -22,9 +22,19 @@ module Backup end report_success(success) abort 'Backup failed' unless success + + $progress.print 'Compressing database ... ' + success = system('gzip', db_file_name) + report_success(success) + abort 'Backup failed: compress error' unless success end def restore + $progress.print 'Decompressing database ... ' + success = system('gzip', '-d', db_file_name_gz) + report_success(success) + abort 'Restore failed: decompress error' unless success + success = case config["adapter"] when /^mysql/ then $progress.print "Restoring MySQL database #{config['database']} ... " @@ -48,6 +58,10 @@ module Backup File.join(db_dir, 'database.sql') end + def db_file_name_gz + File.join(db_dir, 'database.sql.gz') + end + def mysql_args args = { 'host' => '--host', |