
PostgreSQL是一個功能強大的開源對象關系數據庫管理系統(ORDBMS),在開源數據庫使用上與MySQL各領風騷。但也有不少人質疑postgresql的未來,正所謂,贊揚或批判一種數據庫都必須先了解它,然后才可有話語權。為了更多的了解postgresql,我們就先部署一套實例作為了解它的基礎。
一 、 環境介紹
操作系統: centos
CPU: 4核
內存: 16G
postgresql: postgresql-11.4
二、 編譯安裝
1、安裝依賴包
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake
2、下載并解壓
wget https://ftp.postgresql.org/pub/source/v11.4/postgresql-11.4.tar.gz
tar -zxvf postgresql-11.4.tar.gz
3、創建用戶
# 查看用戶是否存在
id postgres
# 添加用戶組及用戶
groupadd postgres
useradd -g postgres postgres
# 再次查看可以查看對應的uid gid
id postgres

4、創建 postgresql數據目錄并授權
選擇對應的磁盤空間較大的盤創建數據目錄
mkdir -p /data/postgresql/data
chown -R postgres:postgres data
5、編譯postgresql源碼
cd /data/postgresql-11.4
./configure --prefix=/data/postgresql

PostgreSQL配置腳本選項

6、開始安裝
編譯后結果如下:

至此,postgresql安裝完成。
7、配置環境變量
# 切換到postgres用戶
su - postgres
# 編輯postgres用戶環境變量
vim .bash_profile
# 添加如下內容
export PGHOME=/data/postgresql
export PGDATA=/data/postgresql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin
# 使環境變量生效
source .bash_profile

8、初始化數據庫
在postgres用戶下運行initdb命令即可初始化數據庫。

此時,postgresql數據目錄下已經生成對應的文件。
cd /data/postgresql/data
ll -h

9、配置文件修改
修改數據目錄下的postgresql.conf 及 pg_hba.conf文件。
postgresql.conf 配置PostgreSQL數據庫服務器的相應的參數。 pg_hba.conf 配置對數據庫的訪問權限。
初期測試使用時,可以簡單修改部分配置,其他值使用默認值。
(1)修改 postgresql.conf
vim postgresql.conf
修改 listen_addresses 為 * ,代表所有主機皆可訪問
listen_addresses = '*'

內存配置等參數后續將介紹其含義及配置建議。
(2)修改 pg_hba.conf
添加如下記錄:

10、配置服務
如需配置為服務啟動方式,可以按照如下步驟操作。
# 進入postgresql源碼目錄
cd /data/postgresql-11.4/contrib/start-scripts
# 此目錄下有各系統的啟動目錄,需先將其添加執行權限
chmod +x linux
# 將啟動服務拷貝至啟動服務下
cp linux /etc/init.d/postgresql

因啟動服務命令里配置上了默認安裝路徑目錄及數據目錄,如與默認路徑不一致,需手動調整。

vim /etc/init.d/postgresql修改 prefix及PGDATA

11、啟動服務
通過服務啟動postgresql:
/etc/init.d/postgresql start

通過服務關閉postgresql:
/etc/init.d/postgresql stop
通過pg_ctl 啟動:
# 將postgresql安裝路徑bin目錄下的命令賦權給postgres用戶
cd /data/postgresql/bin
chown -R postgres:postgres .
# 切換至postgres用戶啟動服務
su - postgres
# 啟動服務
pg_ctl -D /data/postgresql/data/ -l logfile start

至此,便可以通過客戶端連接數據庫進行操作了。
三、簡單操作
1、創建數據庫
2、連接數據庫
3、創建表、索引、并插入數據
gjc=# create table test1(id int not null primary key,name varchar(20),age int );
CREATE TABLE
gjc=# create index idx_test1_name on test1(name);
CREATE INDEX
gjc=# insert into test1 values(1,'gjc',28);
INSERT 0 1
gjc=# select * from test1
id | name | age
----+------+-----
1 | gjc | 28
(1 row)
其他的操作,大家可以參考官方文檔或中文社區進行學習實踐。