diff --git a/CHANGELOG b/CHANGELOG
index 4ada5df5bc159311a8b4ff7da8710a47a783b5a3..8cde537776697037c47e90c008f08d07e3cd1b49 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -39,6 +39,7 @@ v 7.13.0 (unreleased)
   - Correctly show anonymous authorized applications under Profile > Applications.
   - Query Optimization in MySQL.
   - Allow users to be blocked and unblocked via the API
+  - Use native Postgres database cleaning during backup restore
 
 v 7.12.2
   - Correctly show anonymous authorized applications under Profile > Applications.
diff --git a/lib/backup/database.rb b/lib/backup/database.rb
index f677f8def2b142de204c2430c4ea7f36185e8a6d..b8aa6b9ff2f58c2bff1161bf1a8541167751336a 100644
--- a/lib/backup/database.rb
+++ b/lib/backup/database.rb
@@ -18,7 +18,8 @@ module Backup
       when "postgresql" then
         $progress.print "Dumping PostgreSQL database #{config['database']} ... "
         pg_env
-        system('pg_dump', config['database'], out: db_file_name)
+        # Pass '--clean' to include 'DROP TABLE' statements in the DB dump.
+        system('pg_dump', '--clean', config['database'], out: db_file_name)
       end
       report_success(success)
       abort 'Backup failed' unless success
@@ -41,10 +42,6 @@ module Backup
         system('mysql', *mysql_args, config['database'], in: db_file_name)
       when "postgresql" then
         $progress.print "Restoring PostgreSQL database #{config['database']} ... "
-        # Drop all tables because PostgreSQL DB dumps do not contain DROP TABLE
-        # statements like MySQL.
-        Rake::Task["gitlab:db:drop_all_tables"].invoke
-        Rake::Task["gitlab:db:drop_all_postgres_sequences"].invoke
         pg_env
         system('psql', config['database'], '-f', db_file_name)
       end
diff --git a/lib/tasks/gitlab/db/drop_all_postgres_sequences.rake b/lib/tasks/gitlab/db/drop_all_postgres_sequences.rake
deleted file mode 100644
index e9cf0a9b5e862cc16d1b886ecac14ff424d8807c..0000000000000000000000000000000000000000
--- a/lib/tasks/gitlab/db/drop_all_postgres_sequences.rake
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace :gitlab do
-  namespace :db do
-    task drop_all_postgres_sequences: :environment do
-      connection = ActiveRecord::Base.connection
-      connection.execute("SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';").each do |sequence|
-        connection.execute("DROP SEQUENCE #{sequence['relname']}")
-      end
-    end
-  end
-end
diff --git a/lib/tasks/gitlab/db/drop_all_tables.rake b/lib/tasks/gitlab/db/drop_all_tables.rake
deleted file mode 100644
index a66030ab93a9e96f3cc1ac6cb3fc7447d36b4a8f..0000000000000000000000000000000000000000
--- a/lib/tasks/gitlab/db/drop_all_tables.rake
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace :gitlab do
-  namespace :db do
-    task drop_all_tables: :environment do
-      connection = ActiveRecord::Base.connection
-      connection.tables.each do |table|
-        connection.drop_table(table)
-      end
-    end
-  end
-end