CentOS7 源碼安裝 PostgreSQL 12

 PostgreSQL 12 源碼安裝

1 下載

官網提供了源碼和預安裝的版本。 源碼須要編譯安裝,解決依賴包等問題,而預安裝的版本要簡單不少。只需下載解壓, 初始化數據庫便可。css

本例以源碼安裝爲例:請至官網 下載源碼。html

本例中安裝的是PG12. 在 https://www.postgresql.org/ftp/source/v12.0/ 中選擇postgresql-12.0.tar.bz2java

請根據須要先擇本身須要的版本。python

預安裝版本,請至官網下載。linux

2 準備環境

此步驟以root用戶執行。 將postgresql的安裝包放到/opt 路徑。sql

# 建立組和用戶
groupadd postgre
useradd -g postgre -G postgre -d /home/postgresql postgre
passwd postgre
# 安裝依賴包
yum install -y bzip2 readline-devel zlib-devel
# 將安裝包放在/opt 路徑中並解壓
cd /opt/
bunzip2 postgresql-12.0.tar.bz2
tar -xvf ./postgresql-12.0.tar

3 編譯安裝

此步驟以postgre 用戶操做:shell

cd /opt/postgresql-12.0
./configure --prefix=/home/postgresql/dbhome
make && make install

安裝後,可執行文件,庫文件等都會安裝在/home/postgresql/dbhome 中。數據庫

[postgre@boss20 dbhome]$ ls /home/postgresql/dbhome
bin  include  lib  share

4 設置環境變量

將如下兩行添加至postgre 用戶的環境變量文件 .bash_profile 並生效。bootstrap

export LD_LBRARY_PATH=$HOME/dbhome/lib:$LD_LIBRARY_PATH
export PATH=$HOME/dbhome/bin:$PATH

環境變量文件生效方法:sass

. .bash_profile
或者
source .bash_profile

5 初始化數據庫

此步驟以postgre用戶執行。

  • 建立數據存放路徑

    mkdir $HOME/data
    

    postgresql 數據庫的配置文件,數據文件等都會存放在這個路徑下。

  • 初始化數據庫

    initdb --locale=C -E UNICODE -D $HOME/data/
    

    示例以下:

      The files belonging to this database system will be owned by user "postgre".
    This user must also own the server process.
    
    The database cluster will be initialized with locale "C".
    The default text search configuration will be set to "english".
    
    Data page checksums are disabled.
    
    fixing permissions on existing directory /home/postgresql/data ... ok
    creating subdirectories ... ok
    selecting dynamic shared memory implementation ... posix
    selecting default max_connections ... 100
    selecting default shared_buffers ... 128MB
    selecting default time zone ... America/New_York
    creating configuration files ... ok
    running bootstrap script ... ok
    performing post-bootstrap initialization ... ok
    syncing data to disk ... ok
    
    initdb: warning: enabling "trust" authentication for local connections
    You can change this by editing pg_hba.conf or using the option -A, or
    --auth-local and --auth-host, the next time you run initdb.
    
    Success. You can now start the database server using:
    
        pg_ctl -D /home/postgresql/data/ -l logfile start
    

初始化完成後,在最後一行會提示咱們啓動數據庫的方法. 此時咱們來查看一下 $HOME/data路徑 的內容:

[postgre@boss20 data]$ ls
base    pg_commit_ts  pg_hba.conf    pg_logical    pg_notify    pg_serial     pg_stat      pg_subtrans  pg_twophase  pg_wal   postgresql.auto.conf
global  pg_dynshmem   pg_ident.conf  pg_multixact  pg_replslot  pg_snapshots  pg_stat_tmp  pg_tblspc    PG_VERSION   pg_xact  postgresql.conf

這些路徑分別有什麼用途,之後再瞭解。

6 配置參數文件

咱們主要是配置postgresql.conf 和 pg_hba.conf 這兩個。

  • postgresql.conf 針對實例的配置
  • pg_hba.conf 針對數據庫訪問的控制

6.1 postgresql.conf

找到 #port#listener_address 這兩個參數。這兩個參數是相鄰的:

#listen_addresses = 'localhost'               # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
#port = 5432                             # (change requires restart)
max_connections = 100                  # (change requires restart)

將兩行行首的 # 刪除,將 localhost 改成當前服務器的IP 。 默認的監聽端口是5432,能夠自行指定另一個端口號,*不搶建使用默認端口號* 。 順便再修改一下 max_connections 吧,最大的鏈接數, 100有點少,特別是業務系統。 能夠調整成1000,或者更高。

6.2 pg_hba.conf

將如下一行添加至文末。

host    all             all             10.10.100.0/24          trust

其意義是容許 10.10.100網段的IP 鏈接此服務器上的PG. 若是想容許全部IP 均可以鏈接此服務器 則能夠配置成以下:

host    all             all             0.0.0.0/0          trust

7 數據庫啓動與關閉

 

7.1 手動

咱們手動啓動與關閉數據庫是執行pg_ctl命令。在執行時,須要指定 數據路徑,格式以下:

pg_ctl -D <數據存放路徑> [ stop | start ]

示例以下:

[postgre@boss20 data]$ pg_ctl -D /home/postgresql/data/ -l logfile start
waiting for server to start.... done
server started
[postgre@boss20 data]$ pg_ctl -D $HOME/data stop
waiting for server to shut down.... done
server stopped

7.2 開機自動啓動

此步驟須要root用戶操做。 postgresql 的安裝包中提供了數據庫啓動與關閉的腳本,能夠幫助咱們簡化操做,也能夠 用做開機啓動的腳本和service/systemctl 控制服務的腳本。 腳本位於:

<path>/postgresql-12.0/contrib/start-scripts/
本示例中是:
/opt/postgresql-12.0/contrib/start-scripts/

設置開機啓動:

cp /opt/postgresql-12.0/contrib/start-scripts/linux /etc/init.d/postgresql
chkconfig --add postgresql
chmod 755 /etc/init.d/postgresql

調整配置,主要是腳本中三個變量的值:

prefix="/home/postgresql/dbhome"
PGDATA="/home/postgresql/data"
PGUSER=postgre
  • prefix 是軟件的安裝路徑
  • PGDATA 是數據存放路徑
  • PGUSER 是啓動postgresql服務的用戶

之後能夠開機啓動和經過service 命令控制啓動和關閉了:

[root@boss20 init.d]# service postgresql start
Starting PostgreSQL: ok
[root@boss20 init.d]# service postgresql stop
Stopping PostgreSQL: ok

Author: halberd.lee

Created: 2019-10-18 Fri 18:05

Validate

相關文章
相關標籤/搜索