GPDB43 Administrator Guide--第七章 擴充套件greenplum系統

panpong發表於2015-09-23

第七章 擴充套件greenplum系統

 

一、greenplum擴充套件概述

        系統擴充套件的幾個階段:

        1.增加並測試新硬體--安裝OS系統、準備greenplum環境、安裝greenplum軟體;

        2.初始化新segment--gpexpand

        3.重新分佈表--重新分佈表及資料,gpexpand工具;

gpexpand的典型操作如下:

        a.建立擴充套件檔案:gpexpand -f hosts_file

        b.初始化segment並建立擴充套件schemagpexpand -i input_file -D database_name

        c.重新分佈表:gpexpand -d duration

        d.移除擴充套件schemaexpansion schema):gpexpand -c

二、計劃greenplum擴充套件

(一)擴充套件的檢查列表

  • Online Pre-Expansion Tasks(* System is up and available

        1.設計執行訂購、架設、組網新硬體平臺

        2.設計資料庫擴充套件計劃。每個主機的segment數量、效能測試、建立expansion schema和表分佈排程間隔等計劃;

        3.執行schema dump

        4.新主機上安裝greenplum資料庫

        5.建立新主機的ssh等效性(gpssh-exkeys

        6.驗證新硬體的OS環境(gpcheck

        7.驗證新硬體磁碟IO和記憶體頻寬(gpcheckperf

        8.驗證master data directorypg_loggpperfmon/data目錄中沒有特別大的檔案

        9.驗證無catalog問題(gpcheckcat

        10.準備expansion輸入檔案(gpexpand

  • Offline Expansion Tasks(* The system is locked and unavailable to all user activity during this process.

        1.結合新硬體與現有硬體,驗證OS系統環境(gpcheck

        2.結合新硬體與現有硬體,驗證磁碟IO和記憶體頻寬(gpcheckperf

        3.初始化新的segment,並建立expansion schema (gpexpand-i input_file)

  • Online Expansion and Table Redistribution(* System is up and available

        1.開始表的重新分佈前,停止任何自動快照程式或者其他消耗硬碟空間的程式

        2.重新分佈表(gpexpand

        3.移除expansion schemagpexpand -c

        4.執行analyze,更新分佈統計;擴充套件過程中使用gpexpand -a ,擴充套件後,使用analyze

(二)計劃硬體平臺

(三)計劃初始化新segment

如果現有的系統segment配置了mirror,則新segment必須配置mirror;如果現有系統segment沒有配置了mirror,則新segment也不能配置mirror

? Spread Mirroring — Add at least one more host to the array than the number of segments per host.The number of separate hosts must be greater than the number of segment instances per host to ensure even spreading.(例如:每個主機有四個segment例項,新增主機數應該至少4+1

? Grouped Mirroring — Add at least two new hosts so the mirrors for the first host can reside on the second host, and the mirrors for the second host can reside on the first. For more information, see About Segment Mirroring

  • 為每個host增加segment

   預設情況下,新主機應該初始化與現有主機上primary segment一樣多。您可以為每臺主機增加segment或者新增新segment。例如,如果現有主機目前擁有每臺主機兩個segment,你可以使用gpexpand初始化現有主機上的兩個附加segment達到共四個segment,並在新主機上新增四個新segment。建立一個擴充套件輸入檔案的互動過程中會提示此選項;輸入檔案格式允許你手動指定新的細分目錄。欲瞭解更多資訊,請參閱"Creating an Input File for System Expansion"。

  • 關於expansion schema

   初始化過程中,gpexpand建立expansion schema。如果初始化時沒有指定資料庫(gpexpand -D),則schema建立在GPDATABASE環境變數指定的資料庫中;

expansion schema中儲存了每個表的後設資料,它的狀態可以透過expansion程式跟蹤到;expansion schema由兩個表和一個檢視組成,這些表和檢視用於跟蹤expansion操作過程。

? gpexpand.status

? gpexpand.status_detail

? gpexpand.expansion_progress

   透過修改gpexpand.status_detail控制expansion程式;例如,刪除記錄則可以阻止表擴充套件到新segment;透過修改rank值可以控制表重新分佈資料的順序;更多資訊參考表重新分佈的排名

 

(四)計劃表重新分佈

1.大規模greenplum系統下管理重新分佈

   可以透過管理重新分佈表的順序,幫助調整磁碟空間的使用和查詢效能的使用者;表重新分佈階段需要考慮的因素是表重新分佈時在表上的排他鎖的影響;如果使用者在使用表,重新分佈操作則會延時,重新分佈時表不能被訪問;

   如果系統空間足夠的話,可以優先重新分佈使用頻繁的表,使之恢復到最佳查詢效能;

   如果系統空間不夠的話,則需要優先重新分佈小表,騰挪空間;重新分佈表時考慮排它鎖的影響,避開高峰時段;

2.壓縮表和append-Optimized表的重新分佈

  gpexpand重新分佈資料時壓縮表、append-Optimized錶速度不一樣;通常是:

  • 不壓縮的append-Optimized表比堆錶快10%左右
  • zlib壓縮的append-Optimized表比不壓縮的append-Optimized錶慢80%
  • 系統帶資料壓縮功能(如,ZFS/LZJB)的則要花更多時間

3.帶主鍵約束的表重新分佈

gpexpand會報錯而停止,如果有主鍵的表在重新分佈時出現重複資料等情況下。因此,解決方法是清理重複資料或者刪除主鍵約束,然後再重新執行gpexpand

4.帶使用者定義資料型別的表的重新分佈

帶有使用者定義資料型別的dropped columns的表不能執行重新分佈;如果要重新分佈這種表則需要使用create table as select 語句重建一個表,然後使用gpexpand工具時會移除dropped columns。(dropped columns?是什麼呢)

5.分割槽表的重新分佈

分割槽表重分佈按照分割槽執行,read/write lock只對子表(分割槽)起作用;只有分割槽表的子表可設定為隨機分佈策略;

6.索引表的重新分佈?

Because the gpexpand utility must re-index each indexed table after redistribution, a high level of indexing has a large performance impact. Systems with intensive indexing have significantly slower rates of table

redistribution.

 

三、準備與新增節點

(一)新增新節點到信任主機環境

        設定共分為三步:

        1.交換root ssh keys

# source /usr/local/greenplum-db/greenplum_path.sh

# gpssh-exkeys -f /home/gpadmin/existing_hosts_file -x  /home/gpadmin/new_hosts_file

***Enter password for root@hostname: <root_password>

        2.建立gpadmin 使用者

# gpssh -f new_hosts_file '/usr/sbin/useradd gpadmin -d  /home/gpadmin -s /bin/bash'

# gpssh -f new_hosts_file 'echo gpadmin_password | passwd  gpadmin --stdin'

# gpssh -f new_hosts_file ls -l /home

        3.交換gpadmin ssh keys

# gpssh-exkeys -e /home/gpadmin/existing_hosts_file -x /home/gpadmin/new_hosts_file

***Enter password for gpadmin@hostname: <gpadmin_password>

 

(二)檢查OS設定

$ su - gpadmin

$ gpcheck -f new_hosts_file

(三)驗證磁碟IO和記憶體頻寬

使用工具gpcheckperf

$ gpcheckperf -f new_hosts_file -d /data1 -d /data2 -v

(四)整合(Integrating)新硬體

    gpstop關閉系統;然後執行測試,安裝上兩步;

 

四、初始化新segment

(一)建立Input File

互動模式建立Input File,需要明確的幾件事:a.新主機數量;b.新主機名;c.現有主機的映象策略;d.每個主機增加的segment數量

input files格式:

hostname:address:port:fselocation:dbid:content:preferred_role:replication_port

例子:

sdw5:sdw5-1:50011:/gpdata/primary/gp9:11:9:p:53011

sdw5:sdw5-2:50012:/gpdata/primary/gp10:12:10:p:53011

sdw5:sdw5-2:60011:/gpdata/mirror/gp9:13:9:m:63011

sdw5:sdw5-1:60012:/gpdata/mirror/gp10:14:10:m:63011

(二)執行gpexpand初始化新segment

1.gpadmin使用者登入

2.$ gpexpand -i input_file -D database1

 

(三)回滾失敗的擴充套件設定

$gpexpand --rollback -D database_name

 

五、重新分佈表

(一)重新分佈表的排名

透過修改gpexpand.status_detailrank列值可以控制表重新分佈資料的順序。

 

=> UPDATE gpexpand.status_detail SET rank=10;

=> UPDATE gpexpand.status_detail SET rank=1 WHERE fq_name = 'public.lineitem';

=> UPDATE gpexpand.status_detail SET rank=2 WHERE fq_name = 'public.orders';

(二)gpexpand重新分佈表資料

登入gpadmin使用者:

    $ gpexpand -d 60:00:00   #連續執行60個小時

 

(三)監控表的重新分佈

=# SELECT * FROM gpexpand.expansion_progress;

name | value

------------------------------+-----------------------

Bytes Left | 5534842880

Bytes Done | 142475264

Estimated Expansion Rate | 680.75667095996092 MB/s

Estimated Time to Completion | 00:01:01.008047

Tables Expanded | 4

Tables Left | 4

(6 rows)

=> SELECT status, expansion_started, source_bytes FROM

gpexpand.status_detail WHERE fq_name = 'public.sales';

status | expansion_started | source_bytes

-----------+----------------------------+--------------

COMPLETED | 2009-02-20 10:54:10.043869 | 4929748992

(1 row)

六、移除expansion schema

登入master主機gpadmin使用者:$ gpexpand -c

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16976507/viewspace-1806827/,如需轉載,請註明出處,否則將追究法律責任。

相關文章