您好,登錄后才能下訂單哦!
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能夠啟動整個數據庫
[root@gpsegment2 ~]# systemctl stop firewalld.service
[root@gpsegment2 ~]# systemctl disable firewalld.service
[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互信
[gpadmin@localhost greenplum]$ ln -s greenplum-db-4.3.17.0/ greenplum-db
遷移設置的目的是,讓原有的機器通過組合一半Primary+Mirror暫時先設置為Primary,并且設置為不同步數據;然后將另外一半需要遷移的Primary+Mirror的狀態都設置為宕機了,同時都設置為Mirror,并且設置為同步數據中;這樣先將數據庫啟動起來,數據庫檢查發現有一半Mirror節點宕機了,就忽略了,然后利用其他的先啟動,此時,數據庫依然可以使用,我們通過GPDB自帶的恢復工具,讓他自動將宕機的Mirror都全量恢復,如此即可完成數據遷移
[gpadmin@gpmaster ~]$ gpstart -m
[gpadmin@gpmaster ~]$ PGOPTIONS='-c gp_session_role=utility' psql #utility模式進入交互
testdb=# set allow_system_table_mods='dml' #設置為允許修改系統配置表
有6臺機器無法啟動,被忽略了,但是正常啟動了6臺,所以可以使用
[gpadmin@gpmaster ~]$ gpstart -a
3個Mirror是Fail,另外3個被當成主機啟動了
[gpadmin@gpmaster ~]$ gprecoverseg -F
可以查看到數據庫已經啟動恢復
開啟另外一個窗口,運行gpstate -m可以查看恢復進度
需要等到所有的節點都恢復成Synchronized狀態
等所有新機器都全量同步完畢之后,因為新機器都設置為Mirror,舊機器的Mirror有一部分被用于Primary,所以需要在運行gprecoverseg -r 讓Mirror和Primary恢復正常
[gpadmin@gpmaster ~]$ gprecoverseg -r
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。