將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空間不夠,可以單個遷移恢複後再操作下一個。
- 確保要恢複的數據庫已經創建(數據庫名稱已存在),如沒有創建,可使語句創建:
createdb dbname
- 恢複數據庫對象:
$ psql dbname -f /gpdb/backups/gp_dump_1_1_20170727
- 恢複數據:
$ psql database_name -f /gpdb/backups/gp_dump_0_2_20170727
$ psql database_name -f /gpdb/backups/gp_dump_0_3_20170727
$ psql database_name -f /gpdb/backups/gp_dump_0_4_20170727
$ psql database_name -f /gpdb/backups/gp_dump_0_5_20170727
...
End~
最後更新:2017-07-28 07:02:32