diff --git a/lib/backup/database.rb b/lib/backup/database.rb
index e3686947164d07123a9a5c71351f6485a5623e20..851445f703d10e9ed4cde1605b0fa629b9f468bb 100644
--- a/lib/backup/database.rb
+++ b/lib/backup/database.rb
@@ -8,6 +8,14 @@ class Database
     attr_reader :progress
     attr_reader :config, :db_file_name
 
+    IGNORED_ERRORS = [
+      # Ignore the DROP errors; recent database dumps will use --if-exists with pg_dump
+      /does not exist$/,
+      # User may not have permissions to drop extensions or schemas
+      /must be owner of/
+    ].freeze
+    IGNORED_ERRORS_REGEXP = Regexp.union(IGNORED_ERRORS).freeze
+
     def initialize(progress, filename: nil)
       @progress = progress
       @config = YAML.load_file(File.join(Rails.root, 'config', 'database.yml'))[Rails.env]
@@ -49,6 +57,8 @@ def dump
       end
 
       report_success(success)
+      progress.flush
+
       raise Backup::Error, 'Backup failed' unless success
     end
 
@@ -83,6 +93,10 @@ def restore
 
     protected
 
+    def ignore_error?(line)
+      IGNORED_ERRORS_REGEXP.match?(line)
+    end
+
     def execute_and_track_errors(cmd, decompress_rd)
       errors = []
 
@@ -97,8 +111,7 @@ def execute_and_track_errors(cmd, decompress_rd)
         err_reader = Thread.new do
           until (raw_line = stderr.gets).nil?
             warn(raw_line)
-            # Recent database dumps will use --if-exists with pg_dump
-            errors << raw_line unless raw_line =~ /does not exist$/
+            errors << raw_line unless ignore_error?(raw_line)
           end
         end
 
diff --git a/spec/lib/backup/database_spec.rb b/spec/lib/backup/database_spec.rb
index 95883062fa0129f055feab717e8c42499bae857d..fccd6db00184db139c25d688d6fce7bec7c01b18 100644
--- a/spec/lib/backup/database_spec.rb
+++ b/spec/lib/backup/database_spec.rb
@@ -38,7 +38,7 @@
 
     context 'when the restore command prints errors' do
       let(:visible_error) { "This is a test error\n" }
-      let(:noise) { "Table projects does not exist\n" }
+      let(:noise) { "Table projects does not exist\nmust be owner of extension pg_trgm\n" }
       let(:cmd) { %W[#{Gem.ruby} -e $stderr.write("#{noise}#{visible_error}")] }
 
       it 'filters out noise from errors' do