天天看點

Greenplum資料庫備機替換流程及問題

如何需要備機

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

替換流程

備機:  sdw4192.168.100.106

問題主機:sdw3192.168.100.105

把備機的主機名修改成替換下來的主機名(源主機),保持主機名一緻,然後修改/etc/hosts檔案,修改需要替換主機的IP位址,操作如下:

檢查叢集狀态,檢視問題主機,确定要替換下來的主機名:

Greenplum資料庫備機替換流程及問題

檢查确認sdw3主機為問題主機。

然後登入備機修改主機名:

hostnamesdw3

vi/etc/sysconfig/network

NETWORKING=yes

HOSTNAME=sdw3

Greenplum資料庫備機替換流程及問題

原檔案資訊:

[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

Greenplum資料庫備機替換流程及問題

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檢視同步進度

Greenplum資料庫備機替換流程及問題

資料同步完成

Greenplum資料庫備機替換流程及問題

開始進行primary和mirror執行個體的角色切換

gprecoverseg-r

檢視進度如下:

Greenplum資料庫備機替換流程及問題

角色切換完成

Greenplum資料庫備機替換流程及問題
Greenplum資料庫備機替換流程及問題

叢集狀态正常

此處有兩種方式

#reject                  =====》解除禁止使用者連接配接

gpstart-a

以上就是整個備機替換的操作流程,仔細觀察的話,會發現環境準備是備機替換的重要部分,環境準備如果有問題的話,在替換過程中就會出現各種報錯及問題,在替換過程中如果出現問題,請不要着急,把環境準備這塊仔細檢查一遍,然後再看問題,就會發現問題已經解決了。

問題案例集錦

在修改叢集的/etc/hosts檔案時,由于叢集沒有做ssh互信,導緻在修改時出現一些主機的遺漏,而遺漏的主機恰好和備機在一個資料環内,則會出現該主機對應備機上的執行個體無法恢複的情況。

這個問題在做備機替換的過程中不會出現問題,但是在替換完成過後使用中會出現問題,例如叢集的使用者連接配接數設定為unlimited,但是備機的則是有限制的,在使用過程中就會出現segment主機連接配接數問題,導緻執行個體當機或者應用連接配接上不去等。

防火牆沒有關閉,這個問題會出現在資料同步過程中,叢集同步出錯。

如果備機對應的資料庫執行個體檔案夾沒有建立,則會在同步過程中封包件夾不存在,資料無法同步問題,是以在環境準備的時候,一定要把對應的檔案夾建立好。

以上就是我們在生産中遇到的一些常見問題,往往因為這些看似很小的問題,卻造成了很大的問題,浪費很多時間,是以細節決定成敗,磨刀不誤砍柴工,在做任何事情的時候,準備工作做充分,後續就會事半功倍。