0 說(shuō)明
安裝好數(shù)據(jù)庫(kù)后,需要配置好白名單和數(shù)據(jù)庫(kù)參數(shù)后才能夠正常使用。本文主要繞數(shù)據(jù)庫(kù)的安全訪問(wèn)、性能優(yōu)化、可靠性保障、運(yùn)維審計(jì)等部分,系統(tǒng)梳理了白名單、內(nèi)存參數(shù)、WAL參數(shù)、連接數(shù)相關(guān)參數(shù)等關(guān)鍵配置項(xiàng),可以顯著提升數(shù)據(jù)庫(kù)安全性、性能及可維護(hù)性。
1 白名單
白名單用于限制可連接數(shù)據(jù)庫(kù)的客戶端 IP,是數(shù)據(jù)庫(kù)安全防護(hù)的基礎(chǔ)手段之一。通過(guò)指定允許連接的 IP 地址及認(rèn)證方式,可有效防止未授權(quán) IP 的非法訪問(wèn),提升數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)訪問(wèn)安全性。
# 允許192.168.1.100訪問(wèn)
gs_guc reload -N all -I all -h "host dbname username 192.168.1.100/32 sha256"
# 允許192.168.1網(wǎng)段ip訪問(wèn)
gs_guc reload -N all -I all -h "host dbname username 192.168.1.0/32 sha256"
# 允許所有ip訪問(wèn)
gs_guc reload -N all -I all -h 'host all all 0.0.0.0/32 sha256'
配置vip后,也建議將vip加入白名單。
2 參數(shù)優(yōu)化
設(shè)置完所有參數(shù)后,需要重啟數(shù)據(jù)庫(kù),讓POSTMASTER類型的參數(shù)生效。
2.1 內(nèi)存
內(nèi)存是數(shù)據(jù)庫(kù)性能的關(guān)鍵瓶頸之一,針對(duì)內(nèi)存相關(guān)參數(shù)進(jìn)行優(yōu)化,這些參數(shù)控制數(shù)據(jù)庫(kù)對(duì)系統(tǒng)內(nèi)存的分配與使用,需根據(jù)服務(wù)器實(shí)際內(nèi)存大小合理配置,避免內(nèi)存不足導(dǎo)致的性能下降或內(nèi)存浪費(fèi)。
| 參數(shù) | 推薦值 | 默認(rèn)值 | 參數(shù)類型 |
|---|---|---|---|
| max_process_memory | >=64GB:RAM * 80% / 實(shí)例個(gè)數(shù) <64GB: RAM * 70% / 實(shí)例個(gè)數(shù) <8GB: RAM * 60% / 實(shí)例個(gè)數(shù) <4GB: 默認(rèn) | 12GB | POSTMASTER |
| shared_buffers | max_process_memory * 40% | 8MB | POSTMASTER |
| work_mem | >=64GB: 64MB <64GB: 32MB <8GB:16MB <4GB:默認(rèn) | 64MB | USERSET |
| maintenance_work_mem | >=64GB: 2GB <64GB: 1GB <8GB:512MB <4GB:默認(rèn) | 16MB | USERSET |
| wal_buffers | >=64GB: 1GB <64GB: 512GB <8GB:128MB <4GB:默認(rèn) | 16MB | POSTMASTER |
| standby_shared_buffers_fraction | 1 | 0.3 | SIGHUP |
| local_syscache_threshold | 32MB | 256MB | SIGHUP |
參數(shù)說(shuō)明:
- max_process_memory: 一個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)可用的最大物理內(nèi)存
- shared_buffers: openGauss使用的共享內(nèi)存大小
- work_mem: 內(nèi)部排序操作和Hash表在開(kāi)始寫入臨時(shí)磁盤文件之前使用的內(nèi)存大小
- maintenance_work_mem: 設(shè)置在維護(hù)性操作可使用的最大的內(nèi)存
- cstore_buffers: 列存所使用的共享緩沖區(qū)的大小
- wal_buffers: 用于存放WAL數(shù)據(jù)的共享內(nèi)存空間的XLOG_BLCKSZ數(shù)
- standby_shared_buffers_fraction: 備庫(kù)所在服務(wù)器使用shared_buffers內(nèi)存緩沖區(qū)大小的比例
- local_syscache_threshold: 控制session動(dòng)態(tài)內(nèi)存大小
假設(shè)內(nèi)存小于8G,設(shè)置參數(shù):
gs_guc set -I all -N all -c "max_process_memory=4GB"
gs_guc set -I all -N all -c "shared_buffers=1GB"
gs_guc set -I all -N all -c "cstore_buffers=16MB"
gs_guc set -I all -N all -c "wal_buffers=128MB"
gs_guc reload -I all -N all -c "work_mem=16MB"
gs_guc reload -I all -N all -c "maintenance_work_mem=512MB"
gs_guc reload -I all -N all -c "standby_shared_buffers_fraction=1"
gs_guc reload -I all -N all -c "local_syscache_threshold=32MB"
2.2 連接數(shù)
連接數(shù)參數(shù)控制數(shù)據(jù)庫(kù)允許的并發(fā)連接及復(fù)制相關(guān)連接數(shù)量,直接影響數(shù)據(jù)庫(kù)的并發(fā)處理能力。配置過(guò)高可能導(dǎo)致資源耗盡,過(guò)低則限制業(yè)務(wù)并發(fā)量。
| 參數(shù) | 推薦值 | 默認(rèn)值 | 參數(shù)類型 |
|---|---|---|---|
| max_connections | >=64GB: 3000 <64GB: 1000 <8GB:500 <4GB:默認(rèn) | 5000 | POSTMASTER |
| max_replication_slots | 32 | 8 | POSTMASTER |
| max_wal_senders | 16 | 16 | POSTMASTER |
| max_prepared_transactions | >=64GB: 3000 <64GB: 1000 <8GB:500 <4GB:默認(rèn) | 10 | POSTMASTER |
參數(shù)說(shuō)明:
- max_connections: 最大連接數(shù)
- max_replication_slots: 當(dāng)前物理流復(fù)制槽數(shù)+所需的邏輯復(fù)制槽數(shù)
- max_wal_senders: 事務(wù)日志發(fā)送進(jìn)程的并發(fā)連接最大數(shù)量,不可大于等于max_connections
- max_prepared_transactions: 同時(shí)處于"預(yù)備"狀態(tài)的事務(wù)的最大數(shù)目
假設(shè)內(nèi)存小于8G,設(shè)置參數(shù):
gs_guc set -I all -N all -c "max_connections=500"
gs_guc set -I all -N all -c "max_replication_slots=32"
gs_guc set -I all -N all -c "max_wal_senders=16"
gs_guc set -I all -N all -c "max_prepared_transactions=500"
2.3 WAL相關(guān)
WAL(預(yù)寫式日志)是數(shù)據(jù)庫(kù)數(shù)據(jù)一致性和故障恢復(fù)的核心機(jī)制,優(yōu)化日志寫入策略(如關(guān)閉full_page_writes)、增加日志保留段(wal_keep_segments=1024),平衡 WAL 的可靠性、性能及存儲(chǔ)開(kāi)銷。
| 參數(shù) | 推薦值 | 默認(rèn)值 | 參數(shù)類型 |
|---|---|---|---|
| wal_level | hot_standby | hot_standby | POSTMASTER |
| full_page_writes | off | on | SIGHUP |
| wal_log_hints | off | on | POSTMASTER |
| wal_keep_segments | 1024 | 16 | SIGHUP |
| wal_sender_timeout | 10s | 6s | SIGHUP |
| xloginsert_locks | 48 | 8 | POSTMASTER |
| advance_xlog_file_num | 10 | 0 | POSTMASTER |
| archive_mode | on | off | SIGHUP |
| archive_dest | /archive | SIGHUP |
參數(shù)說(shuō)明:
- wal_level: 寫入WAL信息量的級(jí)別(minimal、archive、hot_standby、logical)
- full_page_writes: 在檢查點(diǎn)之后對(duì)頁(yè)面的第一次修改時(shí),是否將每個(gè)磁盤頁(yè)面的全部?jī)?nèi)容寫到WAL日志中
- wal_log_hints: 檢查點(diǎn)之后對(duì)頁(yè)面的第一次修改為頁(yè)面上元組hint bits的修改時(shí),是否將整個(gè)頁(yè)面的全部?jī)?nèi)容寫到WAL日志中
- wal_keep_segments: Xlog日志文件段數(shù)量,“pg_xlog”目錄下保留事務(wù)日志文件的最小數(shù)目
- wal_sender_timeout: 設(shè)置本端等待事務(wù)日志接收端接收日志的最大等待時(shí)間。
- xloginsert_locks: 并發(fā)寫預(yù)寫式日志鎖的個(gè)數(shù)
- advance_xlog_file_num: 在后臺(tái)周期性地提前初始化xlog文件的數(shù)目
- archive_mode: 是否進(jìn)行歸檔操作
- archive_dest: 由管理員設(shè)置的用于歸檔WAL日志的目錄,建議歸檔路徑為絕對(duì)路徑
設(shè)置參數(shù):
gs_guc set -I all -N all -c "wal_level=hot_standby"
gs_guc set -I all -N all -c "wal_log_hints=off"
gs_guc set -I all -N all -c "xloginsert_locks=48"
gs_guc set -I all -N all -c "advance_xlog_file_num=10"
gs_guc reload -I all -N all -c "full_page_writes=off"
gs_guc reload -I all -N all -c "wal_keep_segments=1024"
gs_guc reload -I all -N all -c "wal_sender_timeout=10s"
gs_guc reload -N all -I all -c "archive_mode=on"
gs_guc reload -N all -I all -c "archive_dest='/archive'" #根據(jù)實(shí)際設(shè)置
2.4 數(shù)據(jù)庫(kù)日志
數(shù)據(jù)庫(kù)日志記錄系統(tǒng)運(yùn)行狀態(tài)、錯(cuò)誤信息及 SQL 執(zhí)行情況,是問(wèn)題排查、性能分析的重要依據(jù),相關(guān)參數(shù)配置日志收集、存儲(chǔ)及內(nèi)容格式。
| 參數(shù) | 推薦值 | 默認(rèn)值 | 參數(shù)類型 |
|---|---|---|---|
| logging_collector | on | on | POSTMASTER |
| log_filename | postgresql-%Y-%m-%d_%H%M%S.log | postgresql-%Y-%m-%d_%H%M%S.log | SIGHUP |
| log_duration | off | off | SUPERUSER |
| log_line_prefix | %m %u %d %r %p %S | %m %c %d %p %a %x %n %e | SIGHUP |
| log_truncate_on_rotation | off | off | SIGHUP |
| log_checkpoints | on | off | SIGHUP |
| temp_file_limit | 100GB | -1 | SUSET |
參數(shù)說(shuō)明
- logging_collector: 控制開(kāi)啟后端日志收集進(jìn)程logger進(jìn)行日志收集。該進(jìn)程捕獲發(fā)送到stderr或csvlog的日志消息并寫入日志文件
- log_filename: 數(shù)據(jù)庫(kù)日志名稱
- log_duration: 記錄每個(gè)已完成SQL語(yǔ)句的執(zhí)行時(shí)間
- log_line_prefix: 每條日志信息的前綴格式
- log_truncate_on_rotation: 設(shè)置日志消息的寫入方式
- log_checkpoints: 在服務(wù)器日志中記錄檢查點(diǎn)和重啟點(diǎn)的信息
- temp_file_limit: 限制一個(gè)會(huì)話中,觸發(fā)下盤操作時(shí),單個(gè)下盤文件的空間大小。例如一次會(huì)話中,排序和哈希表使用的臨時(shí)文件,或者游標(biāo)占用的臨時(shí)文件
設(shè)置參數(shù):
gs_guc set -I all -N all -c "logging_collector=on"
gs_guc set -I all -N all -c "log_duration=off"
gs_guc reload -I all -N all -c "log_filename=postgresql-%Y-%m-%d_%H%M%S.log"
gs_guc reload -I all -N all -c "log_line_prefix='%m %u %d %r %p %S'"
gs_guc reload -I all -N all -c "log_truncate_on_rotation=off"
gs_guc reload -I all -N all -c "log_checkpoints=on"
gs_guc reload -I all -N all -c "temp_file_limit=10GB"
2.5 統(tǒng)計(jì)分析
自動(dòng)清理(VACUUM)和分析(ANALYZE)操作對(duì)維持表性能(如索引效率、統(tǒng)計(jì)信息準(zhǔn)確性)至關(guān)重要,設(shè)置參數(shù)優(yōu)化自動(dòng)維護(hù)任務(wù)的執(zhí)行策略。
| 參數(shù) | 推薦值 | 默認(rèn)值 | 參數(shù)類型 |
|---|---|---|---|
| vacuum_cost_limit | 1000 | 200 | USER |
| autovacuum_max_workers | 10 | 3 | POSTMASTER |
| autovacuum_naptime | 20s | 600s | SIGHUP |
| autovacuum_vacuum_cost_delay | 10 | 20 | SIGHUP |
| autovacuum_vacuum_scale_factor | 0.05 | 0.2 | SIGHUP |
| autovacuum_analyze_scale_factor | 0.02 | 0.1 | SIGHUP |
| autovacuum_vacuum_threshold | 200 | 50 | SIGHUP |
| autovacuum_analyze_threshold | 200 | 50 | SIGHUP |
| autovacuum_io_limits | 104857600 | -1 | SIGHUP |
參數(shù)說(shuō)明:
- vacuum_cost_limit: 清理進(jìn)程休眠的開(kāi)銷限制
- autovacuum_max_workers: 能同時(shí)運(yùn)行的自動(dòng)清理線程的最大數(shù)量
- autovacuum_naptime: 兩次自動(dòng)清理操作的時(shí)間間隔
- autovacuum_vacuum_cost_delay: 自動(dòng)VACUUM操作里使用的開(kāi)銷延遲數(shù)值
- autovacuum_vacuum_scale_factor: 觸發(fā)一個(gè)VACUUM時(shí)增加到autovacuum_vacuum_threshold的表大小的縮放系數(shù)
- autovacuum_analyze_scale_factor: 觸發(fā)一個(gè)ANALYZE時(shí)增加到autovacuum_analyze_threshold的表大小的縮放系數(shù)
- autovacuum_vacuum_threshold: 觸發(fā)VACUUM的閾值
- autovacuum_analyze_threshold: 觸發(fā)ANALYZE操作的閾值
- autovacuum_io_limits: 控制autovacuum進(jìn)程每秒觸發(fā)IO的上限
參數(shù)設(shè)置:
gs_guc set -I all -N all -c "autovacuum_max_workers=10"
gs_guc reload -I all -N all -c "vacuum_cost_limit=1000"
gs_guc reload -I all -N all -c "autovacuum_naptime=20s"
gs_guc reload -I all -N all -c "autovacuum_vacuum_cost_delay=10"
gs_guc reload -I all -N all -c "autovacuum_vacuum_scale_factor=0.05"
gs_guc reload -I all -N all -c "autovacuum_analyze_scale_factor=0.02"
gs_guc reload -I all -N all -c "autovacuum_vacuum_threshold=200"
gs_guc reload -I all -N all -c "autovacuum_analyze_threshold=200"
gs_guc reload -I all -N all -c "autovacuum_io_limits=104857600"
2.6 復(fù)制
主備復(fù)制場(chǎng)景參數(shù)優(yōu)化,確保主備數(shù)據(jù)同步的可靠性和效率,減少?gòu)?fù)制延遲對(duì)業(yè)務(wù)的影響。
| 參數(shù) | 推薦值 | 默認(rèn)值 | 參數(shù)類型 |
|---|---|---|---|
| most_available_sync | on | off | SIGHUP |
| wal_receiver_timeout | 60s | 6s | SIGHUP |
| catchup2normal_wait_time | 0 | -1 | SIGHUP |
| enable_slot_log | on | off | USERSET |
參數(shù)說(shuō)明:
- most_available_sync: 在備機(jī)同步失敗時(shí),是否阻塞主機(jī)
- wal_receiver_timeout: 從主機(jī)接收數(shù)據(jù)的最大等待時(shí)間
- catchup2normal_wait_time: 單同步備機(jī)情況下,控制備機(jī)數(shù)據(jù)追趕(catchup)阻塞主機(jī)的最長(zhǎng)時(shí)間
- enable_slot_log: 是否開(kāi)啟邏輯復(fù)制槽主備同步特性
設(shè)置參數(shù):
gs_guc reload -I all -N all -c "most_available_sync=on" gs_guc reload -I all -N all -c "wal_receiver_timeout=60s" gs_guc reload -I all -N all -c "catchup2normal_wait_time=0" gs_guc reload -I all -N all -c "enable_slot_log=on"
2.7 檢查點(diǎn)
檢查點(diǎn)是將內(nèi)存臟頁(yè)刷寫到磁盤的關(guān)鍵操作,影響數(shù)據(jù)庫(kù)恢復(fù)速度和 IO 負(fù)載,配置參數(shù)控制檢查點(diǎn)的頻率和執(zhí)行效率。
| 參數(shù) | 推薦值 | 默認(rèn)值 | 參數(shù)類型 |
|---|---|---|---|
| checkpoint_segments | 1024 | 64 | SIGHUP |
| checkpoint_completion_target | 0.8 | 0.5 | SIGHUP |
參數(shù)說(shuō)明:
- checkpoint_segments: checkpoint_timeout周期內(nèi)所保留的最少WAL日志段文件數(shù)量
- checkpoint_completion_target: 檢查點(diǎn)完成的目標(biāo)
設(shè)置參數(shù):
gs_guc reload -I all -N all -c "checkpoint_segments=1024" gs_guc reload -I all -N all -c "checkpoint_completion_target=0.8"
2.8 查詢
下列參數(shù)是優(yōu)化 SQL 查詢的執(zhí)行效率和會(huì)話管理,包括查詢優(yōu)化開(kāi)關(guān)、會(huì)話超時(shí)、慢 SQL 日志等。
| 參數(shù) | 推薦值 | 默認(rèn)值 | 參數(shù)類型 |
|---|---|---|---|
| enable_opfusion | off | on | USERSET |
| session_timeout | 0 | 10min | USERSET |
| instr_unique_sql_count | 200000 | 100 | SIGHUP |
| track_activity_query_size | 2048 | 1024 | POSTMASTER |
| log_min_duration_statement | 200 | 30min | SUSET |
參數(shù)說(shuō)明:
- enable_opfusion: 控制是否對(duì)簡(jiǎn)單增刪改查進(jìn)行優(yōu)化
- session_timeout: 與服務(wù)器建立鏈接后,不進(jìn)行任何操作的最長(zhǎng)時(shí)間,0表示關(guān)閉超時(shí)設(shè)置
- instr_unique_sql_count: 控制系統(tǒng)中unique sql信息實(shí)時(shí)收集功能。(由50000 改為 200000)
- track_activity_query_size: 一個(gè)活動(dòng)會(huì)話的當(dāng)前正在執(zhí)行命令的字節(jié)數(shù)
- log_min_duration_statement: 超過(guò)200ms的慢sql記錄到statement_history中
設(shè)置參數(shù):
gs_guc set -I all -N all -c "track_activity_query_size=2048"
gs_guc reload -I all -N all -c "enable_opfusion=off"
gs_guc reload -I all -N all -c "session_timeout='0'"
gs_guc reload -I all -N all -c "instr_unique_sql_count=200000"
gs_guc reload -I all -N all -c "log_min_duration_statement=200"
2.9 安全
涉及用戶密碼安全,通過(guò)控制密碼加密方式、有效期、重用規(guī)則等增強(qiáng)賬戶安全性。
| 參數(shù) | 推薦值 | 默認(rèn)值 | 參數(shù)類型 |
|---|---|---|---|
| password_encryption_type | 1 | 2 | SIGHUP |
| password_reuse_time | 60 | 60 | SIGHUP |
| password_lock_time | 1 | 1 | SIGHUP |
| password_effect_time | 36500 | 90 | SIGHUP |
參數(shù)說(shuō)明:
- password_encryption_type: 采用何種加密方式對(duì)用戶密碼進(jìn)行加密存儲(chǔ)
- password_reuse_time: 對(duì)新密碼進(jìn)行可重用天數(shù)檢查
- password_lock_time: 帳戶被鎖定后自動(dòng)解鎖的時(shí)間
- password_effect_time: 帳戶密碼的有效時(shí)間
設(shè)置參數(shù):
gs_guc reload -I all -N all -c "password_encryption_type=1" gs_guc reload -I all -N all -c "password_reuse_time=60" gs_guc reload -I all -N all -c "password_lock_time=1" gs_guc reload -I all -N all -c "password_effect_time=36500"
2.10 審計(jì)
審計(jì)功能用于記錄數(shù)據(jù)庫(kù)的關(guān)鍵操作(如登錄、權(quán)限變更、數(shù)據(jù)修改),滿足合規(guī)性要求并輔助安全事件追溯。下列參數(shù)控制審計(jì)日志的開(kāi)啟、內(nèi)容及存儲(chǔ)策略。
不過(guò)在生產(chǎn)中數(shù)據(jù)庫(kù)側(cè)一般是不開(kāi)審計(jì)的,通常是堡壘機(jī)層面做審計(jì)。
| 參數(shù) | 推薦值 | 默認(rèn)值 | 參數(shù)類型 |
|---|---|---|---|
| audit_enabled | on | on | SIGHUP |
| audit_login_logout | 7 | 7 | SIGHUP |
| ? audit_grant_revoke | 1 | 1 | SIGHUP |
| audit_database_process | 0 | 1 | SIGHUP |
| audit_user_locked | 0 | 1 | SIGHUP |
| audit_user_violation | 0 | 0 | SIGHUP |
| audit_system_object | 0 | 12295 | SIGHUP |
| audit_dml_state_select | 0 | 0 | SIGHUP |
| audit_dml_state | 0 | 0 | SIGHUP |
| audit_function_exec | 0 | 0 | SIGHUP |
| audit_copy_exec | 0 | 1 | SIGHUP |
| audit_set_parameter | 0 | 1 | SIGHUP |
| audit_xid_info | 0 | 0 | SIGHUP |
| audit_directory | /database/panweidb/pg_audit | /var/log/mogdb/用戶名/pg_audit | POSTMASTER |
| audit_resource_policy | off | on | SIGHUP |
| audit_space_limit | 5GB | 1GB | SIGHUP |
| audit_file_remain_time | 7 | 90 | SIGHUP |
參數(shù)說(shuō)明:
- audit_enabled: 審計(jì)進(jìn)程的開(kāi)啟和關(guān)閉
- audit_login_logout: “決定是否審計(jì)panweidb用戶的登錄(包括登錄成功和登錄失?。?、注銷
0:關(guān)閉用戶登錄、注銷審計(jì)功能。
1:只審計(jì)用戶登錄成功。
2:只審計(jì)用戶登錄失敗。
3:只審計(jì)用戶登錄成功和失敗。
4:只審計(jì)用戶注銷。
5:只審計(jì)用戶注銷和登錄成功。
6:只審計(jì)用戶注銷和登錄失敗。
7:審計(jì)用戶登錄成功、失敗和注銷。” - audit_grant_revoke: 是否審計(jì)openGauss用戶權(quán)限授予和回收的操作
- audit_database_process: 是否對(duì)openGauss的啟動(dòng)、停止、切換和恢復(fù)進(jìn)行審計(jì)
- audit_user_locked: 是否審計(jì)openGauss用戶的鎖定和解鎖
- audit_user_violation: 是否審計(jì)用戶的越權(quán)訪問(wèn)操作
- audit_system_object: 數(shù)據(jù)庫(kù)對(duì)象的CREATE,ALTER,DROP操作審計(jì)
- audit_dml_state_select: SELECT操作審計(jì)
- audit_dml_state: 表的INSERT、UPDATE和DELETE操作審計(jì)
- audit_function_exec: 存儲(chǔ)過(guò)程和自定義函數(shù)的執(zhí)行審計(jì)
- audit_copy_exec: 是否審計(jì)COPY操作
- audit_set_parameter: 是否審計(jì)SET操作
- audit_xid_info: 是否記錄審計(jì)日志記錄事務(wù)ID功能
- audit_directory: 審計(jì)文件的存儲(chǔ)目錄
- audit_resource_policy: “審計(jì)日志的保存策略。
on表示采用空間優(yōu)先策略,最多存儲(chǔ)audit_space_limit大小的日志,默認(rèn)on。
off表示采用時(shí)間優(yōu)先策略,最少存儲(chǔ)audit_file_remain_time長(zhǎng)度時(shí)間的日志” - audit_space_limit: 審計(jì)文件占用的磁盤空間總量
- audit_file_remain_time: 審計(jì)日志文件的最小保存時(shí)間,單位天
設(shè)置參數(shù):
gs_guc set -I all -N all -c "audit_directory = '/database/panweidb/pg_audit'"
gs_guc reload -I all -N all -c "audit_enabled = 'on'"
gs_guc reload -I all -N all -c "audit_login_logout = '7'"
gs_guc reload -I all -N all -c "audit_grant_revoke = '1'"
gs_guc reload -I all -N all -c "audit_database_process = '0'"
gs_guc reload -I all -N all -c "audit_user_locked = '0'"
gs_guc reload -I all -N all -c "audit_user_violation = '0'"
gs_guc reload -I all -N all -c "audit_system_object = '0'"
gs_guc reload -I all -N all -c "audit_dml_state_select = '0'"
gs_guc reload -I all -N all -c "audit_dml_state = '0'"
gs_guc reload -I all -N all -c "audit_function_exec = '0'"
gs_guc reload -I all -N all -c "audit_copy_exec = '0'"
gs_guc reload -I all -N all -c "audit_set_parameter = '0'"
gs_guc reload -I all -N all -c "audit_xid_info = '0'"
gs_guc reload -I all -N all -c "audit_resource_policy = 'off'"
gs_guc reload -I all -N all -c "audit_space_limit = '5GB'"
gs_guc reload -I all -N all -c "audit_file_remain_time = '7'"
2.11 其他
涵蓋了其他未歸類的核心參數(shù),包括監(jiān)控快照、存儲(chǔ)引擎、線程池、事務(wù)管理等,用于補(bǔ)充優(yōu)化數(shù)據(jù)庫(kù)的綜合性能和功能,這些參數(shù)也非常重要。
| 參數(shù) | 推薦值 | 默認(rèn)值 | 參數(shù)類型 |
|---|---|---|---|
| enable_wdr_snapshot | on | off | SIGHUP |
| sync_config_strategy | none_node | all_node | POSTMASTER |
| enable_save_datachanged_timestamp | off | on | USER |
| track_sql_count | off | on | SUPERUSER |
| enable_instr_rt_percentile | off | on | SIGHUP |
| enable_instance_metric_persistent | off | on | SIGHUP |
| enable_logical_io_statistics | off | on | SIGHUP |
| enable_user_metric_persistent | off | on | SIGHUP |
| enable_mergejoin | on | off | USER |
| enable_nestloop | on | off | USER |
| enable_pbe_optimization | off | on | SUPERUSER |
| max_files_per_process | 100000 | 1000 | POSTMASTER |
| lc_messages | en_US.UTF-8 | C | SUSET |
| lc_monetary | en_US.UTF-8 | C | USERSET |
| lc_numeric | en_US.UTF-8 | C | USERSET |
| lc_time | en_US.UTF-8 | C | USERSET |
| enable_asp | on | on | SIGNUP |
| behavior_compat_options | display_leading_zero | display_leading_zero | USERSET |
| enable_thread_pool | off | off | POSTMASTER |
| synchronous_commit | on | on | USERSET |
| recovery_max_workers | 4 | 1 | POSTMASTER |
| enable_alarm | off | on | POSTMASTER |
| enable_codegen | off | on | USERSET |
| update_lockwait_timeout | 1min | 2min | SUSET |
| lockwait_timeout | 1min | 20min | SUSET |
| max_prepared_transactions | 3000 | 10 | POSTMASTER |
| pagewriter_sleep | 200 | 2000ms | SIGHUP |
| max_size_for_xlog_prune | 104857600 | 2147483647KB | SIGHUP |
| gs_clean_timeout | 0 | 1min | SIGHUP |
| enable_ustore | off | on | POSTMASTER |
| enable_double_write | on | on | POSTMASTER |
| enable_incremental_checkpoint | on | on | POSTMASTER |
| random_page_cost | 1.5 | 4 | USERSET |
參數(shù)
- enable_wdr_snapshot: 數(shù)據(jù)庫(kù)監(jiān)控快照功能
- sync_config_strategy: 主機(jī)、備機(jī)和級(jí)聯(lián)備之間配置文件的同步策略
- enable_save_datachanged_timestamp: 確定是否收集insert/update/delete, exchange/truncate/drop partition操作對(duì)表數(shù)據(jù)改動(dòng)的時(shí)間
- track_sql_count: 控制對(duì)每個(gè)會(huì)話中當(dāng)前正在執(zhí)行的SELECT、INSERT、UPDATE、DELETE、MERGE INTO語(yǔ)句進(jìn)行計(jì)數(shù)的統(tǒng)計(jì)數(shù)據(jù)
- enable_instr_rt_percentile: 開(kāi)啟計(jì)算系統(tǒng)中80%和95%的SQL響應(yīng)時(shí)間的功能
- enable_instance_metric_persistent: 開(kāi)啟實(shí)例資源監(jiān)控轉(zhuǎn)存功能,開(kāi)啟時(shí),對(duì)實(shí)例的監(jiān)控?cái)?shù)據(jù)會(huì)保存到GS_WLM_INSTANCE_HISTORY系統(tǒng)表中。
- enable_logical_io_statistics: 開(kāi)啟資源監(jiān)控邏輯IO統(tǒng)計(jì)功能,開(kāi)啟時(shí),對(duì)于PG_TOTAL_USER_RESOURCE_INFO視圖中的read_kbytes、write_kbytes、read_counts、write_counts、read_speed和write_speed字段,會(huì)統(tǒng)計(jì)對(duì)應(yīng)用戶的邏輯讀寫字節(jié)數(shù)、次數(shù)以及速率。
- enable_user_metric_persistent: 開(kāi)啟用戶歷史資源監(jiān)控轉(zhuǎn)存功能,開(kāi)啟時(shí),對(duì)于PG_TOTAL_USER_RESOURCE_INFO視圖中數(shù)據(jù),會(huì)定期采樣保存到GS_WLM_EC_OPERATOR_INFO系統(tǒng)表中。
- enable_mergejoin: 優(yōu)化器對(duì)融合連接規(guī)劃類型的使用
- enable_nestloop: 優(yōu)化器對(duì)內(nèi)表全表掃描嵌套循環(huán)連接規(guī)劃類型的使用完全消除嵌套循環(huán)連接是不可能的,但是關(guān)閉這個(gè)變量就會(huì)讓優(yōu)化器在存在其他方法的時(shí)候優(yōu)先選擇其他方法。
- enable_pbe_optimization: 對(duì)以PBE(Parse Bind Execute)形式執(zhí)行的語(yǔ)句進(jìn)行查詢計(jì)劃的優(yōu)化
- max_files_per_process: 設(shè)置每個(gè)服務(wù)器進(jìn)程允許同時(shí)打開(kāi)的最大文件數(shù)目
- lc_messages: 信息顯示的語(yǔ)言
- lc_monetary: 貨幣值的顯示格式
- lc_numeric: 數(shù)值的顯示格式
- lc_time: 時(shí)間和區(qū)域的顯示格式
- enable_asp: 是否開(kāi)啟活躍會(huì)話信息active session profile。
- behavior_compat_options: 用于解決輸出decimal數(shù)字時(shí)候缺頭部0的問(wèn)題,比方0.2默認(rèn)只輸出.2,參數(shù)作用于gsql客戶端和wal2json插件
- enable_thread_pool: 控制是否使用線程池功能(3.0開(kāi)啟,做了異步提交增強(qiáng))
- synchronous_commit: 當(dāng)前事務(wù)的同步方式
- recovery_max_workers: 最大并行回放線程個(gè)數(shù)
- enable_alarm: 告警檢測(cè)線程,檢測(cè)數(shù)據(jù)庫(kù)中可能的錯(cuò)誤場(chǎng)景
- enable_codegen: 開(kāi)啟代碼生成優(yōu)化,目前代碼生成使用的是LLVM優(yōu)化
- update_lockwait_timeout: 并發(fā)更新參數(shù)開(kāi)啟情況下,該參數(shù)控制并發(fā)更新同一行時(shí)單個(gè)鎖的最長(zhǎng)等待時(shí)間
- lockwait_timeout: 單個(gè)鎖的最長(zhǎng)等待時(shí)間
- max_prepared_transactions: 設(shè)置可以同時(shí)處于"預(yù)備"狀態(tài)的事務(wù)的最大數(shù)目。增加此參數(shù)的值會(huì)使openGauss比系統(tǒng)默認(rèn)設(shè)置需要更多的System V共享內(nèi)存
- pagewriter_sleep: 臟頁(yè)數(shù)量不足pagewriter_threshold時(shí),后臺(tái)刷頁(yè)線程將sleep設(shè)置的時(shí)間繼續(xù)刷頁(yè)
- max_size_for_xlog_prune: 在enable_xlog_prune打開(kāi)時(shí)生效,如果有備機(jī)斷連且xlog日志大小大于此閾值,則回收日志。所有備機(jī)斷聯(lián)且無(wú)邏輯復(fù)制槽時(shí),不回收日志
- gs_clean_timeout: 控制清理臨時(shí)表時(shí)間。數(shù)據(jù)庫(kù)連接異常終止時(shí),通常會(huì)有臨時(shí)表殘留,此時(shí)需要對(duì)數(shù)據(jù)庫(kù)中的臨時(shí)表進(jìn)行清理。
- enable_ustore: ustore存儲(chǔ)引擎特性
- enable_double_write: “雙寫開(kāi)關(guān)。當(dāng)增量檢查點(diǎn)開(kāi)關(guān)打開(kāi)時(shí),同時(shí)enable_double_write打開(kāi),則
使用enable_double_write雙寫特性保護(hù),不再使用full_page_writes防止半頁(yè)寫問(wèn)題” - enable_incremental_checkpoint: 增量檢查點(diǎn)開(kāi)關(guān)打開(kāi)之后,設(shè)置自動(dòng)WAL檢查點(diǎn)之間的最長(zhǎng)時(shí)間
- random_page_cost: 設(shè)置優(yōu)化器計(jì)算一次非順序抓取磁盤頁(yè)面的開(kāi)銷。
設(shè)置:
gs_guc set -I all -N all -c "enable_ustore = 'off'";
gs_guc set -I all -N all -c "enable_double_write = 'on'";
gs_guc set -I all -N all -c "enable_incremental_checkpoint = 'on'";
gs_guc set -I all -N all -c "sync_config_strategy = 'none_node'";
gs_guc set -I all -N all -c "max_files_per_process = '100000'";
gs_guc set -I all -N all -c "recovery_max_workers = '4'";
gs_guc set -I all -N all -c "enable_alarm = 'off'";
gs_guc set -I all -N all -c "enable_thread_pool = 'off'";
gs_guc set -I all -N all -c "max_prepared_transactions = '3000'";
gs_guc reload -I all -N all -c "enable_wdr_snapshot = 'on'";
gs_guc reload -I all -N all -c "enable_save_datachanged_timestamp = 'off'";
gs_guc reload -I all -N all -c "track_sql_count = 'off'";
gs_guc reload -I all -N all -c "enable_instr_rt_percentile = 'off'";
gs_guc reload -I all -N all -c "enable_instance_metric_persistent = 'off'";
gs_guc reload -I all -N all -c "enable_logical_io_statistics = 'off'";
gs_guc reload -I all -N all -c "enable_user_metric_persistent = 'off'";
gs_guc reload -I all -N all -c "enable_mergejoin = 'on'";
gs_guc reload -I all -N all -c "enable_nestloop = 'on'";
gs_guc reload -I all -N all -c "enable_pbe_optimization = 'off'";
gs_guc reload -I all -N all -c "lc_messages = 'en_US.UTF-8'";
gs_guc reload -I all -N all -c "lc_monetary = 'en_US.UTF-8'";
gs_guc reload -I all -N all -c "lc_numeric = 'en_US.UTF-8'";
gs_guc reload -I all -N all -c "lc_time = 'en_US.UTF-8'";
gs_guc reload -I all -N all -c "enable_asp = 'on'";
gs_guc reload -I all -N all -c "behavior_compat_options = 'display_leading_zero'";
gs_guc reload -I all -N all -c "synchronous_commit = 'on'";
gs_guc reload -I all -N all -c "enable_codegen = 'off'";
gs_guc reload -I all -N all -c "update_lockwait_timeout = '1min'";
gs_guc reload -I all -N all -c "lockwait_timeout = '1min'";
gs_guc reload -I all -N all -c "pagewriter_sleep = '200'";
gs_guc reload -I all -N all -c "max_size_for_xlog_prune = '104857600'";
gs_guc reload -I all -N all -c "gs_clean_timeout = '0'";
gs_guc reload -I all -N all -c " random_page_cost = '1.5'";
3 總結(jié)
通過(guò)以上白名單和參數(shù)配置方案,可以在生產(chǎn)環(huán)境中顯著提升磐維數(shù)據(jù)庫(kù)的安全性、性能及可維護(hù)性,適用于生產(chǎn)環(huán)境部署參考。




