1. 程式人生 > >Greenplum移除節點

Greenplum移除節點

tps schema 修改 comm uid 拷貝 image obj 環境

基於某某原因,我們的Greenplum需要卸載一個節點(測試環境的Greenplum集群),由於該集群使用了很久,裏面有許多開發所需要的數據,所以在卸掉一個節點後,還要保證數據不會丟失。

經過搜索,在以下站點找到了解決方案
1)https://gp-docs-cn.github.io/docs/admin_guide/managing/restore-diff-system.html
2)https://yq.aliyun.com/articles/173472

當然,期間也遇到了點問題,在此也做個總結和記錄。

1,備份數據【本次使用gp_dump備份】

gp_dump [-a | -s] [-c] [-d] [-D] [-n schema] [-o] [-O] 
    [-t table_name] [-T table_name] [-x] [-h hostname] [-p port] 
    [-U username] [-W] [-i] [-v] [--gp-c] [--gp-d=backup_directory] 
    [--gp-r=reportfile] [--gp-s=dbid [, ...]] database_name

gp_dump -? | --help 

gp_dump --version

該指令最簡潔的使用方式為

gp_dump database_name ;

即直接跟要備份的數據庫名即可。

技術分享圖片

如上圖顯示有文件上使用的時間錯以及備份文件在各個節點上的存儲位置。

2,將要移除節點上的備份文件拷貝到master節點上。

3,從集群中移除節點

技術分享圖片

1)關閉數據庫

gpstop -M fast

2)以管理模式啟動數據庫

gpstart -m

3)在master節點上登錄管理數據庫

PGOPTIONS="-c gp_session_role=utility" psql -d postgres

技術分享圖片

4)查看當前節點

select * from gp_segment_configuration;

技術分享圖片

5)設置操作權限

set allow_system_table_mods=‘dml‘;

技術分享圖片

6)刪除節點(161)

delete from gp_segment_configuration where dbid=2;
delete from pg_filespace_entry where fsedbid=2;

技術分享圖片

註意:這裏很重要,我們需要將刪除後不連續的索引通過update將其修改成連續的,不然啟動的時候會報以下錯誤:

[[email protected] root]$ gpstart -a
20190427:13:45:19:002659 gpstart:ultra-hp-157:gpadmin-[INFO]:-Starting gpstart with args: -a
20190427:13:45:19:002659 gpstart:ultra-hp-157:gpadmin-[INFO]:-Gathering information and validating the environment...
20190427:13:45:19:002659 gpstart:ultra-hp-157:gpadmin-[INFO]:-Greenplum Binary Version: ‘postgres (Greenplum Database) 5.0.0-alpha.8 build commit:548dc837c957d8c4834445b642cda1f0a5bf9b66‘
20190427:13:45:19:002659 gpstart:ultra-hp-157:gpadmin-[INFO]:-Greenplum Catalog Version: ‘301705051‘
20190427:13:45:19:002659 gpstart:ultra-hp-157:gpadmin-[INFO]:-Starting Master instance in admin mode
20190427:13:45:20:002659 gpstart:ultra-hp-157:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information
20190427:13:45:20:002659 gpstart:ultra-hp-157:gpadmin-[INFO]:-Obtaining Segment details from master...
20190427:13:45:21:002659 gpstart:ultra-hp-157:gpadmin-[INFO]:-Setting new master era
20190427:13:45:21:002659 gpstart:ultra-hp-157:gpadmin-[INFO]:-Master Started...
20190427:13:45:21:002659 gpstart:ultra-hp-157:gpadmin-[INFO]:-Shutting down master
20190427:13:45:22:002659 gpstart:ultra-hp-157:gpadmin-[CRITICAL]:-gpstart failed. (Reason=‘‘NoneType‘ object has no attribute ‘valid‘‘) exiting...

7)退出管理模式,正常啟動數據庫

gpstop –m
gpstart

8)將刪除節點的備份文件使用psql恢復到當前數據,例如:

psql ioss_dns -f /data/greenplumdatabak/dump_161/gp_dump_0_2_20190427074146

其中ioss_dns為數據庫名;gp_dump_0_2_20190427074146為備份的數據文件。

到此,移除節點成功。

以上是通過並行備份的方式來備份數據,在各個節點上都會備份各個數據庫的數據,也就是數據備份文件是分散在各個節點上的。 除此之外還可以通過非並行的方式來備份數據,原理就是將所有的數據都備份到master節點上,在數據量較小的情況下還是比較實用,具體操作不在贅述,上面提供的參考連接中有詳細介紹。

Greenplum移除節點