天天看點

将Greenplum并行備份恢複到配置不同的新叢集

在greenplum中,我們可以使用 gp_restore 或者 gpdbrestore 對資料庫進行并行恢複,但是并行恢複要求要恢複的新叢集與備份叢集擁有同樣的配置(節點執行個體數量)。但是如果我們的新叢集節點數與原叢集不一樣怎麼辦?還能使用原備份檔案嗎?答案是肯定的,但是由于節點數量不一樣了,我們隻能通過master節點進行非并行備份。

首先我們手裡要有一份 gp_dump 或者 gpcrondump 導出的并行備份檔案。檔案由兩部分組成,來自master的備份包括重建庫所用的ddl語句,來自segments的備份包括所有的使用者資料。

目标greenplum資料庫叢集正在運作。

在目标庫中,建立好對應資料庫。

并行備份的資料檔案,實際上是由copy指令組成的文本格式檔案,恢複的邏輯就是從master将這些資料一個個導入資料庫,資料會根據目前叢集的狀況進行重分布入庫。具體步驟如下:

首先確定備份集合完整。備份檔案包括master節點檔案:gp_dump_1_1_<timestamp>,對應于每個segment執行個體的檔案:gp_dump_0_2_<timestamp>,gp_dump_0_3_<timestamp>等。其中timestamp的值應該一緻,代表導出的時間點。預設的資料檔案存放在各個節點的dumps檔案夾下,操作時需要将這些資料遷移到新恢複節點的master上,如果master空間不夠,可以單個遷移恢複後再操作下一個。

確定要恢複的資料庫已經建立(資料庫名稱已存在),如沒有建立,可使語句建立:<code>createdb dbname</code>

恢複資料庫對象:<code>$ psql dbname -f /gpdb/backups/gp_dump_1_1_20170727</code>

恢複資料:

end~