如何需要備機
在greenplum資料庫運維過程中,會出現各種問題,上次分享的是因為磁盤問題導緻資料庫的資料檔案損壞,造成一些資料不能查詢,假如在上次的情況下,是主機的磁盤徹底損壞,造成資料庫的執行個體當機,資料無法恢複,且主機換盤需要很長時間才能完成,但是又不能耽誤第二天的業務正常使用,那該怎麼做呢,下面就來介紹下greenplum資料庫的備機替換流程,通過備機替換把有問題的主機踢出去,把正常的主機加到叢集中,來完成叢集的正常使用,根據叢集資料量大小、叢集規模大小及叢集中業務表的使用情況,備機替換大概需要3到6小時之内完成,下面詳細介紹下備機替換流程及替換過程中遇到的問題。
替換流程
備機: sdw4192.168.100.106
問題主機:sdw3192.168.100.105
把備機的主機名修改成替換下來的主機名(源主機),保持主機名一緻,然後修改/etc/hosts檔案,修改需要替換主機的IP位址,操作如下:
檢查叢集狀态,檢視問題主機,确定要替換下來的主機名:

檢查确認sdw3主機為問題主機。
然後登入備機修改主機名:
hostnamesdw3
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=sdw3
原檔案資訊:
[root@mdw~]# cat /etc/hosts
127.0.0.1 localhost
#Greenplum hosts start
192.168.100.101 mdw
192.168.100.102 smdw
192.168.100.103 sdw1
192.168.100.104 sdw2
192.168.100.105 sdw3
修改成如下
192.168.100.106 sdw3
分發/etc/hosts檔案到所有叢集主機
source/usr/local/greenplum-db/greenplum_path.sh
叢集做互信
[root@mdw~]# gpssh-exkeys -f /tmp/all_hosts
分發
gpscp-f /tmp/all_hosts /etc/hosts =:/etc/hosts
驗證是否分發成功
[root@mdw~]# gpssh -f /tmp/all_hosts
=>cat /etc/hosts|grep sdw3
[sdw3]192.168.100.106 sdw3
[smdw]192.168.100.106 sdw3
[mdw] 192.168.100.106 sdw3
[sdw2]192.168.100.106 sdw3
[sdw1]192.168.100.106 sdw3
cat/etc/sysctl.conf
cat/etc/security/limits.conf
cat/etc/security/limits.d/90-nproc.conf
不一緻遷移(若有不一緻,将生産節點的參數檔案scp到目前待替換節點)
scp192.168.100.106:/etc/sysctl.conf /etc/sysctl.conf
scp1192.168.100.106:/etc/security/limits.conf /etc/security/limits.conf
scp192.168.100.106:/etc/security/limits.d/90-nproc.conf/etc/security/limits.d/90-nproc.conf
ulimit-a
使參數生效
/sbin/sysctl-p
如果備機中已存在greenplum資料庫對應的軟體包,且版本一緻,則不需要操作,如沒有對應的軟體包,則從叢集其他主機把軟體包拷貝到備機的相應目錄下,并賦對應權限,操作如下:
ls -lrt /usr/local
scp -r192.168.100.104:/usr/local/greenplum* /usr/local/
chown -R gpadmin:gpadmin greenplum*
rm -rf greenplum-dbgreenplum-cc-web(将未軟連接配接的檔案删除)
ln -s greenplum-db-5.23.0 greenplum-db
Redhat 6 版本
serviceiptables status
serviceiptables stop
Redhat 7版本
systemctlstatus firewalld
systemctlstop firewalld
備機建立和源主機相同的檔案夾目錄
具體目錄根據叢集目錄而定
chown-R gpadmin:gpadmin /data*
mkdir/data{1,2}/{primary,mirror}
mkdir/data{1,2}/{primary,mirror}/{gpfs,default}
此處有兩種方式:
1、修改pg_hba.conf
vi$MASTER_DATA_DIRECTORY/pg_hba.conf
reject =====》禁止使用者連接配接
gpstop-u =====》使配置生效
2、重新開機資料庫到限制模式
停止資料庫:
gpstop-a -M fast
啟動資料庫:
gpstart-aR
gprecoverseg-F
開始資料同步,通過gpstate-e檢視同步進度
資料同步完成
開始進行primary和mirror執行個體的角色切換
gprecoverseg-r
檢視進度如下:
角色切換完成
叢集狀态正常
此處有兩種方式
#reject =====》解除禁止使用者連接配接
gpstart-a
以上就是整個備機替換的操作流程,仔細觀察的話,會發現環境準備是備機替換的重要部分,環境準備如果有問題的話,在替換過程中就會出現各種報錯及問題,在替換過程中如果出現問題,請不要着急,把環境準備這塊仔細檢查一遍,然後再看問題,就會發現問題已經解決了。
問題案例集錦
在修改叢集的/etc/hosts檔案時,由于叢集沒有做ssh互信,導緻在修改時出現一些主機的遺漏,而遺漏的主機恰好和備機在一個資料環内,則會出現該主機對應備機上的執行個體無法恢複的情況。
這個問題在做備機替換的過程中不會出現問題,但是在替換完成過後使用中會出現問題,例如叢集的使用者連接配接數設定為unlimited,但是備機的則是有限制的,在使用過程中就會出現segment主機連接配接數問題,導緻執行個體當機或者應用連接配接上不去等。
防火牆沒有關閉,這個問題會出現在資料同步過程中,叢集同步出錯。
如果備機對應的資料庫執行個體檔案夾沒有建立,則會在同步過程中封包件夾不存在,資料無法同步問題,是以在環境準備的時候,一定要把對應的檔案夾建立好。
以上就是我們在生産中遇到的一些常見問題,往往因為這些看似很小的問題,卻造成了很大的問題,浪費很多時間,是以細節決定成敗,磨刀不誤砍柴工,在做任何事情的時候,準備工作做充分,後續就會事半功倍。