您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何理解配置數(shù)據(jù)庫高可用性中的SEGMENT鏡像,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
前面介紹過了GREENPLUM數(shù)據(jù)庫的備份和恢復。這部分主要介紹GREENPLUM的高可用性配置。GREENPLUM的高可用性是通過master和segment的鏡像來實現(xiàn)的。這種鏡像是基于服務(wù)器級別的鏡像。因此,不僅可以提供存儲級別的保護,還可以防止其它PC服務(wù)器硬件的損壞。
segment級別的鏡像是通過把primary segment對應(yīng)的mirror segment放置到不同的物理主機實現(xiàn)的。正常情況下,只有primary segment的instance處于工作狀態(tài),所有primary segment上的變化通過文件塊的復制技術(shù)拷貝到mirror segment。因此,存放mirror segment的主機上只有復制用的進程,而不存在mirror segment instance。一旦primary segment出現(xiàn)故障,mirror segment的復制進程停止,并啟動instance,保證數(shù)據(jù)庫的操作繼續(xù)。
segment的故障檢測是通過后臺進程ftsprobe實現(xiàn)的,并可以進行自動容錯,不需要DBA進行干預。ftsprobe的檢測間隔是通過global服務(wù)參數(shù)gp_fts_probe_interval進行定義的,默認值是1分鐘,通常這個參數(shù)的設(shè)置應(yīng)該與參數(shù)gp_segment_connect_timeout保持一致。一旦ftsprobe進程發(fā)現(xiàn)primary segment出現(xiàn)故障,它會在數(shù)據(jù)字典中標記該segment已經(jīng)停止。只有管理員對其進行恢復后,才會改變狀態(tài)。
如果系統(tǒng)沒有進行segment級別的鏡像,當出現(xiàn)segment故障后,整個系統(tǒng)都將脫機,直到恢復故障segment后,才可以重新啟動。
啟用segment鏡像,既可以在初始化系統(tǒng)時進行,也可以為存在的系統(tǒng)添加mirror。
如果在初始化系統(tǒng)是要求添加鏡像,需要在初始化配置文件中添加如下參數(shù)
MIRROR_PORT_BASE 指定第一個mirror segment的端口號,其它mirror segment在此基礎(chǔ)上加1,它的設(shè)置范圍是1到65535,但是設(shè)置時要注意不能與primary segment沖突。
REPLICATION_PORT_BASE 指定第一個primary segment用于數(shù)據(jù)復制的端口號,其它primary segment以此為基礎(chǔ),每次加1,計算復制用端口號。它的設(shè)置也不要與primary segment沖突。取值范圍1到65535
MIRROR_REPLICATION_PORT_BASE 指定第一個mirror segment用于數(shù)據(jù)復制的端口號,其它mirror segment以此為基礎(chǔ),每次加1,計算復制用端口號。它的設(shè)置也不要與mirror segment沖突。取值范圍1到65535
MIRROR_DATA_DIRECTORY 指定了mirror segment的數(shù)據(jù)目錄,聲明的目錄數(shù)量必須與primary segment的目錄數(shù)量一致,而且要保證進行初始化操作的os用戶對這些目錄有讀寫權(quán)限。
然后調(diào)用gpinitsystem進行初始化,默認是使陣列中的主機相互存放對方的鏡像。如果主機的數(shù)量多于segment的數(shù)量,可以使用-S選項,指定使用哪些主機作為鏡像用。
如果原有系統(tǒng)沒有鏡像,我們也可以向存在的系統(tǒng)添加鏡像。首先要獲取添加鏡像的構(gòu)造文件。這個文件可以自己編輯,也可以通過gpaddmirrors自動生成,然后在此基礎(chǔ)上根據(jù)需要進行修改。比如自動生成添加mirror的構(gòu)造文件
$ gpaddmirrors -o filename
文本編輯器打開該構(gòu)造文件,可以看到其格式如下
mirror[content]=content:hostname:address:port:mir_replication_port:pri_replication_port:datadir_location
默認配置是原有的主機間互為鏡像,我們也可以添加新的主機作為鏡像使用,從而減少鏡像對性能的影響。
在得到mirror構(gòu)造文件后,可以掉用命令啟用鏡像。
$ gpaddmirrors -i mirror_config_file
這時系統(tǒng)會根據(jù)配置文件設(shè)置,復制鏡像,并對鏡像進行同步,提供保護。需要注意的是,在添加鏡像前應(yīng)該先備份數(shù)據(jù)庫,防止鏡像添加失?。ū热缇W(wǎng)路配置問題,內(nèi)核參數(shù)設(shè)置不正確可能導致添加鏡像失敗)。因為GREENPLUM目前只能添加鏡像,不能刪除鏡像。如果添加鏡像失敗會導致系統(tǒng)處于不正常狀態(tài)。
由于mirror segment可以自動failover,因此當primary segment出現(xiàn)故障時,管理員可能無法及時察覺。所以一方面管理員應(yīng)該對系統(tǒng)定期檢查,另外一方面如果系統(tǒng)性能大幅下降(理論上,如果采用互為鏡像方式,當一個主機出現(xiàn)故障時,整個系統(tǒng)性能下降一半)管理員也應(yīng)該進行系統(tǒng)檢查,判斷是否有segment已經(jīng)down掉了。
檢查是否有segment down掉,可以在master上執(zhí)行g(shù)pstate,如果看到類似這樣的內(nèi)容[WARN]:-Total primary segment failures (at master) = 1 <<<<<<,說明有primary segment down掉了。進一步檢查故障segment,可以用SQL SELECT * FROM gp_segment_configuration WHERE status='d';獲取細節(jié)信息,請注意故障段的主機,端口號,首選身份,以及目錄這樣的信息,可以在troubleshooting的過程中提供幫助。還可以通過gpstate -c看到primary與mirror之間的映射關(guān)系。
此外,DBA還應(yīng)該檢查master和segment上的日志,通過$ gplogfilter -t可以獲取WARNING, ERROR, FATAL 或者PANIC級別的日志信息幫助進行troubleshooting。
一般來說,造成segment故障的原因主要就是三大類,一類是segment主機由于硬件問題或者網(wǎng)絡(luò)問題無法訪問,一類是segment的相關(guān)進程出現(xiàn)故障,比如被kill掉了。還有就是存儲問題,比如控制器故障等等。在這些問題被解決之后,系統(tǒng)不會自動恢復故障segment,必須由DBA手工進行恢復。這需要在master上調(diào)用命令$ gprecoverseg 進行。它從故障之后產(chǎn)生的變化開始捕獲,整個操作會在后臺進行。所以需要DBA調(diào)用命令gpstate -m判斷恢復操作完成的進度情況。
如果原始主機無法恢復,并且啟用mirror,用命令$ gprecoverseg -i recover_config_file,指定新的主機進行恢復。配置文件的格式如下
failed_host_address:port:datadir
recovery_host_address:recovery_host_name:port:replication_port:fselocation
當然替代主機需要事先裝好greenplum的軟件。另外,3.x版本中的參數(shù)gp_fault_action已經(jīng)廢棄掉了。gprecoverseg在4.x版本中可以聯(lián)機執(zhí)行。
注:如果segment出現(xiàn)故障,已經(jīng)執(zhí)行的操作會中斷,需要重新提交操作
上述內(nèi)容就是如何理解配置數(shù)據(jù)庫高可用性中的SEGMENT鏡像,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。