Greenplum移除節點
阿新 • • 發佈:2019-05-17
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移除節點