如何做好 openGauss 企業(yè)級(jí)部署_第1頁(yè)
如何做好 openGauss 企業(yè)級(jí)部署_第2頁(yè)
如何做好 openGauss 企業(yè)級(jí)部署_第3頁(yè)
如何做好 openGauss 企業(yè)級(jí)部署_第4頁(yè)
如何做好 openGauss 企業(yè)級(jí)部署_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

openGauss數(shù)據(jù)庫(kù)作為開(kāi)源數(shù)據(jù)庫(kù)的后起之秀,這兩年開(kāi)源社區(qū)蓬勃發(fā)展,越來(lái)越多的公司和企業(yè)加入到openGauss開(kāi)源社區(qū)。作為純國(guó)產(chǎn)開(kāi)源的關(guān)系型數(shù)據(jù)庫(kù),當(dāng)前部分銀行已經(jīng)嘗試在生產(chǎn)應(yīng)用openGauss數(shù)據(jù)庫(kù),同時(shí)也有很多合作伙伴在openGauss內(nèi)核的基礎(chǔ)上推出各自的商業(yè)版本。openGauss數(shù)據(jù)庫(kù)至今為止基本保持三月一次發(fā)版的節(jié)奏。每次發(fā)版都會(huì)發(fā)現(xiàn)內(nèi)容非常多,不僅包含大功能的新增和改進(jìn),同時(shí)也有非常多的問(wèn)題被修復(fù)。可以說(shuō)openGauss開(kāi)源社區(qū)的投入,并不遜色于傳統(tǒng)的大型商業(yè)數(shù)據(jù)庫(kù)公司。國(guó)內(nèi)幾家合作伙伴的加入和貢獻(xiàn),也讓openGauss數(shù)據(jù)庫(kù)生態(tài)越來(lái)越好,這也給企業(yè)在生產(chǎn)使用openGauss數(shù)據(jù)庫(kù)帶來(lái)更大的信心。作為新的數(shù)據(jù)庫(kù),如何做好企業(yè)及部署,這是值得探討的地方。這篇文章并不是一個(gè)細(xì)致的安裝教程,網(wǎng)上也不缺乏該類(lèi)教程,而是結(jié)合商業(yè)數(shù)據(jù)庫(kù)應(yīng)用和部署的經(jīng)驗(yàn),討論下openGauss數(shù)據(jù)庫(kù)企業(yè)級(jí)應(yīng)用需求下需要考慮的方方面面。數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)

openGauss作為集中式的單機(jī)數(shù)據(jù)庫(kù),這里的架構(gòu)設(shè)計(jì)主要是討論高可用怎么做,同城和異地容災(zāi)怎么做。本地高可用

傳統(tǒng)的數(shù)據(jù)庫(kù)本地高可用有兩種比較流行的方式:集中式存儲(chǔ)方式和數(shù)據(jù)庫(kù)復(fù)制方式。Db2和Oracle等商業(yè)數(shù)據(jù)庫(kù)的部署大部分都是采用集中式存儲(chǔ)的模式。而MySQL數(shù)據(jù)庫(kù)就基本都是通過(guò)數(shù)據(jù)庫(kù)復(fù)制的模式來(lái)實(shí)現(xiàn)高可用。集中式存儲(chǔ)

集中式存儲(chǔ)方案是目前企業(yè)級(jí)部署中應(yīng)用最廣泛也是最成熟的方案。數(shù)據(jù)庫(kù)的數(shù)據(jù)部署在存儲(chǔ)上,上層通過(guò)系統(tǒng)的HA工具監(jiān)控和切換。然而這種方式也有缺點(diǎn)。首先是外置存儲(chǔ)的性能和內(nèi)置SSD盤(pán)的性能差異在數(shù)據(jù)庫(kù)應(yīng)用場(chǎng)景對(duì)比還是比較明顯的。其次是磁盤(pán)數(shù)據(jù)的損壞需要通過(guò)數(shù)據(jù)庫(kù)恢復(fù)來(lái)修復(fù),相對(duì)恢復(fù)時(shí)間較長(zhǎng)。最后從部署成本來(lái)說(shuō),集中式存儲(chǔ)方案部署較重,需要存儲(chǔ)布線等。數(shù)據(jù)庫(kù)復(fù)制

