diff --git a/CHANGELOG b/CHANGELOG
index 811089bbc61d34a48f191e1a124db3d8ad26e9be..7a54700af04f148684f7be3d9fff6c7a2f173da6 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -54,6 +54,7 @@ v 8.0.0 (unreleased)
   - Sort users autocomplete lists by user (Allister Antosik)
   - Webhook for issue now contains repository field (Jungkook Park)
   - Add ability to add custom text to the help page (Jeroen van Baarsen)
+  - Add pg_schema to backup config
 
 v 7.14.3
   - No changes
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index 0005d44e0f2335c7349e4663175068f510c28d9f..eada70faebcbc4980b14055c3929ab71fe3ecb1d 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -306,6 +306,7 @@ production: &base
     path: "tmp/backups"   # Relative paths are relative to Rails.root (default: tmp/backups/)
     # archive_permissions: 0640 # Permissions for the resulting backup.tar file (default: 0600)
     # keep_time: 604800   # default: 0 (forever) (in seconds)
+    # pg_schema: public     # default: nil, it means that all schemas will be backed up
     # upload:
     #   # Fog storage connection settings, see http://fog.io/storage/ .
     #   connection:
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index fe81ffd420554da441f917229cfa3061b8e38202..37c76df12c4e1c6a3b7a0ac8df9c066e89cda5b0 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -219,6 +219,7 @@ Settings.gitlab_shell['ssh_path_prefix'] ||= Settings.send(:build_gitlab_shell_s
 #
 Settings['backup'] ||= Settingslogic.new({})
 Settings.backup['keep_time']  ||= 0
+Settings.backup['pg_schema']    = nil
 Settings.backup['path']         = File.expand_path(Settings.backup['path'] || "tmp/backups/", Rails.root)
 Settings.backup['archive_permissions']          ||= 0600
 Settings.backup['upload'] ||= Settingslogic.new({ 'remote_directory' => nil, 'connection' => nil })
diff --git a/lib/backup/database.rb b/lib/backup/database.rb
index ce75476a09b89c42922d0bc3befc0b4c4205d4da..959ac4b7868d1815b6ccece264011de2b30625fe 100644
--- a/lib/backup/database.rb
+++ b/lib/backup/database.rb
@@ -25,8 +25,12 @@ module Backup
       when "postgresql" then
         $progress.print "Dumping PostgreSQL database #{config['database']} ... "
         pg_env
-        # Pass '--clean' to include 'DROP TABLE' statements in the DB dump.
-        system('pg_dump', '--clean', config['database'], out: db_file_name)
+        pgsql_args = ["--clean"] # Pass '--clean' to include 'DROP TABLE' statements in the DB dump.
+        if Gitlab.config.backup.pg_schema
+          pgsql_args << "-n"
+          pgsql_args << Gitlab.config.backup.pg_schema
+        end
+        system('pg_dump', *pgsql_args, config['database'], out: db_file_name)
       end
       report_success(success)
       abort 'Backup failed' unless success