一、Greenplum擴展分類
- 在現有segment主機上添加新的segment。
- 添加新的segment主機並添加新的segment。
二、總體步驟介紹:
- 爲擴展準備新的節點
具體步驟包括修改操作系統參數,安裝數據庫軟件,交換SSH祕鑰。
如非添加新的segment主機,此步驟省略。 - 生成擴展配置文件
使用gpexpand命令交互方式生成節點擴展配置文件。
須指定需要擴展segment的主機以及擴展模式(expansion schema)。
根據提示輸入需要擴展的segment數量、primary路徑等信息。
如配置了mirror,需要執行mirror的分佈方式和路徑。
如數據庫中包含文件空間,需要指定文件空間路徑。
生成的配置文件格式爲gpexpand_inputfile_yyyymmdd_hhmmss
生成的文件空間配置文件爲gpexpand_inputfile_yyyymmdd_hhmmss.fs - 初始化新的segment
該步驟會自動停止KADB數據庫,並在初始化新的segment完成後重啓系統。 - 重分佈表
擴展模式中會生成三張表:
gpexpand.status gpexpand.status_detail gpexpand.expansion_progress
可以通過修改gpexpand.status_detail表中的rank值,設定需要重分佈的表的優先級。
可以通過查看gpexpand.expansion_progress瞭解重分佈的預估進度。 - 刪除擴展模式。
三、命令參考
1.環境準備
創建集羣管理用戶kaadmin,拷貝SSH祕鑰到新的主機。
將現有節點上的數據庫軟件同步到新的節點。
$gpssh-exkeys -e host_exist -x host_new
$gpseginstall -f ./host_new -u kaadmin
2.生成配置文件
$gpexpand –f hostfile_segment -D expansc
3.初始化新的segment
$gpexpand –i kaexpand_inputfile_20180108_164123 –D expandsc –S –V –v –n 1 –B 1 –t /tmp
4.重分佈表
$gpexpand –a –d 2:00:00 –D expands –S –t /tmp –v –n 1
5.刪除擴展模式
$kaexpand -c
四、失敗回滾
在初始化新的segment步驟,由於多種原因,可能導致此步驟失敗,如配置文件錯誤,磁盤空間不足等,此時需要將擴展操作回滾,待失敗原因解決之後,再次執行初始化新的segment操作。
$gpexpand –rollback –D expands
五、注意事項
1.表中有唯一索引時,擴容過程執行到檢測唯一索引步驟之後不再繼續執行,具體提示如下:
Tables with unique indexes exists. Until these tables are successfully redistributed, unique constraints may be violated. For more information on this issue, see the Greenplum Administrator Guide
解決辦法,先刪除唯一索引,擴容完成之後再建立。
2.擴容的系統,需要有mirror。
提示信息如下:
primary must have mirror when mirroring enabled:%s %repr(seg)
(當時我只建了master的standy,segment的mirror未配置,結果就不讓擴容,提示需要建立mirror才行。)