數(shù)據(jù)庫(kù)復(fù)制方案是通過(guò)數(shù)據(jù)庫(kù)日志的物理或者邏輯同步,在備機(jī)實(shí)時(shí)重做主機(jī)的修改,從而保證主備數(shù)據(jù)庫(kù)的數(shù)據(jù)一致性。這也是一個(gè)非常成熟的方案。Db2和Oracle等商業(yè)數(shù)據(jù)庫(kù)都有基于數(shù)據(jù)庫(kù)日志物理同步的功能。MySQL的日志邏輯復(fù)制也應(yīng)用非常廣泛。這種方案下數(shù)據(jù)庫(kù)主機(jī)上的存儲(chǔ)采用內(nèi)置盤(pán),主備的數(shù)據(jù)是完全隔離的,更好的利用了內(nèi)置盤(pán)的性能和做到了存儲(chǔ)上的隔離。openGauss數(shù)據(jù)庫(kù)也支持?jǐn)?shù)據(jù)庫(kù)日志的物理復(fù)制和邏輯復(fù)制。邏輯復(fù)制存在一個(gè)比較重大的缺點(diǎn),就是對(duì)于大事務(wù)的數(shù)據(jù)回放性能不好。因此在openGauss數(shù)據(jù)庫(kù)的高可用設(shè)計(jì)中,數(shù)據(jù)庫(kù)日志物理同步是當(dāng)前最好的方案。官方的架構(gòu)圖也是推薦使用這種方式。openGauss數(shù)據(jù)庫(kù)提供了om工具來(lái)幫助部署和管理openGauss數(shù)據(jù)庫(kù)的主備集群節(jié)點(diǎn)。openGauss數(shù)據(jù)庫(kù)的物理復(fù)制支持一主多備和級(jí)聯(lián)備等功能,未來(lái)也會(huì)加入延時(shí)復(fù)制功能。openGauss的備機(jī)是支持只讀操作的,可以實(shí)現(xiàn)讀寫(xiě)分離,減少主庫(kù)的讀負(fù)載。建議本地高可用就通過(guò)數(shù)據(jù)庫(kù)物理同步來(lái)實(shí)現(xiàn)。建議打開(kāi)備機(jī)可讀,設(shè)置wal_level為hot_standby。為了保障數(shù)據(jù)一致性,synchronous_commit建議修改為remote_write或者remote_receive。如果只有一主一從的情況下,建議設(shè)置most_available_sync為on。最后通過(guò)第三方的高可用集群軟件來(lái)監(jiān)視openGauss的主從狀態(tài),實(shí)現(xiàn)故障自動(dòng)切換等高可用場(chǎng)景。客戶端訪問(wèn)方式

openGauss數(shù)據(jù)庫(kù)主從架構(gòu)下,客戶端如何連接到主數(shù)據(jù)庫(kù)呢?又怎么做讀寫(xiě)分離?這個(gè)時(shí)候就需要討論下客戶端連接數(shù)據(jù)庫(kù)的幾種方式:VIP,DNS和主機(jī)列表。因?yàn)閛penGauss數(shù)據(jù)庫(kù)的jdbc驅(qū)動(dòng)里支持設(shè)置多個(gè)主機(jī),并提供參數(shù)設(shè)置只連主節(jié)點(diǎn)還是只連備節(jié)點(diǎn),這也應(yīng)對(duì)了讀寫(xiě)分離的需求。VIP

傳統(tǒng)的VIP模式只能支持應(yīng)用連接到主節(jié)點(diǎn)上,從節(jié)點(diǎn)的讀請(qǐng)求是不太好設(shè)置的。增加讀VIP的管理對(duì)于高可用軟件來(lái)說(shuō)就太復(fù)雜了。VIP管理還有一個(gè)限制是必須屬于同一網(wǎng)段。對(duì)于同城雙中心不能采用相同網(wǎng)段的情況下,VIP漂移就不能實(shí)現(xiàn)。DNS

