Greenplum/Deepgreen主機改名
在數據庫初始化時,我們可能給主機隨便起了個名字或者用操作係統默認名字就把數據庫運行起來了,隨著項目的運行,規範性要求的提高,我們有時候不得不統一主機名格式。那麼這時候就跑給我們一個問題:Greenplum/Deepgreen可以修改主機名嗎?
答案是肯定的,可以通過修改係統catalog來實現。雖然可以修改,但是官方仍然不建議通過後期修改係統catalog的形式來完成,盡量還是要在初始化時就將主機名格式定義好,一步到位。
主機名修改步驟大體分為:
- 修改服務器主機名
- 以運維模式啟動數據庫
- 修改catalog相關信息
- 關閉當前數據庫並重啟
修改服務器主機名
Linux上如何修改主機名及重啟生效網上資料一大堆,這裏略過。
以運維模式啟動數據庫
本文模擬的場景是數據庫已經關閉的情況下修改主機名,正常運行的數據庫需要先關閉數據庫然後再操作。
此時如果我們使用gpstart命令正常啟動數據庫的話,是會報名字不匹配的錯誤的,因為我們已經修改了主機名。
我們需要以運維模式啟動數據庫:
gpstart -m
然後登陸到Master主機:
PGOPTIONS='-c gp_session_role=utility' psql -U gpadmin postgres
修改catalog相關信息
因為要修改係統catalog,默認係統catalog是不能修改的,所以需要臨時放開一下權限:
set allow_system_table_mods='dml';
放開權限後,對gp_segment_configuration表的hostname和address進行相應的更新即可,例如:
update gp_segment_configuration set hostname='new_host' where address='old_host';
update gp_segment_configuration set address='new_host' where hostname='old_host';
重啟數據庫
修改完成後,推出登陸,關閉當前管理模式:
gpstop -m
重新啟動數據庫,可以正常啟動使用。
注意:
- 如果不給dml權限,會報錯:ERROR: permission denied: "gp_segment_configuration" is a system catalog
- 盡量不要通過這種方式修改主機名,一開始做好規劃,這種方式隻是在萬不得已的情況下使用
最後希望本文能夠幫到大家~~
最後更新:2017-07-25 13:02:42