sql配置管理器服务是空的_PostgreSQL 12 安装和配置
點(diǎn)擊上方晟數(shù)學(xué)院可以訂閱哦!
PostgreSQL 12 安裝和配置
?1
PostgreSQL 介紹
PostgreSQL是一個(gè)由加利福尼亞大學(xué)計(jì)算機(jī)科學(xué)部門基于Postgres 4.2版本開發(fā)的面向?qū)ο蟮臄?shù)據(jù)庫管理系統(tǒng)。POSTGRES率先提出了許多概念,直到后來,這些概念才在一些商業(yè)數(shù)據(jù)庫系統(tǒng)中使用。PostgreSQL是一個(gè)后來開源的代碼始于伯克利源代碼。它支持大部分的SQL標(biāo)準(zhǔn)和提供了許多現(xiàn)代的特性。
·復(fù)雜查詢(complex queries)
·外鍵(foreign keys)
·觸發(fā)器(triggers)
·可更新視圖(updatable views)[物化視圖]
·事務(wù)完整性(transaction integrity)
·多版本并發(fā)控制(MVCC)
除此之外,用戶可以使用多種方式擴(kuò)展PostgreSQL,例如通過添加以下:
·數(shù)據(jù)類型(data types)
·函數(shù)(functions)
·操作符(operators)
·聚合函數(shù)(aggregate functions)
·索引方式(index methods)
·過程語言(procedural languages)
并且由于自由通行,PostgreSQL可以通過任何人無論是出于私有化,商業(yè)化,或者學(xué)術(shù)上的任何目的免費(fèi)地修改和發(fā)布。
?2
PostgreSQL 簡要發(fā)展史
現(xiàn)在被稱為PostgreSQL的對象關(guān)系數(shù)據(jù)庫管理系統(tǒng)派生于加利福尼亞大學(xué)伯克利分校所編寫發(fā)型的POSTGRES軟件包。PostgreSQL經(jīng)過二十多年的發(fā)展,現(xiàn)已成為任何地方可以使用的最先進(jìn)的開源數(shù)據(jù)庫。
2.1
伯克利 POSTGRES 項(xiàng)目
POSTGRE項(xiàng)目,由Michael Stonebraker教授主導(dǎo),DARPA,ARO和NSF和ESL等。POSTGRES開始于1986年。最初的系統(tǒng)概念在ston86中被提出,最初的數(shù)據(jù)模型的定義出現(xiàn)子ROWE87中。ston87a中描述了規(guī)則系統(tǒng)設(shè)計(jì)。ston87b中詳細(xì)描述了存儲(chǔ)管理的基本原理和架構(gòu)。
POSTGRES大致經(jīng)歷了幾個(gè)版本:
1988年在ACM-SIGMOD會(huì)議上展示的于1987年第一個(gè)投入運(yùn)行的"演示軟件"系統(tǒng)。ston90a描述的第一個(gè)版本(Version 1)于1986年6月發(fā)布給一些外部用戶。為回應(yīng)對ston89中描述的第一個(gè)規(guī)則系統(tǒng)批評(píng),在ston90b中重新設(shè)計(jì)了規(guī)則系統(tǒng)并于1990年6月發(fā)布了新規(guī)則系統(tǒng)的第二個(gè)版本(Version 2)。1991年發(fā)布的 Version 3為多個(gè)存儲(chǔ)管理增加了支持,改進(jìn)了查詢執(zhí)行器,并且重新寫了規(guī)則系統(tǒng)。往后發(fā)行的直到Postgres95之前的版本都注重于其可移植性和可靠性。
POSTGRES已經(jīng)被用于實(shí)施不同的研究和產(chǎn)品應(yīng)用。包括:金融數(shù)據(jù)分析系統(tǒng),噴氣引擎性能監(jiān)控包(jet engin performanc),和小行星追蹤數(shù)據(jù)庫,醫(yī)藥信息數(shù)據(jù)庫,和一些地理信息系統(tǒng)。POSTGRES也被一些大學(xué)用來作為教學(xué)的工具。最終,Illustra Information Technologies重構(gòu)了其代碼并使其商業(yè)化。至1992年底,POSTGRES成為了Sequoia 2000 科學(xué)計(jì)算項(xiàng)目的主要數(shù)據(jù)管理器。
在1993年,外部社區(qū)的用戶規(guī)模幾乎增加了一倍。原型代碼維護(hù)和支持越來越明顯的占用了本應(yīng)該進(jìn)行數(shù)據(jù)庫研究的大量時(shí)間。為了減輕這種負(fù)擔(dān),伯克利POSTGRES項(xiàng)目官方以版本 Version 4.2結(jié)束。
2.2
Postgres95
在1994年,Andrew Yu和Jolly Chen為 POSTGRES增加了SQL語言翻譯器。并起了一個(gè)新的名字,Postgres95正式開源。Postgre95代碼完全是 ANSI C,并且大小減少了25%。許多的內(nèi)部改變提高了其性能和維護(hù)性。Postgre95 發(fā)型的1.0.x在Wisconsin Benchmark跑分中比POSTGRES Version 4.2要快30-50。除了修復(fù)bug,以下是主要增強(qiáng)的內(nèi)容:
·查詢語言PostQUEL使用SQL代替,不支持子查詢,但是用戶自定義的函數(shù)可以在Postgres95中模仿子查詢。聚合函數(shù)重新實(shí)現(xiàn)。增加支持GROUP BY查詢語句。
·新的程序(psql)作為交互SQL查詢,該交互使用GNU的readline。很大程度上取代了舊的監(jiān)控程序。
·一個(gè)新的front-end庫,libpgtcl,基于tcl的客戶端被支持。模版shell,pgtclsh,提供了新的tcl 命令在Postgres95服務(wù)器上和tcl應(yīng)用程序交互。
·大對象接口被修改。倒置大對象是存儲(chǔ)大對象的僅有機(jī)制。(倒置文件系統(tǒng)被移除)
·實(shí)例級(jí)別的規(guī)則系統(tǒng)被移除。規(guī)則仍然可用由于重寫規(guī)則。
·介紹規(guī)則SQL特性的簡短手冊也伴隨源代碼在 Postgre95中發(fā)布。
·GNU make(替代了BSD make)被用來重構(gòu)。同時(shí),Postgres95也能夠被未打包的GCC編譯
2.3
PostgreSQL
到1996年,很明顯,Postgres95經(jīng)不起時(shí)間的考驗(yàn)。因此選擇了一個(gè)新的名字,PostgreSQL,同時(shí),版本號(hào)被置于6.0開始。至此,PostgreSQL正式作為開源數(shù)據(jù)庫正式被發(fā)行。
2.4
PostgreSQL的特點(diǎn)
PostgreSQL支持市面上流行的所有操作系統(tǒng),包括Unix,Linux和Windows,也支持如AIX,Solaris,MacOS等,這為PostgreSQL的推廣奠定了基礎(chǔ)。同時(shí),PostgreSQL以支持豐富的編程接口,如流行的Java, C,C++,Python等,也支持如Perl,Tcl,Ruby等編程接口,也支持windows下的ODBC編程接口,編程接口的豐富和通用特性為PostgreSQL提供了廣泛的開發(fā)者支持。
PostgreSQL同時(shí)支持豐富的數(shù)據(jù)類型,也支持豐富的服務(wù)器編程,如觸發(fā)器,存儲(chǔ)過程,服務(wù)器編程接口,后臺(tái)工作進(jìn)程,邏輯解碼,復(fù)制進(jìn)度追蹤等。
?3
配置和安裝
3.1
系統(tǒng)環(huán)境準(zhǔn)備
Redhat Enterprise 7.6
PostgresSQL 12
編譯環(huán)境要求:
make 版本3.8以上
GCC編譯器(兼容C99)
解壓命令tar
記錄命令行操作包readline(沒有該包無法使用方向鍵)
可選環(huán)境要求:
因?yàn)镻ostgreSQL支持服務(wù)器編程,因此可以根據(jù)需要安裝需要的模塊
如perl python tcl等
也可以啟用本地語言支持NLS,該功能需要安裝gettext
支持加密的客戶端連接(需要安裝openssl)使用服務(wù)支持驗(yàn)證(kerberos,openldap,pam)
準(zhǔn)備包(需提前配置好yum源)
準(zhǔn)備包(需提前配置好yum源)
yum install -y \
libicu-devel.x86_64 \
icu.x86_64 \
perl-ExtUtils-Embed.noarch \
readline.x86_64 \
readline-devel.x86_64 \
zlib-devel.x86_64 \
openssl-devel.x86_64 \
pam-devel.x86_64 \
libxml2-devel.x86_64 \
libxslt-devel.x86_64 \
systemd-devel.x86_64 \
python36.x86_64 \
python36-devel.x86_64 \
openldap.x86_64 \
openldap-devel.x86_64 \
docbook*
3.2
系統(tǒng)設(shè)置
1 關(guān)閉防火墻
[root@sdedu ~]# systemctl? stop firewalld
[root@sdedu ~]# systemctl? disable firewalld
#如果不關(guān)閉防火墻,則將postgres 端口服務(wù)添加至防火墻中
[root@sdedu ~]# firewall-cmd? --add-port=5432 ?--permanent
2 關(guān)閉Selinux
#會(huì)話及關(guān)閉
[root@sdedu ~]# setenforce 0
#永久關(guān)閉
[root@sdedu ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
3 配置資源限制
[root@sdedu ~]# cat /etc/security/limits.conf? | tail -6
postgres soft nofile 4096?
postgres hard nofile 65536
postgres soft nproc 2048
postgres hard nporc 16384
postgres soft stack 10240
postgres hard stack 65536
#nofile 最大能打開的文件描述符
#nproc 最大的進(jìn)程數(shù)
#stack 最大棧空間大小(單位為kb)
3.3
源碼編譯安裝
源碼安裝通常可以根據(jù)自己的要求完成定制化的安裝,如目錄規(guī)劃,內(nèi)存大小,日志大小,臟塊緩存大小及實(shí)現(xiàn)PostgreSQL支持的PL/tcl pl/perl pl/python等服務(wù)器過程化編程語言等等,以根據(jù)業(yè)務(wù)調(diào)整安裝配置參數(shù)來提高服務(wù)器性能和充分利用服務(wù)器資源。具體步驟如下:
1 上傳包至服務(wù)器/root/pack目錄
[root@sdedu pack]# ls postgresql-12.0.tar.bz2
postgresql-12.0.tar.bz2
2 創(chuàng)建postgres用戶并授權(quán)壓縮包權(quán)限
? ?由于postgresql的啟動(dòng)停止等命令只能使用postgres用戶操作,因此必須要?jiǎng)?chuàng)建postgres用戶
[root@sdedu ~]# useradd -u 2000 postgres
[root@sdedu ~]# chown postgres:postgres pack/postgresql-12.0.tar.bz2
#移動(dòng) postgresql-12.0.tar.bz2 包到 /home/postgres用戶下
[root@sdedu ~]# mv pack/postgresql-12.0.tar.bz2? /home/postgres/
3?切換到postgres用戶,并解壓源碼包
[root@sdedu ~]# su - postgres
[postgres@sdedu ~]$ tar -jxf postgresql-12.0.tar.bz2
4 進(jìn)入到解壓目錄
[postgres@sdedu ~]$ cd postgresql-12.0/
[postgres@sdedu postgresql-12.0]$ ll
5 創(chuàng)建PostgreSQL用戶的安裝目錄并授權(quán)
? ?切換到root用戶執(zhí)行下列命令
[root@sdedu ~]# mkdir -p /data/pgsql/
[root@sdedu ~]# chown postgres.postgres -R /data/
6 執(zhí)行configure預(yù)先檢測配置環(huán)境
? ?以下操作都以postgres用戶進(jìn)行
#切換至 postgres用戶并進(jìn)入到源碼解壓目錄
./configure \
--prefix=/data/pgsql/ \ ?#準(zhǔn)備安裝路徑
--exec-prefix=/data/pgsql/exec \ #定義安裝結(jié)構(gòu)路徑
--bindir=/data/pgsql/bin \ #定義PostgreSQL 相關(guān)服務(wù)命令
--sysconfdir=/data/pgsql/etc \ #定義系統(tǒng)配置目錄
--libdir=/data/pgsql/exec/lib \ #定義相關(guān)庫和動(dòng)態(tài)庫目錄
--includedir=/data/pgsql/include \ #定義支持C 和 C++ 支持的頭文件
--datarootdir=/data/pgsql/share \ #定義可供數(shù)據(jù)庫只讀的根目錄
--datadir=/data/pgsql/share/data \ #定義可以數(shù)據(jù)庫制度的目錄
--localedir=/data/pgsql/share/locale \ #定義域目錄
--mandir=/data/pgsql/share/man \ #定義 man 幫助手冊目錄
--docdir=/data/pgsql/share/doc/postgresql \ #定義 doc 格式幫助文檔
--htmldir=/data/pgsql/share/html \ #定義html 格式幫助文檔
--enable-nls="zh_CN" \ #定義主機(jī)支持的語言環(huán)境
--with-pgport=5432 \ #定義數(shù)據(jù)庫服務(wù)的監(jiān)聽端口
--with-perl \ #啟用支持 pl/perl 的服務(wù)器編程語言
--with-python \ #啟用支持 pl/python 的服務(wù)器編程語言
--with-tcl \ #啟用支持 pl/tcl 的服務(wù)器編程語言
--with-icu \ #啟用支持 icu 的動(dòng)態(tài)庫
--with-openssl \ #啟用支持 ssl(安全套接層) 連接
--with-pam \ #啟用支持PAM認(rèn)證模塊
--with-ldap \ #啟用支持輕量級(jí)訪問目錄數(shù)據(jù)庫
--with-systemd \ # 啟用 systemd 服務(wù)器
--with-readline \ #啟用支持命令行記錄功能
--with-libxml \ #啟用 SQL 支持的XML 功能
--with-libxslt \ #啟用 SQL 支持的 XML2 的依賴
--with-segsize=2 \ #配置段大小,默認(rèn)數(shù)據(jù)文件段大小為 1G
--with-blocksize=8 \ #配置數(shù)據(jù)塊的I/O大小
--with-wal-blocksize=8 #配置 wal 塊的I/O大小
7 執(zhí)行編譯并安裝
[postgres@sdedu ~]$ export COPT='-Werror'
#執(zhí)行編譯,-j 表示使用多job編譯,受限于CPU核數(shù)和線程數(shù)
[postgres@sdedu ~]$ make all -j16
#如果要build 所有可以build的內(nèi)容(html 和man 以及contrib等)使用如下
make world –j16
#編譯安裝
make install –j16
#如果需要安裝手冊幫助文檔,執(zhí)行
make install-docs –j16
#如果使用全局編譯操作,那么使用
make install-world –j16
8?導(dǎo)入PostgreSQL lib庫
[postgres@sdedu ~]$ export LD_LIBRARY_PATH=/data/pgsql/exec/lib
9 導(dǎo)入PostgreSQL的命令可執(zhí)行路徑
[postgres@sdedu ~]$ export PATH=/data/pgsql/bin:$PATH
10 導(dǎo)入MAN幫助信息
[postgres@sdedu ~]$ export MANPATH=/data/pgsql/share/man
為方便起見,將以上環(huán)境變量寫入到/data/pgsql/exec/postgresql.env中?
[postgres@sdedu ~]$ cat >> /data/pgsql/exec/postgresql.env <
> export LD_LIBRARY_PATH=/data/pgsql/exec/lib
> export PATH=/data/pgsql/bin:\$PATH
> export MANPATH=/data/pgsql/share/man
> EOF
然后將該文件添加到/home/postgres/.bash_profile中,并重新讀取環(huán)境變量
11?初始化數(shù)據(jù)目錄
pg_ctl -D /data/pgsql/pgdata/ initdb
或者
initdb -D /data/pgsql/pgdata?
12 啟動(dòng)數(shù)據(jù)庫
[postgres@sdedu ~]$ pg_ctl? start -D /data/pgsql/pgdata/ -l /tmp/logfile
注意,啟動(dòng)停止數(shù)據(jù)庫必須使用 postgres 用戶執(zhí)行
13 登錄數(shù)據(jù)庫
[postgres@sdedu ~]$ psql -U postgres -d postgres
14 如果使用root用戶登錄數(shù)據(jù)庫,則在/root/.bash_profile中配置PostgreSQL的環(huán)境變量(不建議這樣做)
15 停止數(shù)據(jù)庫
[postgres@sdedu ~]$ pg_ctl? stop -D /data/pgsql/pgdata/ -l /tmp/logfile ile
至此,PostgreSQL 12源碼編譯安裝完成,現(xiàn)在既可以在數(shù)據(jù)庫中執(zhí)行各種符合規(guī)范的操作。
16 配置postgresql系統(tǒng)服務(wù)控制單元和開機(jī)啟動(dòng)
配置該服務(wù)之后,Redhat Linux就可以使用 systemctl系統(tǒng)控制命令來啟動(dòng)PostgreSQL數(shù)據(jù)庫了。
使用root用戶切換到 /usr/lib/systemd/system目錄,編輯postgresql-12.service文件,該文件默認(rèn)不存在,需要手動(dòng)編輯,如下:
[root@sdedu system]# cat postgresql-12.service
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGPORT=5432
Environment=PGDATA=/data/pgsql/pgdata
OOMScoreAdjust=-1000
ExecStart=/data/pgsql/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/data/pgsql/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/data/pgsql/bin/pg_ctl reload -D ${PGDATA} -s
TimeoutSec=300
[Install]
WantedBy=multi-user.target
然后之下下列命令啟用服務(wù)控制守護(hù)
[root@sdedu init.d]# systemctl? daemon-reload
使用systemctl系統(tǒng)服務(wù)控制命令啟動(dòng)postgresql
[root@sdedu ~]# systemctl? start postgresql-12.service
?4
rpm 安裝
目前的Linux 7的發(fā)行版本已經(jīng)集成了PostgreSQL 的相關(guān)套件,只需要配置好yum源既可以使用 yum 軟件安裝命令安裝,系統(tǒng)自帶的postgresql的版本為9.2版本。
1 配置yum
[root@sdedu ~]# cat /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
2 更新yum源
[root@sdedu ~]# yum clean all && yum repolist all
3 檢查PostgreSQL相關(guān)軟件套件
[root@sdedu yum.repos.d]# yum list all | grep ^postgresql
4 執(zhí)行yum安裝
[root@sdedu ~]# yum install -y postgresql-server.x86_64
使用yum安裝后,默認(rèn)的命令路徑位于/usr/bin下
5 初始化數(shù)據(jù)目錄
#創(chuàng)建初始化數(shù)據(jù)目錄
[root@sdedu ~]# mkdir -p /pg92/pgdata/data/
#為數(shù)據(jù)目錄授權(quán) postgres 用戶所屬主和所屬組
[root@sdedu ~]# chown postgres.postgres -R /pg92
#切換至 postgres 用戶
[root@sdedu ~]# su – postgres
#執(zhí)行 初始化數(shù)據(jù)庫命令
[postgres@sdedu ~]$ /usr/bin/initdb? -D ?/pg92/pgdata/data/
6 啟動(dòng)數(shù)據(jù)庫
[postgres@sdedu ~]$ /usr/bin/pg_ctl start -D /pg92/pgdata/data/ -l /tmp/logfile
server starting
7 配置服務(wù)開機(jī)啟動(dòng)
[root@sdedu ~]# systemctl enable postgresql.service
Yum安裝配置相對于簡單,可以作為學(xué)習(xí)入門
?5
拓展
除了使用操作系統(tǒng)本身集成的postgresql軟件套件外,也可以通過官方網(wǎng)站獲取官方集成的rpm軟件套件,下去可自行嘗試,在Linux下下載必須要保證網(wǎng)絡(luò)暢通,具體下載地址:
https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
下載官方提供的 rpm 源配置包
然后使用rpm 安裝該包
[root@sdedu ~]# rpm -ivh pgdg-redhat-repo-latest.noarch.rpm
或者直接使用yum進(jìn)行安裝
[root@sdedu ~]# yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
然后執(zhí)行yum安裝客戶端
[root@sdedu ~]# yum install postgresql12
執(zhí)行yum安裝數(shù)據(jù)庫服務(wù)端
[root@sdedu ~]# yum install postgresql12-server
初始化數(shù)據(jù)目錄
[root@sdedu ~]# /usr/pgsql-12/bin/postgresql-12-setup initdb
通過systemctl啟動(dòng)數(shù)據(jù)庫和配置開機(jī)啟動(dòng)
[root@sdedu ~]# systemctl? start postgresql-12
[root@sdedu ~]# systemctl? enable postgresql-12
推薦閱讀
MySQL之通用二進(jìn)制格式的安裝方法
2019-07-03
再見2019,你好2020
2020-01-01
晟數(shù)學(xué)院成為首批中國PG培訓(xùn)認(rèn)證體系合作伙伴
2019-07-05
點(diǎn)擊“閱讀原文”
總結(jié)
以上是生活随笔為你收集整理的sql配置管理器服务是空的_PostgreSQL 12 安装和配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统课设之内存管理
- 下一篇: 前端如何实现网络速度测试功能_前端组件单