DNS也具備高可用性,但是只能檢測(cè)到機(jī)器IP是否存在,不能檢測(cè)openGauss的服務(wù),所以采用DNS的高可用相對(duì)來(lái)說(shuō)不太適合數(shù)據(jù)庫(kù)來(lái)使用。主機(jī)列表

例如下面這個(gè)例子就是只連主庫(kù)的客戶端設(shè)置:url=jdbc:postgresql://:26000,:26000/?connectTimeout=5&targetServerType=master&tcpKeepAlive=true我比較偏向于采用主機(jī)列表的方式,通過(guò)配置客戶端參數(shù),實(shí)現(xiàn)自動(dòng)主庫(kù)發(fā)現(xiàn),負(fù)載均衡,只讀從庫(kù)等各類(lèi)應(yīng)用場(chǎng)景需求。這種方式也避免了VIP,DNS在不同架構(gòu)下的管理復(fù)雜性,相對(duì)更通用一些。缺點(diǎn)是增加了一點(diǎn)客戶端數(shù)據(jù)源配置的復(fù)雜性。同城容災(zāi)

數(shù)據(jù)庫(kù)級(jí)的同城容災(zāi)可能會(huì)分成不同的級(jí)別來(lái)實(shí)現(xiàn)。金融行業(yè)的同城數(shù)據(jù)中心一般都要求具備全量承載數(shù)據(jù)和業(yè)務(wù)的能力。數(shù)據(jù)庫(kù)實(shí)現(xiàn)同城容災(zāi)最主要目標(biāo)是最小化RPO和RTO指標(biāo),在此基礎(chǔ)上可能還會(huì)有同城災(zāi)備數(shù)據(jù)庫(kù)的只讀訪問(wèn)等需求。同城容災(zāi)的實(shí)現(xiàn)方式也有兩種主流模式:存儲(chǔ)復(fù)制和數(shù)據(jù)庫(kù)復(fù)制。優(yōu)缺點(diǎn)和本地高可用差不多。但是如果本地openGauss采用了內(nèi)置盤(pán)部署,那么也就不支持做存儲(chǔ)復(fù)制的容災(zāi)模式了。所以建議openGauss數(shù)據(jù)庫(kù)還是采用數(shù)據(jù)庫(kù)復(fù)制的方式。注意在設(shè)置synchronous_standby_names的時(shí)候要保證同城至少有一個(gè)節(jié)點(diǎn)處于數(shù)據(jù)同步狀態(tài)。這里稍微討論下同城容災(zāi)的幾個(gè)定位:1.同城是否需要保障RPO=0?金融行業(yè)的大部分需要做同城容災(zāi)的應(yīng)用都要求RPO=0,不能容忍同城切換丟失數(shù)據(jù)。因此在設(shè)計(jì)synchronous_standby_names的時(shí)候需要加上同城備機(jī)并設(shè)置成同步模式。然而雙中心間的網(wǎng)絡(luò)穩(wěn)定性顯然要比同中心要差很多,為了避免設(shè)置了強(qiáng)同步后,雙中心網(wǎng)絡(luò)抖動(dòng)可能會(huì)影響主機(jī)性能,可以考慮設(shè)置most_available_sync參數(shù)為ON,丟失備機(jī)的情況下主機(jī)可以斷開(kāi)備機(jī)并恢復(fù)工作。2.同城數(shù)據(jù)庫(kù)是否需要只讀訪問(wèn)?數(shù)據(jù)庫(kù)的備機(jī)提供只讀訪問(wèn)的能力,包括同城的數(shù)據(jù)庫(kù)備機(jī)。那么是否真的需要去啟用這個(gè)功能呢?從前端業(yè)務(wù)的性能考慮,顯然同機(jī)房訪問(wèn)要比跨機(jī)房訪問(wèn)要更快一些。而從后端數(shù)據(jù)庫(kù)的處理能力來(lái)說(shuō),需要只讀能力擴(kuò)展的需求,都是為了滿足減輕主庫(kù)的運(yùn)行壓力,并且還要求應(yīng)用能夠配置單獨(dú)的只讀數(shù)據(jù)源,從應(yīng)用層就解決好讀寫(xiě)分離。在這些場(chǎng)景需求里,顯然本地的備機(jī)只讀訪問(wèn)就可以解決這些問(wèn)題,所以大概率是不需要升級(jí)到同城只讀訪問(wèn)的性能擴(kuò)展需求的。只有一種情況下需要同城只讀訪問(wèn),那就是為了架構(gòu)的便利性,同城切換的便利性等需求。這種情況下并不是以擴(kuò)展性能為目的,而是以技術(shù)架構(gòu)方案的整體性設(shè)計(jì)需要。3.同城是否需要自動(dòng)切換?這個(gè)問(wèn)題一直是討論的比較多的地方。保守一點(diǎn)的想法是同城切換都是交給人工來(lái)決策的。激進(jìn)一點(diǎn)的想法是同城都保障不丟數(shù)據(jù)庫(kù),當(dāng)然也可以自動(dòng)切換,交給HA監(jiān)控并自動(dòng)化切換修復(fù)多好。所以面對(duì)不同的選擇,這里對(duì)于同城的定位就不一樣,所涉及的HA架構(gòu)設(shè)計(jì)也很不相同。個(gè)人認(rèn)為除非同城雙中心定位完全無(wú)主次之分,否則大部分應(yīng)用還是偏向于運(yùn)行在主機(jī)房,這種情況下,同城切換適合交給人為決策,自動(dòng)化平臺(tái)快速實(shí)現(xiàn)。異地容災(zāi)

