Mysql

一致的數據集是什麼意思?(MySQL)

  • December 8, 2016

我每天使用 mysqldump+scheduled 任務對我的 mysql 數據庫進行備份

但是,正如我在這個答案中看到的那樣,mysqldump 不能保證數據集的一致性……這是什麼意思?這意味著如果有人在我備份時訪問該網站,並且他的操作將編輯兩個表,並且一個表已經被 mysqldump 解析,導致可能導致問題的“不完整”備份?如果mysqldump不好,最好的備份方法是什麼?

您可能會導致備份不一致的情況是完全正確的。

您可以通過添加標誌 –lock-all-tables 來使用 mysqldump 進行一致備份。顧名思義,需要注意的是,在備份完成之前,所有表都將被鎖定以防寫入。這取決於您的數據庫的大小可能會很長時間並造成很大的破壞。

有一些替代方案。其中一些是商業的。我將假設您使用的是 MyISAM,它通常比 InnoDB 更難以一致地備份。

一種解決方案是將 MySQL 的數據放在儲存上,以便通過另一種方法進行更快的備份。例如支持快照的 SAN 或 LVM2 塊設備。您仍然必須將 MySQL 置於鎖定狀態,但由於快照只需很短的時間即可完成,因此破壞性影響可以忽略不計。然後,您可以針對數據快照啟動另一個 MySQL 守護程序,以獲取一致的 mysqldump 並在閒暇時將其導出到其他地方。

我自己對 iSCSI 支持的儲存使用了類似的方法。

引用自:https://serverfault.com/questions/20602