Mysql

在複製執行時導入大型 mysql 轉儲

  • January 11, 2022

所以我們在兩個 CentOS 伺服器之間執行了一個簡單的主/從 mysql 複製。

master有多個數據庫。例如..

  • 數據庫1

  • 數據庫2

  • 數據庫3

問題是我們有一個新的 60GB 數據庫(Database4)的 mysql 轉儲文件。

在不中斷複製的情況下導入 Database4 的最佳方法是什麼?

我在想我們可以停止複制,並將 mysqldump 導入主伺服器和從伺服器。然後重新啟動複製,但希望有另一種方法可以最大限度地減少停機時間。

我認為Master不需要任何停機時間。看看這是什麼感覺。

  1. 配置它,以便您擁有 Master-Master。也就是在 Slave 上開啟 binlog 和一些標誌,使其也像 Master;加上CHANGE MASTER對Master做的,讓它也是一個slave。(但還沒有流量從 Slave 流向 Master。)
  2. 在從站上傳入新數據庫。它將復製到主伺服器(並阻塞該方向的複制)。

我認為僅此而已。您可以關閉 MM 並將其保留為 MS,但我更喜歡保留“MM,但只寫一個 M”。

(警告:我沒有嘗試過任何接近此的方法。)

在我看來,你的想法是正確的@user125340 - 我認為載入一個新的 60GB 數據庫以進行主控只是為了複製並擁有大量的二進制日誌和網路流量等,這沒有意義。

您可以按照(從屬優先)的方式做一些事情:

在奴隸上:

  • mysql --init-command="SET SESSION sql_log_bin=0;" -uuser -p -BNe "CREATE DATABASE db_name"
  • mysql --init-command="SET SESSION sql_log_bin=0;" -uuser -p db_name < dump_file.sql

在主上:

  • 重複上述步驟

這樣就沒有停機時間,對複制的影響最小,沒有不必要的二進制日誌/網路流量。

引用自:https://dba.stackexchange.com/questions/174257