異地容災(zāi)也需要分不同的數(shù)據(jù)保護(hù)類(lèi)型。可能最關(guān)鍵的應(yīng)用也就是盡可能減少RPO和RTO。這種類(lèi)型的關(guān)鍵應(yīng)用也是建議通過(guò)數(shù)據(jù)庫(kù)主從復(fù)制的方式來(lái)實(shí)現(xiàn),只是異地的數(shù)據(jù)庫(kù)節(jié)點(diǎn)通常都是設(shè)置為異步模式。openGauss數(shù)據(jù)庫(kù)支持級(jí)聯(lián)備,也就是從一主多從的某個(gè)從庫(kù)上,配置一個(gè)級(jí)聯(lián)備機(jī),指向異地容災(zāi)的數(shù)據(jù)庫(kù)從庫(kù)。這也是比較推薦的方式,減少主庫(kù)的壓力。用戶規(guī)劃設(shè)計(jì)這里主要討論下安裝部署里的操作系統(tǒng)用戶,數(shù)據(jù)庫(kù)用戶等規(guī)劃設(shè)計(jì)。系統(tǒng)用戶操作系統(tǒng)用戶主要是安裝openGauss的用戶和組,以及需要使用gsql客戶端訪問(wèn)openGauss數(shù)據(jù)庫(kù)的操作系統(tǒng)用戶。例如華為的openGauss數(shù)據(jù)庫(kù)默認(rèn)采用omm用戶和dbgrp用戶組,這在華為的高斯分布式產(chǎn)品里都是這個(gè)設(shè)計(jì)的。我們使用openGauss的時(shí)候也延續(xù)了這個(gè)習(xí)慣。超級(jí)用戶omm操作系統(tǒng)用戶具有openGauss數(shù)據(jù)庫(kù)程序的訪問(wèn)權(quán)限,能執(zhí)行g(shù)sql、gs_ctl等工具。而這些工具的權(quán)限一般是700,也就是說(shuō)只有omm用戶能使用。而通常omm用戶訪問(wèn)本地的openGauss是通過(guò)socket,可以使用超級(jí)用戶,還可以免密,因此這個(gè)用戶完全是交給系統(tǒng)管理員的,不適合交給用戶使用。應(yīng)用用戶那么如果應(yīng)用用戶需要使用gsql等工具怎么辦?這種情況下建議設(shè)計(jì)一個(gè)系統(tǒng)用戶appuser,并為它安裝一個(gè)單獨(dú)的gsql等工具客戶端,通過(guò)IO連接數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)用戶數(shù)據(jù)庫(kù)用戶也應(yīng)該分為幾種類(lèi)型:超級(jí)管理員、監(jiān)控管理員、數(shù)據(jù)庫(kù)管理員和普通數(shù)據(jù)庫(kù)用戶。超級(jí)管理員一開(kāi)始initdb的初始用戶就是超級(jí)管理員用戶,具有sysadmin的權(quán)限。這個(gè)用戶通常不會(huì)交給應(yīng)用來(lái)使用,甚至不應(yīng)該當(dāng)做超級(jí)管理員來(lái)使用。這個(gè)用戶只能是作為能夠登錄到這個(gè)操作系統(tǒng)上應(yīng)急的免密超級(jí)用戶。所以為了管理openGauss數(shù)據(jù)庫(kù),我們還需要?jiǎng)?chuàng)建一個(gè)單獨(dú)的管理員用戶具備sysadmin角色權(quán)限。例如設(shè)計(jì)一個(gè)gsadmin用戶,在運(yùn)維工具平臺(tái)通過(guò)這個(gè)用戶遠(yuǎn)程管理所有的openGauss數(shù)據(jù)庫(kù)。createusergsadminwithsysadminpassword'xxxxxxxx'還有一種用戶是遠(yuǎn)程備份用戶,建議創(chuàng)建單獨(dú)的用戶并sysadmin角色權(quán)限。監(jiān)控管理員openGauss數(shù)據(jù)庫(kù)從2.0.0版本開(kāi)始提供了monadmin角色。這個(gè)角色權(quán)限能夠訪問(wèn)所有的系統(tǒng)視圖。因此對(duì)于監(jiān)控用戶,建議配置這個(gè)角色即可。createusermonadminwithmonadminpassword'xxxxxxxx'數(shù)據(jù)庫(kù)管理員openGauss的數(shù)據(jù)庫(kù)是相互隔離的。對(duì)于每一個(gè)獨(dú)立的數(shù)據(jù)庫(kù),可以設(shè)置一個(gè)數(shù)據(jù)庫(kù)管理員角色的用戶,給予全庫(kù)的管理權(quán)限。grantallprivilegesondatabase<dbname>to<username>這種用戶通常也是作為應(yīng)用來(lái)連接的用戶,具備全庫(kù)的對(duì)象管理能力,也具備數(shù)據(jù)修改查詢能力。這是一種很常見(jiàn)的用法,很少有在應(yīng)用數(shù)據(jù)源配置連接用戶的時(shí)候還繼續(xù)做細(xì)致的權(quán)限分離。當(dāng)然數(shù)據(jù)庫(kù)權(quán)限管理是具備相關(guān)能力的。普通數(shù)據(jù)庫(kù)用戶

