PostgreSQL 目錄結構

Ryan_Bai發表於2020-08-12
  • share 目錄存放著PostgreSQL的文件、 man、 示例檔案以及一些擴充套件

  • include 目錄是PostgreSQL的C、 C++的標頭檔案

  • bin 目錄就是PostgreSQL的應用程式了。

    封裝 SQL 命令的客戶端程式 

    • clusterdb:clusterdb 是 SQL CLUSTER 命令的一個封裝。 PostgreSQL 是堆表儲存的, clusterdb 通過索引對資料庫中基於堆表的物理檔案重新排序,它在一定場景下可以節省磁碟訪問,加快查詢速度。
      舉例如下:

      [postgres@pghost1 ~]$ /opt/pgsql/bin/clusterdb -h pghost1 -p 1921 -d my
    • reindexdb:reindexdb 是 SQL REINDEX 命令的一個封裝。在索引物理檔案發生損壞或索引膨脹等情況發生時,可以使用reindexdb命令對指定的表或者資料庫重建索引並且刪除舊的索引。
      舉例如下:

      [postgres@pghost1 ~]$ /opt/pgsql/bin/reindexdb -e -h pghost1 -p 1921 -
    • vacuumdb:vacuumdb 是 PostgreSQL 資料庫獨有的 VACUUM、VACUUM FREEZE 和 VACUUM FULL, VACUUM ANALYZE 這幾個SQL命令的封裝。 VACUUM 系列命令的主要職責是對資料的物理檔案等的垃圾回收,是 PostgreSQL 中非常重要的一系列命令。
      舉例如下:

      [postgres@pghost1 ~]$ /opt/pgsql/bin/vacuumdb -h pghost1 -p 1921 mydb
    • vacuumlo:vacuumlo用來清理資料庫中未引用的大物件。
      舉例如下:

      [postgres@pghost1 ~]$ /opt/pgsql/bin/vacuumlo -h pghost1 -p 1921 mydb
    • createdb 和 dropdb:它們分別是 SQL 命令 CREATE DATABAS 和 DROP DATABASE 的封裝。

      例如在名為pghost1的主機, 埠為1921的例項中建立一個名為newdb的資料庫, 並且加上註釋, 命令如下所示:

      [postgres@pghost1 ~]$ /opt/pgsql/bin/createdb -h pghost1 -p 1921 newdb "

      刪除名為newdb的資料庫的命令如下所示:

      [postgres@pghost1 ~]$ /opt/pgsql/bin/dropdb -h pghost1 -p 1921 newdb
    • createuser 和 dropuser:它們分別是 SQL 命令 CREATE USER 和 DROP USER 的封裝。 可以通過幫助檢視它們的引數說明。

      例如建立一個名為 newuser 的非超級使用者, newuser繼承自 pg_monitor 系統角色, 只能有1個連線, 沒有建立資料庫的許可權, 沒有建立使用者的許可權, 並且立即給它設定密碼, 命令如下所示:

      [postgres@pghost1 ~]$ /opt/pgsql/bin/createuser -h pghost1 -p 1921 -c 1
      Enter password for new role:
      Enter it again:
      CREATE ROLE newuser PASSWORD 'md518b2c3ec6fb3de0e33f5612ed3998fa4' NOSUP

      是否超級使用者、是否允許建立資料庫、是否允許建立使用者這三個許可權可以使用--interactive引數提供互動介面, 使用更簡單, 舉例如下:

      [postgres@pghost1 ~]$ /opt/pgsql/bin/createuser -h pghost1 -p 1921 -c 1
          Enter password for new role:
          Enter it again:
          Shall the new role be a superuser? (y/n) n
          Shall the new role be allowed to create databases? (y/n) n
          Shall the new role be allowed to create more new roles? (y/n) n
          CREATE ROLE newuser PASSWORD 'md545c93e6e78f597d46a41cfb08dea5ae3' NOSUP

      刪除名為newuser的使用者的命令如下所示:

      [postgres@pghost1 ~]$ /opt/pgsql/bin/dropuser -h pghost1 -p 192
    備份與恢復的客戶端程式
    • pg_basebackup:取得一個正在執行中的PostgreSQL例項的基礎備份。

    • pg_dump和pg_dumpall:都是以資料庫轉儲方式進行備份的工具。

    • pg_restore:用來從pg_dump命令建立的非文字格式的備份中恢復資料。

    ecpg:是用於 C 程式的 PostgreSQL 嵌入式 SQL 前處理器。 它將 SQL 呼叫替換為特殊函式呼叫, 把帶有嵌入式 SQL 語句的 C 程式轉換為普通 C 程式碼。 輸出檔案可以被任何C編譯器工具處理。
    • oid2name:解析一個 PostgreSQL 資料目錄中的 OID 和檔案結點。

    • pgbench是執行基準測試的工具,平常我們可以用它模擬簡單的壓力測試。

    • pg_config:獲取當前安裝的 PostgreSQL 應用程式的配置引數。

    • pg_isready:工具用來檢測資料庫伺服器是否已經允許接受連線。

    • pg_receivexlog:可以從一個執行中的例項獲取事務日誌的流。

    • pg_recvlogical:控制邏輯解碼複製槽以及來自這種複製槽的流資料。

    • psql:是連線 PostgreSQL 資料庫的客戶端命令列工具, 是使用頻率非常高的工具, 在客戶端工具一章會專門講解它的使用。

      • -h 引數指定需要連線的主機

      • -p 引數指定資料庫例項的埠

      • -d 引數指定連線哪一個資料庫,預設的是和連線所使用的使用者的使用者名稱同名的資料庫

    伺服器程式
    • initdb:用來建立新的資料庫目錄。
    • pg_archivecleanup:是清理PostgreSQL WAL歸檔檔案的工具。

    • pg_controldata:顯示資料庫伺服器的控制資訊, 例如目錄版本、 預寫日誌和檢查點的資訊。

    • pg_ctl:是初始化、 啟動、 停止、 控制資料庫伺服器的工具。

    • pg_resetwal:可以清除預寫日誌並且有選擇地重置儲存在 pg_control 檔案中的一些控制資訊。 當伺服器由於控制檔案損壞,pg_resetwal 可以作為最後的手段。

    • pg_rewind:是在master、 slave角色發生切換時,將原 master 通過同步模式恢復, 避免重做基礎備份的工具。

    • pg_test_fsync:可以通過一個快速的測試, 瞭解系統使用哪一種預寫日誌的同步方法(wal_sync_method) 最快, 還可以在發生I/O問題時提供診斷資訊。

    • pg_test_timing:是一種度量系統計時開銷以及確認系統時間絕不會回退的工具。

    • pg_upgrade:是 PostgreSQL 的升級工具

    • pg_waldump:用來將預寫日誌解析為可讀的格式。

    • postgres:是 PostgreSQL 的伺服器程式。

    • postmaster:可以從bin目錄中看到, 是指向 postgres 伺服器程式的一個軟連結

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2711237/,如需轉載,請註明出處,否則將追究法律責任。

相關文章