GaussDB(DWS) 集群擴容系列一:集群擴容與數據重分布
集群擴容

當數據庫在運行性能和存儲上到達瓶頸時,就需要通過增加主機來提升集群的性能及存儲能力,此時,原集群需要進行擴容。
如圖所示,集群擴容流程包含了四個步驟:
1. 節點預處理:確保擴容的節點符合當前環境部署要求。
2. 添加主機:將主機和實例添加到指定物理集群。
3. 數據重分布:將物理集群原有數據重分布到新擴容節點中。
4. 擴容驗證:擴容結束后,驗證新加主機及新增服務是否正常。
其中,添加主機與數據重分布為兩個核心步驟,也是耗時最長的步驟,接下來,主要介紹添加主機和重分布的步驟。
添加主機
添加主機的核心點就是讓新增節點上的GaussDB實例和老集群上的實例具有相同的元數據信息,此部分內容涵蓋技術點較多,將在以后章節中單獨介紹。下面介紹一下添加主機過程中的gs_expand運維工具的使用方法:
修改集群部署配置文件(cluster.xml)
在集群部署配置文件中添加新增主機的信息:
注意事項:
a) 原有的主備關系不能破壞;
b) 新增節點上不能包含主備GTM和主備CM Server;
c) 新增點上的DN自行成環;
執行前置腳本
執行前置腳本gs_preinstall, 在任意一臺舊集群機器的安裝目錄下,以root用戶執行:
gs_preinstall -U perfadm -G users -X ?/opt/cluster.xml ?--alarm-type=1 ?--sep-env-file=/opt/temp/env
其中: -U:表示用戶名;
-G:表示用戶群組;
-X:表示配置文件的地址;
--alarm-type:表示告警類型:
a) 1表示使用FusionInsight的告警管理工具管理告警;
b) 2表示告警將寫入syslog日志,不發送恢復告警;
c) 3表示預留給OLTP的接口。
執行添加主機
在集群用戶perfadm下執行:
gs_expand -t dilatation -X /opt/cluster.xml --dilatation-mode=insert
其中:-t?dilatation:表示添加主機;
-X:表示配置文件的地址;
--dilatation-mode=insert:insert表示在線模式,read-only表示離線模式。
至此,添加主機的步驟已經完成。
數據重分布
通常情況下,集群老節點上的數據量基本趨于飽和,只有將數據平均的搬遷到新節點上,才能降低老節點的負載,這就是數據重分布需要達到的目標。
在集群用戶perfadm下執行:
gs_expand -t redistribute --fast-redis --parallel-jobs=4 --redis-mode=insert
其中:-t redistribute :表示數據重分布;
--fast-redis:表示快速重分布模式;
--parallel-jobs=4:表示數據重分布的并發度為4;
--redis-mode=insert:insert表示在線模式,read-only表示離線模式。
在線重分布
在線擴容添加節點過程中會阻塞用戶的DDL語句,但和離線擴容相比,阻塞時間較短,不阻塞用戶數據的查詢、插入、更新、刪除語句,對用戶業務影響小。
在線數據重分布過程中,對正在重分布的數據表,除少量場景有規格限制外,能保證大多數場景業務正常運行。
在線重分布期間的規格限制:
支持新建table、schema、tablespace、view、游標、存儲等;
對于正在重分布的表,支持insert、select、update、delete、merge into、drop、copy、gds、truncate、truncate partition等操作;
對正在重分布的表,不支持絕大部分ALTER TABLE操作,包括修改表名、修改schema、新增或刪除字段、刪除分區、修改默認值等操作,但ALTER TABLE ... TRUNCATE PARTITION除外;
支持從jdbc、odbc、DS、gsql、LVS等客戶端下發作業;
支持審計功能;
對于超過996列的寬表,該表重分布期間,僅支持insert和select操作,不支持delete、update操作;
不支持創建、刪除、重命名database;
不支持創建、刪除、重命名表空間;
不支持對正在重分布的表執行vacuum full和cluster命令,實際上,表完成重分布后也相當于完成了一次vacuum full操作;
data_redis是重分布預留的schema,用戶應該避免創建同名的schema, 如果存在會導致重分布失敗;
CN剔除和DN節點故障期間,集群狀態為degraded,不支持在線重分布;
備份恢復期間,不支持與在線重分布同時使用;
增刪cn期間,不支持與在線重分布同時使用;
用戶業務對在線重分布的影響:
用戶對重分布的表執行頻繁的DDL和DML操作并且時間比較長時,會影響重分布時間,導致重分布作業處于pending中;
用戶作業在事務中長時間對表加鎖,會長時間阻塞對該表進行重分布,甚至導致該表重分布失敗,并反復重試;
用戶作業對正在重分布的表有大量的數據更新或刪除時,會導致重分布多次追增時間較長,增加重分布時間;
用戶作業如果有truncate或truncate partition操作,會中斷重分布作業,重分布作業需要重入;
離線重分布
離線擴容采用read-only方式執行擴容重分布,在擴容加節點過程中,不建議執行用戶業務,如果執行業務,會導致DDL相關語句報錯。對于有大的數據庫集群,擴容加節點執行時間很長,會導致用戶業務被長時間阻塞。在擴容重分布階段,僅允許用戶執行查詢操作,由于離線重分布會對重分布表加共享鎖,用戶插入、更新、刪除數據都會被阻塞。由于大表的重分布時間很長,有可能幾十分鐘或一兩個小時,被阻塞的用戶作業會等鎖超時而中斷執行。
重分布進度查詢
重分布過程中會創建以下幾張表或視圖,包括redis_progress視圖、redis_progress_detail表、pgxc_redistb表、redis_status表和redis_config表。
它們各自的作用如下,管理員通過對應的視圖或表可以查看重分布的進度。
管理員可以通過redis_progress視圖查看重分布總體進度。
redis_progress_detail表記錄了數據庫中每張表重分布所耗時間。
pgxc_redistb表會在每個數據庫中創建,記錄了對應數據庫中需要重分布的表。
redis_status表記錄了重分布目前所處狀態。
redis_config表記錄了重分布的參數,可以直接通過修改數據庫中的redis_config表來動態調整配置參數。
Gauss AP EI企業智能 數據倉庫服務 GaussDB(DWS)
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。