除了本應(yīng)用系統(tǒng)使用的數(shù)據(jù)庫(kù)管理員用戶,可能還存在類(lèi)似跨系統(tǒng)訪問(wèn)的特殊需求情況。例如抽取數(shù)據(jù)的用戶,只讀訪問(wèn)的用戶等。這些用戶建議創(chuàng)建單獨(dú)的最小授權(quán)用戶。白名單在openGauss數(shù)據(jù)庫(kù)的目錄下,設(shè)計(jì)了pg_hba.conf配置文件,用來(lái)定義用戶訪問(wèn)數(shù)據(jù)庫(kù)的方式,也可以稱作是白名單管理。定義了在什么訪問(wèn)類(lèi)型下,訪問(wèn)哪個(gè)數(shù)據(jù)庫(kù),是哪個(gè)用戶,從哪里來(lái)訪問(wèn),采用何種驗(yàn)證方式。這些組合可以實(shí)現(xiàn)很復(fù)雜的白名單過(guò)濾規(guī)則。這種可以過(guò)濾IP的用戶訪問(wèn)控制有點(diǎn)像mysql,但是又完全不一樣。openGauss里的數(shù)據(jù)庫(kù)用戶名對(duì)應(yīng)的就是一個(gè)用戶角色,不像mysql,如果用戶名里的IP不一樣,其實(shí)算是不同的用戶。不過(guò)從金融行業(yè)的實(shí)踐來(lái)看,數(shù)據(jù)庫(kù)服務(wù)器和應(yīng)用服務(wù)器等在隔離的網(wǎng)絡(luò)區(qū)內(nèi),主機(jī)間的訪問(wèn)控制通過(guò)網(wǎng)絡(luò)來(lái)管理,基本不需要底層數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)復(fù)雜的管控。為了管理方便,不如全部放開(kāi)數(shù)據(jù)庫(kù)級(jí)別的ip管控。下面這個(gè)例子使用gs_guc工具配置整個(gè)集群所有的白名單:gs_gucreload-Nall-Iall-h"host

