Mysql

MariaDb mysqldump 配置

  • March 30, 2021

我們有非常大的數據庫(mariaDB 10.3)和 mysqldump 需要 2-3 小時才能完成完整的數據庫轉儲,並且在轉儲過程中還會導致應用程序性能下降。

經過一番研究,我們發現

$$ mysqldump $$部分可以添加到 my.cnf 文件中。還可以為其添加 ‘quick’ 、 ‘max_allowed_pa​​cket = 512M’ 等選項。 如果我們還可以在上述設置中添加“單事務”,那麼在轉儲期間數據庫將不會被鎖定,它應該會加速應用程序。

那麼下面的條目是否適用於 my.cnf (mariaDB 19.3) ?

[mysqldump]
single-transaction
quick
max_allowed_packet = 512M

如果您的數據庫結構相對靜態,則單獨轉儲(一次),並僅轉儲表數據使用SELECT .. INTO OUTFILE- 這更快。

當然你需要:

  • 創建一個腳本(最好的方法 - 一個事件過程)轉儲所有(或僅可更改的)表數據
  • 創建一個腳本(可能作為結構轉儲中的儲存過程)從該轉儲中恢復數據,同時考慮到關係數據必須嚴格按照“一個然後多”的順序恢復

您提到的所有選項都可以在mysqldump’s command line上指定,因為它的價值。與將這些項目塞入(隱藏)配置文件相比,這可能是編寫自記錄備份過程的更好方法。

而且,如果您的轉儲操作存在性能問題,您可以嘗試忽略該single-transaction選項。如果您的數據庫應用程序使用事務來確保多個表之間的一致性,則需要single-transaction進行備份。否則,您的備份操作對您的其他數據庫工作負載的干擾將更少。

如果您還沒有這樣做,請嘗試從託管數據庫的同一台機器上執行備份。或使用該--compress選項。或兩者。對於大型數據庫,備份產生的網路流量很大,這些建議可以減少它。

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