Linux下Postgres數據庫安裝、配置與日常服務管理

1. 數據庫安裝與配置步驟

  1. 安裝環境準備

    • 操作系統: Oracle Linux Server 6.5
    • IP 地址: 192.168.6.177
    • 版本信息: MySQL Community Server 5.7.18
    • 安裝方式: RPM包
  2. 下載安裝包

    • 訪問PostgreSQL網站

      PostgreSQL網站
    • 根據操作系統類型和版本下載相應的安裝包

    需要下載以下的安裝包:

    • postgresql96-9.6.3-4PGDG.rhel6.x86_64.rpm
    • postgresql96-contrib-9.6.3-4PGDG.rhel6.x86_64.rpm
    • postgresql96-libs-9.6.3-4PGDG.rhel6.x86_64.rpm
    • postgresql96-server-9.6.3-4PGDG.rhel6.x86_64.rpm
  3. 安裝PostgreSQL

    • 將Postgres安裝包放置在同一個文件夾中, 執行安裝命令
    [root@DB-Server-Node1 ~]# rpm -ivh postgresql96-*.rpm
    Preparing...                ########################################### [100%]
    1:postgresql96-libs      ########################################### [ 25%]
    2:postgresql96           ########################################### [ 50%]
    3:postgresql96-contrib   ########################################### [ 75%]
    4:postgresql96-server    ########################################### [100%]
    
    • 安裝文件夾說明

      通過RPM包安裝, Postgres安裝程序會在/var和/usr下創建文件夾。

      /var/lib/pgsql: 用于存放Postgres數據庫默認的數據文件夾
      /usr/pgsql-${version}: 用于存放Postgres數據庫的命令、依賴庫及文檔目錄等信息

    • 將Postgres命令加入系統路徑

      修改/etc/profile文件, 將Postgres命令加入系統路徑,并測試

      [root@DB-Server-Node1 ~]# vi /etc/profile
      
      ... ...
      # 在文件最后加入以下語句
      export PATH=$PATH:/usr/pgsql-9.6/bin
      
      # 保存退出后, 執行source命令, 讓配置即時生效
      [root@DB-Server-Node1 ~]#  source /etc/profile
      
      # 測試Postgres命令
      [root@DB-Server-Node1 share]# postgres --version
      postgres (PostgreSQL) 9.6.3
      
  4. 初始化數據庫

    • 使用Postgres數據庫默認的數據文件存儲目錄

      • CentOS 6/Redhat 6/Oracle Linux 6
      [root@DB-Server-Node1 bin]#  service postgresql-9.6 initdb
      或者
      [root@DB-Server-Node1 bin]# /etc/init.d/postgresql-9.6 initdb
      
      • CentOS 7/Redhat 7/Oracle Linux 7
    [root@DB-Server-Node1 bin]# /usr/pgsql-9.6/bin/postgresql96-setup initdb
    
    • 使用自定義的數據存儲目錄

      # 創建數據存儲目錄
      mkdir -p /data/postgres
      
      # 修改目錄權限 
      chown -R postgres:postgres /data/postgres
      
      # 初始化數據庫
      su -l postgres -c "/usr/pgsql-9.6/bin/initdb --no-locale -U postgres -E utf8 -D /data/postgres -W"
      
    • 添加Postgres環境變量(可選)

      [root@DB-Server-Node1 ~]# vi /etc/profile
       ... ... 
      # 添加Postgres環境變量  
      PGDATA=/data/postgres
      PGHOST=127.0.0.1
      PGDATABASE=postgres
      PGUSER=postgres
      PGPORT=5432
      export PGDATA PGHOST PGDATABASE PGUSER PGPORT
      
    • 修改/etc/init.d/postgresql-9.6中的變量(使用自定義數據目錄)

      如果使用自定義數據存放目錄,而不是使用PostgreSQL默認數據目錄時, 需要修改啟動文件中的PGDATA變量,將PGDATA目錄指向自定義的數據目錄, 這樣在使用service posgresql-9.6 start命令時才能正確啟動。

      [root@DB-Server-Node1 ~]# vi /etc/init.d/postgres-9.6
      # 修改默認文件目錄到指定的數據目錄
      PGDATA=/data/postgres
      
      # 保存后退出
      :wq!
      
  5. 配置數據庫訪問

    • 修改postgres.conf文件

      主要配置參數詳解:

      • listen_addresses='localhost'
        Postgresql監聽的網卡ip,默認僅僅本地,可以配置多個,使用“,”分割。“*” 代表所有的網卡ip
      • port=5432  
        Postgres服務端口
      • max_connections=100  
        最大服務器連接數
      • superuser_reserved_connections=3 
        為管理員保留的專用連接數,普通用戶無法使用這些連接,不能大于max_connections
      • authentication_timeout=60s  
        登錄驗證超時時間設置
      • ssl=false
        是否使用SSL進行連接
      • password_encryption=true  
        當使用create user、alter user管理用戶時,如果沒有顯示進行加密與否的限定,postgresql服務器是否自動進行密碼加密
      • shared_buffers=32m 
        共享緩存,非常重要的性能參數,其最小值為(128k,16k*max_connections)
      • max_prepared_transactions=5
        最大并行prepared 事務,如果為0,則禁止使用prepared事務,最大值與max_connections相同
      • temp_buffers=8m
        每個會話可以使用的臨時(表)緩存大小
      • work_mem=1m
        指定內部排序、連接、group等等時,postgresql可以使用的內存大小,超過該值,將使用磁盤臨時文件; 實際使用的內存和該類操作同時執行的數目相乘
      • maintenance_work_men=16m  
        維護語句vacuum、create index等等可以使用的內存大小; 實際使用的內存和該類操作同時執行的數目相乘
      • fsync=on  
        (物理數據)日志必須同步寫入磁盤 
        可能導致嚴重的性能損失,卻能確保最高的日志數據安全。
      • synchronous_commit=on
        (邏輯事務數據)日志必須同步寫入磁盤,如果設為on,會立即調用fsync,相當于設置了fsync=on
      • full_page_writes=on
        寫整頁
      • wal_buffers=64K
        WAL日志緩存大小
      • wal_writer_delay=200ms  
        將wal日志從wal_buffer中寫入磁盤的時間周期
      • commit_delay=0ms  
        事務日志commit后,寫入磁盤的延時。這個設置只有在commit_sibings(并行的多個排隊事務)在延時內存在是才有效
      • commit_siblings=5
        并行事務數
    • 修改pg_hba.conf

      [root@DB-Server-Node1 ~]# vi pg_hba.conf
      ... ...
      # "local" is for Unix domain socket connections only
      local   all             all                                     trust
      # IPv4 local connections:
      host    all             all             127.0.0.1/32            trust
      host    all             all             192.168.6.0/24          trust
      # IPv6 local connections:
      host    all             all             ::1/128                 trust
      

      配置說明:

      • 格式:TYPE DATABASE USER ADDRESS METHOD
      • 參數:
        1. TYPE: 值為local和host, Local值表示為主機Socket連接, host代表允許的主機地址連接
        2. DATABASE: 允許訪問的數據庫名, all代表允許全部數據庫
        3. USER: 表示允許哪個用戶訪問數據庫, all代表所有用戶都可以訪問
        4. ADDRESS: 表示允許連接的主機信息,可以使用主機IP地址, 也可以使用網段來表示,如192.168.1.0/24表示192.168.1.0網段可以連接
        5. METHOD: 連接方法, 通常使用的值為md5和trust
  6. 啟動數據庫并測試數據庫

    • 啟動Postgres數據庫

      [root@DB-Server-Node1 init.d]# service postgresql-9.6 start
      Starting postgresql-9.6 service:                               [  OK  ]
      
    • 測試數據庫

      使用psql命令進行測試。

      psql命令詳解:

      • -h host, 指定連接的Postgres數據庫IP地址
      • -U username: 指定連接數據庫的用戶名
      • -d database: 指定連接的數據庫名
      • -p port: 指定數據庫連接的服務端口
      • -w: 表示不提示用戶輸入密碼
      • -W : 表示驗證數據庫用戶密碼
      • -l : 表示列出Postgres可用的數據庫信息

      示例如下:

      [root@DB-Server-Node1 9.6]# psql -h localhost -U postgres -d postgres -W
      Password for user postgres: 
      psql (9.6.3)
      Type "help" for help.
      
      postgres=# 
      
    • 修改用戶密碼

      使用默認腳本service postgresql initdb/usr/pgsql-9.6/bin/postgresql96-setup initdb初始化數據庫時,需要修改用戶的密碼。在修改Postgres用戶密碼時,需要確保以下條件:

      配置"pg_hba.conf"時需要確定服務器本地址的驗證方法為trust, 即:
      host all all 127.0.0.1/32 trust

      如果為peer|indent|md5方法時,需要將其修改為trust, 否則登錄時會提醒輸入用戶密碼。切換系統用戶為postgres, 通過psql -h localhost -U postgres -d postgres登錄Postgres數據庫,進入數據后,使用alter user postgres with password '設置的新密碼'來為用戶修改默認密碼。

      示例如下:

      [root@DB-Server-Node1 9.6]#  su - postgres
      -bash-4.2$ psql -h localhost -U postgres -d postgres -w
      Password for user postgres: 
      psql (9.6.3)
      Type "help" for help.
      
      postgres=#  alter user postgres with password '123456';
      ALTER ROLE
      postgres=# 
      
    • 設置服務開機自啟動

      chkconfig postgresql-9.6 on
      

2. Postgres日常服務管理

  • 啟動數據庫:pg_ctl start -D /data/postgres

  • 重啟數據庫: pg_ctl restart -D /data/postgres

  • 停止數據庫:pg_ctl stop -D /data/postgres

  • 強制重啟:pg_ctl restart -D /data/postgres -m f

  • 強制停止:pg_ctl stop -D /data/postgres -m f

  • 加載配置:pg_ctl reload -D /data/postgres

  • 顯示服務狀態:pg_ctl status -D /data/postgres

  • 連接數據庫: psql -h 127.0.0.1 -U postgres -p 5432 -d postgres -W

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374

推薦閱讀更多精彩內容