PostgreSQL 12 源碼安裝
Table of Contents
1 下載
官網提供了源碼和預安裝的版本。 源碼需要編譯安裝,解決依賴包等問題,而預安裝的版本要簡單很多。只需下載解壓, 初始化數據庫即可。
本例以源碼安裝為例:請至官網 下載源碼。
本例中安裝的是PG12. 在 https://www.postgresql.org/ftp/source/v12.0/ 中選擇postgresql-12.0.tar.bz2
請根據需要先擇自己需要的版本。
預安裝版本,請至官網下載。
2 准備環境
此步驟以root用戶執行。 將postgresql的安裝包放到/opt 路徑。
# 創建組和用戶 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 用戶操作:
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 並生效。
export LD_LBRARY_PATH=$HOME/dbhome/lib:$LD_LIBRARY_PATH export PATH=$HOME/dbhome/bin:$PATH
環境變量文件生效方法:
. .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
Created: 2019-10-18 Fri 18:05