
文檔教程知識庫【免費下載鏈接】til:memo: Today I Learned項目地址https://gitcode.com/gh_mirrors/ti/til點擊查看免費下載導(dǎo)讀在排查連接認證pg_hba.conf、調(diào)整日志logging_collector、log_statement、修改監(jiān)聽端口或內(nèi)存參數(shù)時第一件事就是找到 PostgreSQL 的主配置文件postgresql.conf在哪里。本文介紹一個只需要能連上數(shù)據(jù)庫就能用的方法——在psql會話里執(zhí)行SHOW config_file;讓 PostgreSQL 自己告訴你主配置文件的絕對路徑并順帶掌握與它同目錄的其他配置文件如pg_hba.conf、數(shù)據(jù)目錄定位方法以及修改后重載/重啟的完整流程。為什么需要定位配置文件PostgreSQL 的配置是集群級的一組數(shù)據(jù)庫共享同一個數(shù)據(jù)目錄data directory而主配置文件postgresql.conf就存放在該數(shù)據(jù)目錄中。它的具體位置取決于集群是怎么初始化的使用 Postgres.app、Homebrew、asdf、系統(tǒng)包管理器或者自編譯安裝路徑各不相同即使用同一個安裝方式initdb時指定的-D數(shù)據(jù)目錄不同配置文件也會出現(xiàn)在不同位置。因此與其靠記憶去猜路徑不如直接從數(shù)據(jù)庫本身獲取答案——只要你能用psql連接到數(shù)據(jù)庫就一定能得到準確的主配置文件路徑。核心方法SHOW config_file在psql會話中執(zhí)行 show config_file; config_file -------------------------------------------------------------------------------- /Users/jbranchaud/Library/Application Support/Postgres/var-9.5/postgresql.confPostgreSQL 會返回當(dāng)前集群主配置文件的絕對路徑。上面的輸出來自一個用 Postgres.app 創(chuàng)建的、版本為 9.5 的本地集群數(shù)據(jù)目錄為var-9.5。用 asdf 安裝的 PostgreSQL 集群輸出則類似見 enable-logging-of-database-activity.md 中的實際示例 show config_file; config_file --------------------------------------------------------------------- /Users/jbranchaud/.asdf/installs/postgres/12.3/data/postgresql.conf (1 row)可以看到postgresql.conf永遠位于集群數(shù)據(jù)目錄內(nèi)——找到它的路徑也就找到了數(shù)據(jù)目錄反之亦然。SHOW config_file是標準的 SQL 語句因此它不只適用于psql任何能執(zhí)行 SQL 的客戶端如應(yīng)用驅(qū)動、IDE 數(shù)據(jù)庫面板都能拿到同樣的結(jié)果。與配置文件同目錄的其他文件postgresql.conf所在目錄就是集群的數(shù)據(jù)目錄同一目錄下還躺著其他幾個常用的配置文件pg_hba.conf—— 客戶端認證配置文件host-based authentication控制哪些主機/用戶/數(shù)據(jù)庫可以用什么方式登錄是排查認證失敗問題的第一現(xiàn)場pg_ident.conf—— 用戶名映射配置文件postgresql.auto.conf—— 由ALTER SYSTEM語句自動生成的覆蓋配置優(yōu)先級高于postgresql.conf中對應(yīng)的項。拿到config_file的絕對路徑后把文件名換成pg_hba.conf即可直接編輯認證配置。由于這些文件都在數(shù)據(jù)目錄下你也可以先用下面的方法拿到數(shù)據(jù)目錄本身再列出目錄內(nèi)容確認全部文件。關(guān)聯(lián)技巧定位數(shù)據(jù)目錄如果說SHOW config_file;定位的是主配置文件那么SHOW data_directory;定位的則是整個數(shù)據(jù)目錄詳見 find-the-data-directory.md show data_directory;它返回數(shù)據(jù)目錄的絕對路徑也就是postgresql.conf、pg_hba.conf、PG_VERSION、base/、pg_wal/等文件和子目錄的所在位置。兩個命令配合使用可以快速弄清一個陌生環(huán)境里配置在哪、數(shù)據(jù)在哪。實戰(zhàn)修改配置后如何生效找到配置文件只是第一步下面以倉庫中 enable-logging-of-database-activity.md 記錄的日志開啟流程為例展示完整的定位 → 編輯 → 重啟鏈路。1. 找到配置文件按上文方法執(zhí)行SHOW config_file;拿到路徑然后打開該文件搜索目標配置項。2. 編輯配置項例如要開啟日志收集找到logging_collector這一行取消注釋并把off改為on# This is used when logging to stderr: logging_collector on # Enable capturing of stderr and csvlog # into log files. Required to be on for # csvlogs. # (change requires restart)注意注釋里的(change requires restart)——logging_collector這類參數(shù)需要重啟才能生效而另一些參數(shù)如log_statement只需reload發(fā)送SIGHUP或執(zhí)行SELECT pg_reload_conf();即可。編輯配置文件前應(yīng)確認目標參數(shù)屬于哪一類避免重啟線上數(shù)據(jù)庫。3. 重啟服務(wù)器對于 asdf 安裝的集群可以用pg_ctl指定數(shù)據(jù)目錄重啟$ ~/.asdf/installs/postgres/12.3/bin/pg_ctl -D ~/.asdf/installs/postgres/12.3/data restart waiting for server to shut down.... done server stopped waiting for server to start... done server started重啟前可用 pg_isready 檢查服務(wù)器當(dāng)前狀態(tài)確認它是否在接受連接。4. 結(jié)合會話級設(shè)置使用日志類參數(shù)除了寫在postgresql.conf里作為服務(wù)器級設(shè)置也可以在單個會話內(nèi)臨時覆蓋。例如只想觀察當(dāng)前會話的所有 SQL可以在psql里執(zhí)行見 include-all-queries-in-the-log-file.md set log_statement all;然后 tail 日志文件即可實時查看查詢。會話級SET不需要改配置文件、不需要重啟非常適合臨時排查。類似地configure-the-timezone.md 展示了用SET timezoneAmerica/New_York;在會話內(nèi)覆蓋時區(qū)參數(shù)的用法。跨安裝方式的路徑差異小結(jié)安裝/初始化方式postgresql.conf 典型位置來自倉庫實際示例Postgres.app 創(chuàng)建的集群/Users/jbranchaud/Library/Application Support/Postgres/var-9.5/postgresql.confasdf 安裝并在$HOME/.asdf/.../data初始化/Users/jbranchaud/.asdf/installs/postgres/12.3/data/postgresql.confPostgres.app 項目內(nèi)集群自定義數(shù)據(jù)目錄項目根目錄下自定義目錄如/Users/me/dev/my-app/postgres-data第三種情況的初始化方式見 set-up-a-project-local-cluster-with-postgres-app.md在 Postgres.app 里指定一個尚未存在的postgres-data目錄并執(zhí)行 Initialize應(yīng)用會在該目錄下生成完整的數(shù)據(jù)目錄結(jié)構(gòu)其中就包含postgresql.conf。無論路徑如何變化SHOW config_file;給出的永遠是當(dāng)前連接實際生效的那份配置文件路徑這是最可靠的做法。小結(jié)只要能連上數(shù)據(jù)庫執(zhí)行SHOW config_file;就能拿到主配置文件postgresql.conf的絕對路徑同一目錄下還有pg_hba.conf認證、pg_ident.conf用戶映射等配套配置文件SHOW data_directory;可進一步定位整個數(shù)據(jù)目錄修改配置文件后注意區(qū)分需要restart的參數(shù)如logging_collector與只需reload的參數(shù)會話級需求優(yōu)先用SET臨時覆蓋避免動服務(wù)器配置該方法適用于任何 PostgreSQL 安裝方式包括 find-the-location-of-postgres-config-files.md 中記錄的 Postgres.app 與 asdf 兩種典型環(huán)境。本技巧來源于本倉庫 PostgreSQL 分類下的 TIL 筆記 Find The Location Of Postgres Config Files原始思路由 Dillon Hafer 提供。贊分享文檔教程知識庫【免費下載鏈接】til:memo: Today I Learned項目地址https://gitcode.com/gh_mirrors/ti/til點擊查看免費下載相關(guān)推薦Pachyderm Helm Chart 的 PostgreSQL 配置文件注入指南postgresql.conf 與 pg_hba.conf 的 ConfigMap 機制Pachyderm Helm Chart 的 PostgreSQL 配置文件注入指南postgresql.conf 與 pg_hba.conf 的 Confi數(shù)據(jù)工程后端云原生任務(wù)調(diào)度微服務(wù)在 PostgreSQL 中定位數(shù)據(jù)目錄SHOW data_directory 與多種查找路徑詳解在 PostgreSQL 中定位數(shù)據(jù)目錄 SHOW data_directory 與多種查找路徑詳解 PostgreSQL 把所有數(shù)據(jù)庫集群的數(shù)據(jù)統(tǒng)一存放在一文檔教程知識庫如何用BorutaPy找到所有真正相關(guān)的特征從特征海洋到精準導(dǎo)航如何用BorutaPy找到所有真正相關(guān)的特征從特征海洋到精準導(dǎo)航 你是否曾在海量特征中迷失方向不確定哪些特征真正對預(yù)測有用boruta_py就是你的特征選機器學(xué)習(xí)特征工程創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考