1. 程式人生 > >Greenplum -- 數據遷移(成倍增加計算能力)

Greenplum -- 數據遷移(成倍增加計算能力)

角色 是否 開啟 service 開始 集群 pri systemctl add

前言

GPDB 數據遷移可以通過全量恢復的方式,如果原來有3個機器,每個機器上面有2個Primary, 2個Mirror,那麽可以通過擴展3部機器,變成每部機器上一個Primary,1個Mirror,在遷移的過程中,需要保證:

原有的機器利用Primary+Mirror可以組成一個完成的原有集群DB,可以正常啟動,這樣才能全量恢復,將數據恢復到擴展的機器上。

如下圖,將原有機器的P1/P2/P3/M0/M2/M3 遷移到新機器,原有機器依然保留P0/P2/P4/M1/M2/M3能夠啟動整個數據庫

技術分享圖片

一、新機器準備工作:

1.1、開始設置新機器的一些參數,這些和之前安裝GPDB是一樣的,包括新建gpadmin組,gpadmin用戶,關閉新機器防火墻

[root@gpsegment2 ~]# systemctl stop firewalld.service
[root@gpsegment2 ~]# systemctl disable firewalld.service

1.2、修改所有機器的hosts文件,同時建立ssh互信免密碼登陸

[gpadmin@gpsegment2 ~]$ vim /etc/hosts #修改hosts文件
192.168.56.103 gpmaster
192.168.56.101 gpsegment3
192.168.56.104 gpsegment1
192.168.56.105 gpsegment2

192.168.56.102 gpsegment4
192.168.56.106 gpsegment5
192.168.56.107 gpsegment6

[gpadmin@gpmaster conf]$ gpssh-exkeys -f hostlist #將新機器域名加入到hostlist文件,運行即可建立ssh互信

1.3、在所有新機器建立GPDB安裝目錄 /opt/greenplum (這個目錄需要跟其他舊機器保持一致,同時將文件夾所有權賦予gpadmin用戶)

技術分享圖片

1.4、和之前安裝GPDB一樣,壓縮並拷貝master機器上的 /opt/greenplum/greenplum-db-4.3.17.0安裝包到新機器上,並解壓,解壓後建立軟連接

[gpadmin@localhost greenplum]$ ln -s greenplum-db-4.3.17.0/ greenplum-db
技術分享圖片

二、開始遷移數據

遷移設置的目的是,讓原有的機器通過組合一半Primary+Mirror暫時先設置為Primary,並且設置為不同步數據;然後將另外一半需要遷移的Primary+Mirror的狀態都設置為宕機了,同時都設置為Mirror,並且設置為同步數據中;這樣先將數據庫啟動起來,數據庫檢查發現有一半Mirror節點宕機了,就忽略了,然後利用其他的先啟動,此時,數據庫依然可以使用,我們通過GPDB自帶的恢復工具,讓他自動將宕機的Mirror都全量恢復,如此即可完成數據遷移

2.1、僅主機模式啟動GPDB

[gpadmin@gpmaster ~]$ gpstart -m
[gpadmin@gpmaster ~]$ PGOPTIONS=‘-c gp_session_role=utility‘ psql #utility模式進入交互
testdb=# set allow_system_table_mods=‘dml‘ #設置為允許修改系統配置表

2.2、修改gp_segment_configuration 將要遷移的DB hostname/address 修改到對應的目標機器上,同時將status設置為d狀態,role角色設置為m

技術分享圖片

2.3、修改gp_segment_configuration 將不需要遷移的DB role角色設置為p,mode設置為c,status設置為u

技術分享圖片

2.4、關閉數據庫,gpstop,重啟數據gpstart -a

有6臺機器無法啟動,被忽略了,但是正常啟動了6臺,所以可以使用
[gpadmin@gpmaster ~]$ gpstart -a
技術分享圖片

2.5、通過gpstate -m可以查看Mirror狀態

3個Mirror是Fail,另外3個被當成主機啟動了
技術分享圖片

2.6、執行全量恢復數據庫

[gpadmin@gpmaster ~]$ gprecoverseg -F
可以查看到數據庫已經啟動恢復
技術分享圖片
開啟另外一個窗口,運行gpstate -m可以查看恢復進度
技術分享圖片
需要等到所有的節點都恢復成Synchronized狀態
技術分享圖片
等所有新機器都全量同步完畢之後,因為新機器都設置為Mirror,舊機器的Mirror有一部分被用於Primary,所以需要在運行gprecoverseg -r 讓Mirror和Primary恢復正常
[gpadmin@gpmaster ~]$ gprecoverseg -r
技術分享圖片

2.8、最後,運行一下,檢查是否所有的機器節點都正常了

技術分享圖片

Greenplum -- 數據遷移(成倍增加計算能力)