all

all

0.0.0.0/0

sha256"翻譯過(guò)來(lái)就是任何IP基于host請(qǐng)求過(guò)來(lái)的所有用戶訪問(wèn)所有數(shù)據(jù)庫(kù)都采用sha256加密算法驗(yàn)證用戶。文件系統(tǒng)設(shè)計(jì)openGauss數(shù)據(jù)庫(kù)建議配置至少兩個(gè)獨(dú)立的文件系統(tǒng)。一個(gè)用來(lái)放數(shù)據(jù)庫(kù),一個(gè)用來(lái)放數(shù)據(jù)庫(kù)運(yùn)行中產(chǎn)生的歸檔日志,診斷日志等。數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)存放的路徑建議放在單獨(dú)的文件系統(tǒng)上。部分重要的業(yè)務(wù)系統(tǒng)也建議將在線日志pg_xlog放在單獨(dú)的文件系統(tǒng)上,與數(shù)據(jù)data分開(kāi)。然而從實(shí)際情況來(lái)看,data和xlog采用不同的文件系統(tǒng),除非底層的盤(pán)也是獨(dú)立的,性能是沒(méi)有什么區(qū)別的。因此暫時(shí)建議采用一個(gè)就可以了。診斷日志數(shù)據(jù)庫(kù)運(yùn)行中產(chǎn)生的診斷日志,審計(jì)日志,歸檔日志,core文件等,都是不影響數(shù)據(jù)庫(kù)運(yùn)行的,但是又持續(xù)不斷的產(chǎn)生的。因此需要單獨(dú)規(guī)劃一個(gè)文件系統(tǒng)來(lái)存放,同時(shí)做好這些日志的清理策略。這個(gè)文件系統(tǒng)也可以用來(lái)規(guī)劃存放腳本文件,備份文件,跑批文件等臨時(shí)文件。例如將歸檔日志路徑、審計(jì)日志路徑、core文件路徑和診斷日志路徑都設(shè)置到這個(gè)文件系統(tǒng)下面。gs_gucset

-c"archive_command='cp%p/gausslog/archive/%f'"

gs_gucset

-c"audit_directory='/gausslog/log/omm/pg_audit'"

gs_gucset

-c"bbox_dump_path='/gausslog/corefile'"

gs_gucset

-c"log_directory='/gausslog/log/omm/pg_log'"其他運(yùn)維設(shè)計(jì)規(guī)劃好了數(shù)據(jù)庫(kù)安裝,下一步是設(shè)計(jì)相關(guān)運(yùn)維需求方案。性能參數(shù)設(shè)置安裝完成之后最先需要的是根據(jù)業(yè)務(wù)負(fù)載需求設(shè)置相關(guān)參數(shù)。這些參數(shù)細(xì)節(jié)比較多,需要好好閱讀相關(guān)資料再做選擇。其中max_process_memory和shared_buffers是比較關(guān)鍵的內(nèi)存參數(shù),建議按照操作系統(tǒng)內(nèi)存總量(數(shù)據(jù)庫(kù)獨(dú)占資源)的70%和50%來(lái)設(shè)置。增量檢查點(diǎn)和雙寫(xiě)開(kāi)關(guān)應(yīng)該打開(kāi)。這個(gè)是openGauss相對(duì)于postgresql比較大的改進(jìn)機(jī)制,解決了全量檢查點(diǎn)的性能瓶頸問(wèn)題。enable_opfusion開(kāi)關(guān)也建議打開(kāi),對(duì)于高并發(fā)小事務(wù)的競(jìng)爭(zhēng)會(huì)有改善。gs_gucset-c"cstore_buffers=128MB"

