diff --git a/lib/freedom_patches/safe_migrations.rb b/lib/freedom_patches/safe_migrations.rb
index cdf989fdd5b..718ffffb89f 100644
--- a/lib/freedom_patches/safe_migrations.rb
+++ b/lib/freedom_patches/safe_migrations.rb
@@ -1,11 +1,5 @@
 # frozen_string_literal: true
 
-# We do not run this in production cause it is intrusive and has
-# potential to break stuff, it also breaks under concurrent use
-# which rake:multisite_migrate uses
-#
-# The protection is only needed in Dev and Test
-if ENV['RAILS_ENV'] != "production"
-  require_dependency 'migration/safe_migrate'
-  Migration::SafeMigrate.patch_active_record!
-end
+require_dependency 'migration/safe_migrate'
+
+Migration::SafeMigrate.patch_active_record!
diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake
index 81087473a0e..14b2eb4e202 100644
--- a/lib/tasks/db.rake
+++ b/lib/tasks/db.rake
@@ -66,106 +66,6 @@ task 'db:rollback' => ['environment', 'set_locale'] do |_, args|
   Rake::Task['db:_dump'].invoke
 end
 
-# our optimized version of multisite migrate, we have many sites and we have seeds
-# this ensures we can run migrations concurrently to save huge amounts of time
-Rake::Task['multisite:migrate'].clear
-
-class StdOutDemux
-  def initialize(stdout)
-    @stdout = stdout
-    @data = {}
-  end
-
-  def write(data)
-    (@data[Thread.current] ||= +"") << data
-  end
-
-  def close
-    finish_chunk
-  end
-
-  def finish_chunk
-    data = @data[Thread.current]
-    if data
-      @stdout.write(data)
-      @data.delete Thread.current
-    end
-  end
-end
-
-task 'multisite:migrate' => ['db:load_config', 'environment', 'set_locale'] do |_, args|
-  if ENV["RAILS_ENV"] != "production"
-    raise "Multisite migrate is only supported in production"
-  end
-
-  concurrency = (ENV['MIGRATE_CONCURRENCY'].presence || "20").to_i
-
-  puts "Multisite migrator is running using #{concurrency} threads"
-  puts
-
-  queue = Queue.new
-  exceptions = Queue.new
-
-  old_stdout = $stdout
-  $stdout = StdOutDemux.new($stdout)
-
-  RailsMultisite::ConnectionManagement.each_connection do |db|
-    queue << db
-  end
-
-  concurrency.times { queue << :done }
-
-  SeedFu.quiet = true
-
-  (1..concurrency).map do
-    Thread.new {
-      while true
-        db = queue.pop
-        break if db == :done
-
-        RailsMultisite::ConnectionManagement.with_connection(db) do
-          begin
-            puts "Migrating #{db}"
-            ActiveRecord::Tasks::DatabaseTasks.migrate
-            SeedFu.seed(DiscoursePluginRegistry.seed_paths)
-            if !Discourse.skip_post_deployment_migrations? && ENV['SKIP_OPTIMIZE_ICONS'] != '1'
-              SiteIconManager.ensure_optimized!
-            end
-          rescue => e
-            exceptions << [db, e]
-          ensure
-            begin
-              $stdout.finish_chunk
-            rescue => ex
-              STDERR.puts ex.inspect
-              STDERR.puts ex.backtrace
-            end
-          end
-        end
-      end
-    }
-  end.each(&:join)
-
-  $stdout = old_stdout
-
-  if exceptions.length > 0
-    STDERR.puts
-    STDERR.puts "-" * 80
-    STDERR.puts "#{exceptions.length} migrations failed!"
-    while !exceptions.empty?
-      db, e = exceptions.pop
-      STDERR.puts
-      STDERR.puts "Failed to migrate #{db}"
-      STDERR.puts e.inspect
-      STDERR.puts e.backtrace
-      STDERR.puts
-    end
-    exit 1
-  end
-
-  Rake::Task['db:_dump'].invoke
-end
-
 # we need to run seed_fu every time we run rake db:migrate
 task 'db:migrate' => ['load_config', 'environment', 'set_locale'] do |_, args|