使用 mariabackup 備份單一資料庫?

使用 mariabackup 備份單一資料庫?

我一直在努力重做我們的資料庫備份例程,並且研究了 mariabackup,因為考慮到我們模式的大小,mysqldump 不再削減它。我們有多個需要備份的模式 - 它們的大小各不相同,備份頻率也各不相同(有些需要每六個小時備份一次,其他的可以在備份之間間隔一天)。最重要的是,我們的資料庫由兩個資料庫伺服器組成,以主從配置運行。

首先,我針對我們的模式之一運行了以下命令:

mariabackup --backup --user root --password <pass> --databases db1

這產生了「db1」模式資料檔案的副本,以及 MariaDB 本身使用的一些檔案(aria_log、ib_buffer_pool、ib_logfile、ibdata 等)。這非常有效 - 我們可以為每個模式建立單獨的備份。

然而,恢復似乎是另一回事了。在「--prepare」備份並發出 mariabackup --copy-back 指令後,它抱怨資料目錄必須為空。如果我有單獨的備份,我是否可以在一個資料庫(或更確切地說,一個 MariaDB 實例)下恢復這些架構?更清楚地說,如果我對模式“db1”、“db2”和“db3”進行了備份,我似乎無法在同一資料庫實例下將它們全部恢復 - 有什麼我可以做的嗎?

答案1

像您一樣的部分備份只能使用 --prepare --export 來還原。它會單獨產生一些 .cfg 檔案和 .ibd 檔案。對於目標系統上的每個表,「恢復」意味著「ALTER TABLE .. DISCARD TABLESPACE」、「ALTER TABLE IMPORT TABLESPACE」。不幸的是,它不是 100% 自動化,因為要丟棄目標系統上的表空間,您首先需要在目標系統上建立一個表空間,使用相同的“CREATE TABLE”

相關內容