gs_gucset-c"enable_alarm=off"

gs_gucset-c"enable_delta_store=on"

gs_gucset-c"enable_double_write=on"

gs_gucset-c"enable_incremental_checkpoint=on"

gs_gucset-c"enable_wdr_snapshot=off"

gs_gucset-c"enable_xlog_prune=on"

gs_gucset-c"log_min_duration_statement=1s"

gs_gucset-c"maintenance_work_mem=1GB"

gs_gucset-c"max_connections=2000"

gs_gucset-c"max_files_per_process=10000"

gs_gucset-c"max_prepared_transactions=2000"

gs_gucset-c"session_timeout=0"

gs_gucset-c"shared_buffers=2GB"

gs_gucset-c"temp_buffers=128MB"

gs_gucset-c"update_lockwait_timeout=1min"

gs_gucset-c"wal_buffers=64MB"

gs_gucset-c"wdr_snapshot_interval=10min"

gs_gucset-c"work_mem=512MB"

gs_gucset-c"log_temp_files=100MB"

gs_gucset-c"enable_mergejoin=ON"

gs_gucset-c"enable_nestloop=ON"

gs_gucset-c"advance_xlog_file_num=10"

gs_gucset-c"pagewriter_sleep=1000ms"

gs_gucset-c"xloginsert_locks=50"

gs_gucset-c"lockwait_timeout=1min"

gs_gucset-c"enable_opfusion=off"

gs_gucset-c"max_process_memory=3GB"

自動(dòng)管理為了降低DBA的運(yùn)維工作量,使用openGauss的過(guò)程里要充分利用好數(shù)據(jù)庫(kù)的自動(dòng)管理機(jī)制。尤其是跟性能動(dòng)態(tài)調(diào)整相關(guān)的機(jī)制。自動(dòng)統(tǒng)計(jì)信息收集分析

openGauss數(shù)據(jù)庫(kù)內(nèi)部的執(zhí)行計(jì)劃有兩種選擇方式,基于規(guī)則和基于代價(jià)?;诖鷥r(jià)的這種方式依賴于數(shù)據(jù)庫(kù)的統(tǒng)計(jì)信息。數(shù)據(jù)庫(kù)的統(tǒng)計(jì)信息是由analyze命令采集的。除了人為發(fā)出analyze命令,openGauss內(nèi)部也提供了自動(dòng)analyze的功能。建議打開(kāi)autoanalyze和autovacuum的開(kāi)關(guān)。自動(dòng)清理

openGauss的存儲(chǔ)引擎還有一個(gè)比較特殊的地方,就是update和delete都會(huì)保留原元組,作為MVCC的基石。這種機(jī)制會(huì)不停產(chǎn)生死元組,并且一直占據(jù)表內(nèi)的空間。這種情況下需要vacuum命令來(lái)回收這些空間,后續(xù)的數(shù)據(jù)才能使用。openGauss提供了autovacuum機(jī)制,能夠根據(jù)表的數(shù)據(jù)變化量自動(dòng)觸發(fā)vacuum機(jī)制,回收死元組。但是在vacuum受到MVCC機(jī)制影響,清理數(shù)據(jù)會(huì)檢查數(shù)據(jù)庫(kù)里最老的事務(wù)。因此除了打開(kāi)autovacuum,還需要控制好數(shù)據(jù)庫(kù)內(nèi)的最長(zhǎng)事務(wù)。所以需要監(jiān)控pg_stat_activity中xact_start不為空的事務(wù),判斷長(zhǎng)事務(wù)。如果遇到一直處于idleintransaction狀態(tài)的連接,一定要檢查處理。安全審計(jì)openGauss數(shù)據(jù)庫(kù)提供了安全審計(jì)功能,可以設(shè)置相關(guān)審計(jì)參數(shù),將審計(jì)日志記錄下來(lái),通過(guò)sql函數(shù)pg_query_audit查看審計(jì)記錄。下表展示了審計(jì)相關(guān)的配置項(xiàng)。其中DML操作和SELECT操作審計(jì)功能建議關(guān)閉,因?yàn)閷徲?jì)量太大了。配置項(xiàng)描述用戶登錄、注銷(xiāo)審計(jì)參數(shù):audit_login_logout

