1档冬、首先需要超級管理員登陸服務(wù)器,新建OS用戶 postgresuser用戶專門管理postgres,新建用戶之前新建postgresuser用戶組嵌纲,然后將postgresuser加入用戶組:
groupadd postgresuser;
useradd -u 544 ?-d /home/postgresuser ?-g postgresuser -m postgresuser;
修改postgresuser 用戶密碼:
passwd postgresuser;
2、切換到postgresuser用戶的/home目錄
su postgresuser
cd ~
3、下載postgresql 源碼(各個版本的源碼地址:https://www.postgresql.org/ftp/source/):
wget https://ftp.postgresql.org/pub/source/v9.5.0/postgresql-9.5.0.tar.gz;
解壓: tar -zxvf postgresql-9.5.0.tar.gz
新建倆個目錄一個用于安裝postgresql,另一個用于初始化pg集群數(shù)據(jù)
mkdir ?-p ./data/app/postgres9.5;(存放pg安裝程序的目錄)
mkdir -p ./data/pgdata;(存放數(shù)據(jù)庫數(shù)據(jù)目錄)
進入解壓目錄: cd postgresql-9.5.0
配置檢測系統(tǒng)相關(guān)環(huán)境是否符合:./configure --prefix=/home/postgresuser/data/app/postgres9.5
會出項上面這個依賴錯誤准谚,輸出結(jié)果告訴我們readline不存在,這其中的原因是readline-devel缺失去扣,他包含了那些使用readline庫的程序(如psql)所需要的各個文件柱衔,可以使用以下命令安裝(切換到root用戶):
yum install readline-devel.x86_64
重新執(zhí)行環(huán)境監(jiān)測命令./configure --prefix=/home/postgresuser/data/app/postgres9.5又會出現(xiàn)下面這個錯誤
雖然zlib本身已經(jīng)安裝,任然需要安裝devel,在這種情況下愉棱,需要安裝的是-devel:
yum install zlib-devel.x86_64;
再次進行環(huán)境監(jiān)測./configure --prefix=/home/postgresuser/data/app/postgres9.5 這次將會順利完成唆铐;
變異安裝:make && make install,最后顯示PostgreSQL installation complete的話那么postgresql就順利安裝完畢
4、將PostgreSQL可執(zhí)行文件目錄配置到環(huán)境變量PATH中奔滑;
vim ~/.bashrc
PATH=$PATH:$HOME/bin:/home/postgresuser/data/app/postgres9.5/bin
export PATH
5艾岂、設(shè)置PGDATA環(huán)境變量,initdb命令默認初始化數(shù)據(jù)的目錄
vim ~/.bashrc
PGDATA=/home/postgresuser/data/pgdata
export PGDATA
source ~/.bashrc
6朋其、初始化數(shù)據(jù)目錄 initdb? -D $PGDATA --pwprompt
--pwprompt這一參數(shù)用于初始化數(shù)據(jù)目錄的時候順便設(shè)置一下數(shù)據(jù)庫超級管理員的密碼王浴;
正如上面初始化數(shù)據(jù)目錄完畢最后提示的,我們可以使用命令:pg_ctl -D /home/postgresuser/data/pgdata -l logfile start 啟動PostgreSQL數(shù)據(jù)庫了梅猿;
7氓辣、pg_ctl是一個實用程序,用于啟動袱蚓、停止钞啸、檢查狀態(tài)架谎、或者重啟數(shù)據(jù)庫集群婿失。
8、快速了解各個數(shù)據(jù)目錄的作用:
運行 find ./ maxdepth 1 -type d 查看數(shù)據(jù)目錄下的目錄有哪些:
a归敬、base:該目錄包含數(shù)據(jù)庫用戶所創(chuàng)建的各個數(shù)據(jù)庫响蓉,同時包含了數(shù)據(jù)庫postgres硕勿、template0、template1的pg_default tablespace枫甲,我們可以進入/home/postgresuser/postgresql-9.5.0/contrib/oid2name目錄安裝oid2name 工具(id轉(zhuǎn)換成name的命令行工具源武,不屬于extension):
make && make install??
,oid2name將會安裝到數(shù)據(jù)庫安裝目錄的bin目錄扼褪,然后在base目錄下執(zhí)行命令:oid2name可以查看到以下信息:
可以看到oid指向了base目錄下的目錄名字,我們可以創(chuàng)建刪除數(shù)據(jù)庫粱栖,然后執(zhí)行該命令看看變化:
補充:OID表示對象標(biāo)識符话浇。他們作為各種系統(tǒng)表的主鍵,在PG內(nèi)部進行使用闹究,屬具目録中創(chuàng)建的對象(表幔崖、數(shù)據(jù)庫等)將借助OID進行關(guān)聯(lián),oid2name根據(jù)作為contrib模塊渣淤,可以幫助我們檢查數(shù)據(jù)庫赏寇、表以及相關(guān)文件節(jié)點。
b价认、global:這個目錄包含集群范圍額各個表嗅定,這里有很多表以及相關(guān)視圖,來跟蹤整個集群用踩,即數(shù)據(jù)庫的各個角色渠退、系統(tǒng)類目數(shù)據(jù)等。
c脐彩、pg_clog:這個目錄包含事務(wù)提交狀態(tài)數(shù)據(jù)碎乃。
d、pg_multixact:這個目錄包含多事務(wù)狀態(tài)數(shù)據(jù)(等待鎖定的并發(fā)事務(wù))
e惠奸、pg_notify:這個目錄包含LISTEN/NOTIFY 狀態(tài)數(shù)據(jù)梅誓。
f、pg_serial:這個目錄包含了已提交的序列化事務(wù)的相關(guān)信息晨川。
g证九、pg_snapshots:這個目錄包含導(dǎo)出的快照。
h共虑、pg_stat_tmp:這個目錄包含統(tǒng)計子系統(tǒng)的臨時文件愧怜。
i、pg_subtrans:這個目錄包含子事務(wù)狀態(tài)數(shù)據(jù)妈拌。
j拥坛、pg_tblspc:這個目錄包含了表空間的符號鏈接。
k尘分、pg_twophase:這個目錄包含預(yù)備事務(wù)的狀態(tài)文件猜惋。
l、pg_xlog:這個目錄包含了預(yù)寫日志文件(Write Ahead Log,WAL),講到流復(fù)制的時候?qū)岬竭@個文件培愁。
pg_logical著摔、pg_dynshmem、pg_stat定续、pg_replslot谍咆、pg_commit_ts等還未搞清楚禾锤,待定。
9摹察、幾個常用的命令介紹:
a恩掷、查看postgresuser用戶進程:ps -fUpostgresuser
b、以上進程號為29724的進程下有許多子進程供嚎,該父進程的PID可以在$PGDATA 中的postmaster.pid的第一行查看到黄娘,也可以通過命令 pg_ctl status查看到: