PostgreSQL 12 源碼安裝
Table of Contents
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