默認(rèn)值為7,表示開(kāi)啟用戶登錄、退出的審計(jì)功能。設(shè)置為0表示關(guān)閉用戶登錄、退出的審計(jì)功能。不推薦設(shè)置除0和7之外的值。數(shù)據(jù)庫(kù)啟動(dòng)、停止、恢復(fù)和切換審計(jì)參數(shù):audit_database_process

默認(rèn)值為1,表示開(kāi)啟數(shù)據(jù)庫(kù)啟動(dòng)、停止、恢復(fù)和切換的審計(jì)功能。用戶鎖定和解鎖審計(jì)參數(shù):audit_user_locked

默認(rèn)值為1,表示開(kāi)啟審計(jì)用戶鎖定和解鎖功能。用戶訪問(wèn)越權(quán)審計(jì)參數(shù):audit_user_violation

默認(rèn)值為0,表示關(guān)閉用戶越權(quán)操作審計(jì)功能。授權(quán)和回收權(quán)限審計(jì)參數(shù):audit_grant_revoke

默認(rèn)值為1,表示開(kāi)啟審計(jì)用戶權(quán)限授予和回收功能。數(shù)據(jù)庫(kù)對(duì)象的CREATE,ALTER,DROP操作審計(jì)參數(shù):audit_system_object

默認(rèn)值為12295,表示只對(duì)DATABASE、SCHEMA、USER、DATASOURCE這四類(lèi)數(shù)據(jù)庫(kù)對(duì)象的CREATE、ALTER、DROP操作進(jìn)行審計(jì)。具體表的INSERT、UPDATE和DELETE操作審計(jì)參數(shù):audit_dml_state

默認(rèn)值為0,表示關(guān)閉具體表的DML操作(SELECT除外)審計(jì)功能。SELECT操作審計(jì)參數(shù):audit_dml_state_select

默認(rèn)值為0,表示關(guān)閉SELECT操作審計(jì)功能。COPY審計(jì)參數(shù):audit_copy_exec

默認(rèn)值為0,表示關(guān)閉copy操作審計(jì)功能。存儲(chǔ)過(guò)程和自定義函數(shù)的執(zhí)行審計(jì)參數(shù):audit_function_exec

默認(rèn)值為0,表示不記錄存儲(chǔ)過(guò)程和自定義函數(shù)的執(zhí)行審計(jì)日志。SET審計(jì)參數(shù):audit_set_parameter

默認(rèn)值為1,表示記錄set操作審計(jì)日志如果需要針對(duì)特殊用戶進(jìn)行SQL級(jí)別的審計(jì),可以使用AUDITPOLICY統(tǒng)一審計(jì)方式。打開(kāi)enable_security_policy開(kāi)關(guān)統(tǒng)一審計(jì)策略才可以生效。統(tǒng)一審計(jì)默認(rèn)輸出節(jié)點(diǎn)的rsyslog日志中,在操作系統(tǒng)后臺(tái)服務(wù)配置文件/etc/rsyslog.conf中添加代碼:local0.*/var/log/localmessages執(zhí)行如下命令:sudotouch/var/log/localmessages

sudochmod600localmessages

sudosystemctlrestartrsyslog然后通過(guò)創(chuàng)建AUDITPOLICY實(shí)現(xiàn)。CREATEAUDITPOLICY[IFNOTEXISTS]policy_name{{privilege_audit_clause|access_audit_clause}[filter_group_clause][ENABLE|DISABLE]};例如僅審計(jì)user1用戶的iud操作:CREATEAUDITPOLICYadt1ACCESSINSERT,UPDATE,DELE

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論