GPDB43 Administrator Guide--第七章 擴充套件greenplum系統
第七章 擴充套件greenplum系統
一、greenplum擴充套件概述
系統擴充套件的幾個階段:
1.增加並測試新硬體--安裝OS系統、準備greenplum環境、安裝greenplum軟體;
2.初始化新segment--gpexpand
3.重新分佈表--重新分佈表及資料,gpexpand工具;
gpexpand的典型操作如下:
a.建立擴充套件檔案:gpexpand -f hosts_file
b.初始化segment並建立擴充套件schema:gpexpand -i input_file -D database_name
c.重新分佈表:gpexpand -d duration
d.移除擴充套件schema(expansion 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 directory下pg_log、gpperfmon/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 schema(gpexpand -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_detail的rank列值可以控制表重新分佈資料的順序。
=> 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GPDB43 Administrator Guide--第九章 管理greenplum系統GUIIDE
- GPDB43 Administrator Guide--第四章 配置GREENPLUM資料庫系統GUIIDE資料庫
- GPDB43 Administrator Guide--第一章 GREENPLUM 體系結構GUIIDE
- greenplum擴充套件segment套件
- GPDB43 Administrator Guide--第三章 訪問GREENPLUM資料庫GUIIDE資料庫
- GPDB43 Administrator Guide--第二章 啟動與停止GREENPLUM資料庫GUIIDE資料庫
- GPDB43 Administrator Guide--第五章 高可用GUIIDE
- HybridDBforPostgreSQL(Greenplum)有哪些核心擴充套件SQL套件
- windows系統磁碟擴容/擴充套件Windows套件
- aix擴充套件檔案系統AI套件
- aix 擴充套件檔案系統AI套件
- GPDB43 Administrator Guide--第八章 使用gptransfer遷移資料GUIIDEGPT
- PHP 系統樹圖擴充套件元件PHP套件元件
- OPENWRT擴充套件系統到U盤套件
- 擴充套件系統的磁碟空間套件
- Linux 檔案系統擴充套件Linux套件
- GPDB43 Administrator Guide--第六章 備份與恢復資料庫GUIIDE資料庫
- [外掛擴充套件]系統主題管理套件
- 擴充套件.Django-許可權系統套件Django
- 擴充套件系統功能——裝飾模式(四)套件模式
- 擴充套件系統功能——裝飾模式(三)套件模式
- 擴充套件系統功能——裝飾模式(二)套件模式
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 讀構建可擴充套件分散式系統:方法與實踐15可擴充套件系統的基本要素套件分散式
- CentOS 系統下 PHP 怎麼新增擴充套件?CentOSPHP套件
- LVM : 擴充套件檔案系統的容量LVM套件
- uboot和系統移植擴充套件--主Makefile分析boot套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 未來系統擴充套件,報表怎麼辦?套件
- Sentinel 原理-如何為系統設定擴充套件點套件
- 水平和垂直劃分擴充套件SQL Server系統套件SQLServer
- 可擴充套件Web架構與分散式系統套件Web架構分散式
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- 擴充套件工具套件
- 擴充套件歐幾里得套件
- DOM擴充套件套件