PostgreSQL 12源碼包部署及用戶管理
大家好,我是小姜。一名落魄的低層運(yùn)維工程師。
前言
時(shí)間序列數(shù)據(jù)庫(kù)(Time Series Database)是用于存儲(chǔ)和管理時(shí)間序列數(shù)據(jù)的專業(yè)化數(shù)據(jù)庫(kù),具備寫多讀少、冷熱分明、高并發(fā)寫入、無(wú)事務(wù)要求、海量數(shù)據(jù)持續(xù)寫入等特點(diǎn),可以基于時(shí)間區(qū)間聚合分析和高效檢索,廣泛應(yīng)用在物聯(lián)網(wǎng)、經(jīng)濟(jì)金融、環(huán)境監(jiān)控、工業(yè)制造、農(nóng)業(yè)生產(chǎn)、硬件和軟件系統(tǒng)監(jiān)控等場(chǎng)景。
最近公司需要使用時(shí)序數(shù)據(jù)庫(kù),經(jīng)過(guò)調(diào)研發(fā)現(xiàn),TimeScaleDB 就是一款非常好用,功能強(qiáng)大的時(shí)序數(shù)據(jù)庫(kù),并且基于強(qiáng)大的PostgreSQL。
而TimeScaleDB官網(wǎng)原話是:TimescaleDB 是 PostgreSQL 的擴(kuò)展,可讓您更輕松、更快速地處理時(shí)間序列數(shù)據(jù)。
因?yàn)槟壳吧a(chǎn)用的是pgsql的12版本,因此下面就來(lái)部署一下PostgreSQL 12.
一、環(huán)境介紹
CentOS 7.5,內(nèi)核版本5.7。服務(wù)器:8C32G
PostgresSQL 源碼包下載地址:https://www.postgresql.org/download
注意內(nèi)核版本很重要,一定要注意。因?yàn)樵趦?nèi)核版本2.4的時(shí)候需要配置Huge page size,而我這里是5.7版本,就不進(jìn)行配置了。但是需要配置以下幾個(gè)參數(shù):
二、內(nèi)核參數(shù)修改
- vi /etc/sysctl.conf
- kernel.shmmax = 30923764531
- kernel.shmall = 7340032
- fs.file-max = 1000000
- sysctl --system
- vi /etc/security/limits.conf
- * soft nofile 1000000
- * hard nofile 1000000
- * soft noproc 1000000
- * hard noproc 1000000
- ulimit -n 1000000
三、確保安裝了gcc和make
- gcc --version
- make --version
四、PostgresSQL 服務(wù)部署
- yum -y install readline readline-devel zlib zlib-devel bison
- groupadd postgres
- useradd -g postgres postgres
- passwd postgres
- # 創(chuàng)建相關(guān)目錄
- mkdir -p /usr/local/postgresql-12
- mkdir -p /data/postgresql-12/{data,log,archive}
- chown -R postgres.postgres /data/postgresql-12/
- chmod -R 0700 /data/postgresql-12/data
- tar xf postgresql-12.6.tar.gz
- cd postgresql-12.6
- # prefix指定的是pgsql的安裝目錄
- ./configure --prefix=/usr/local/postgresql-12 --with-pgport=5432
- make world
- make install-world
- # 添加環(huán)境變量
- vi /etc/profile
- # postgres-12
- LANG=en_US.utf8
- PGDATA=/data/postgresql-12/data
- PGHOME=/usr/local/postgresql-12
- LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
- PATH=$PATH:/usr/local/postgresql-12/bin
- export LANG PGDATA PGDATA LD_LIBRARY_PATH PATH
五、PostgresSQL初始化
- su - posrgres
- initdb -D /data/postgresql-12/data
解釋:
-D 指定pgsql數(shù)據(jù)目錄
六、啟動(dòng)和關(guān)閉pgsql
- # 啟動(dòng)pgsql
- pg_ctl -D /data/postgres-12/data -l postgresql.log start
- # 關(guān)閉pgsql
- pg_ctl stop -D /data/postgres-12/data -mf
解釋:
- -D 指定路徑可以不加
- -l 表示將日志寫入到文件
- -mf:指定模式為fast
- -m 指定模式。一共三種模式:smart、fast、immediate
- smart:停止數(shù)據(jù)庫(kù)的時(shí)候需要等待所有的客戶端都斷開(kāi)連接,最安全。因此停止的速度非常慢
- fast:自動(dòng)殺掉客戶端連接,生產(chǎn)中建議用這個(gè)方式。
- immediate:類似kill -9,不是很安全,一般不用
七、設(shè)置pgsql密碼以及配置遠(yuǎn)程登錄
- su - postgres
- ALTER USER postgres WITH PASSWORD '設(shè)置的密碼';
- # 重啟pgsql
- pg_ctl restart -mf
- # 配置遠(yuǎn)程登錄pgsql
- cd /data/postgresql-12/data
- vi pg_hba.conf
- # 添加允許遠(yuǎn)程的網(wǎng)段,也可以是單個(gè)ip
- host all all 10.10.0.0/16 trust
- vi postgresql.conf
- # 配置postgresql.conf
- 將listen_addresses = 'localhost'改成listen_addresses = '0.0.0.0'
- # 重啟pgsql服務(wù)
- pg_ctl restart -D /data/postgres-12/data
- # 測(cè)試遠(yuǎn)程連接,如下表示遠(yuǎn)程連接完成
- # example:psql -U pgsql用戶名 -h pgsql的ip -p 端口 -d 數(shù)據(jù)庫(kù)名
- $ psql -U postgres -h 10.10.22.151 -p 5432 -d postgres
- psql (12.6)
- Type "help" for help.
- postgres=# \q
八、PostgreSQL用戶角色管理
pgsql中不區(qū)分用戶和角色的概念,create user其實(shí)就是create role 的別名。這兩個(gè)命令幾乎相同。唯一的區(qū)別就是create user創(chuàng)建的用戶默認(rèn)帶有l(wèi)ogin的屬性,而create role創(chuàng)建的用戶默認(rèn)不帶login屬性(\du查看的時(shí)候會(huì)看到cannot login)
- # 查看角色
- select * from pg_roles;
- # 查看用戶
- select * from pg_user;
8.1、角色屬性
- 屬性 說(shuō)明
- login 只有具有l(wèi)ogin屬性的角色,可以用作數(shù)據(jù)庫(kù)連接的起始角色名
- superuser 數(shù)據(jù)庫(kù)超級(jí)用戶
- createdb 創(chuàng)建數(shù)據(jù)庫(kù)權(quán)限
- createrole 允許其創(chuàng)建或者刪除其他普通用戶的角色(超級(jí)權(quán)限除外)
- replication 做流復(fù)制的時(shí)候用到的一個(gè)用戶屬性,一般單獨(dú)設(shè)置
- password 在登錄時(shí)要求制定密碼時(shí)才會(huì)起作用,比如md5或者password模式,和客戶端連接方式有關(guān)
- inherit 用戶組對(duì)組員的一個(gè)繼承標(biāo)志,成員可以繼承用戶的權(quán)限特性
8.2、角色授權(quán)
- # 給已存在的用戶賦予各種權(quán)限
- # 1) 賦予登錄權(quán)限
- alter role allen with logiin;
- # 2) 賦予創(chuàng)建角色權(quán)限
- alter role jol with createrole;
- \du;
- # 色時(shí)并賦予權(quán)限
- # 1) 創(chuàng)建角色allen 并賦予創(chuàng)建db的權(quán)限
- create role allen createdb;
- # 2) 創(chuàng)建角色allen并賦予創(chuàng)建db的權(quán)限且設(shè)置密碼為allen123,并能夠登錄
- create role allen createdb password 'allen123' login;
- # 使用剛才創(chuàng)建的用戶登錄pgsql
- psql -U allen -d mydb -h 10.10.22.151 -p 5432
- # 將數(shù)據(jù)庫(kù)mydb授權(quán)給allen用戶
- grant all privileges on database mydb to allen;
- # 這里授權(quán)后用戶還是沒(méi)有讀寫權(quán)限的,需要切換到mydb庫(kù)到再授權(quán)
- \c mydb;
- # 注意這條sql語(yǔ)句需要在所要操作的數(shù)據(jù)庫(kù)里執(zhí)行.即上面\c mydb; 切換到mydb庫(kù)后再操作
- grant all privileges on all tables in schema public to allen;
- psql -U allen -d mydb;
- CREATE TABLE student (
- name varchar(80),
- age int
- );
- insert into student values ('allenjol', 22);
- select * from student;
本次的部署和用戶基本介紹就到這里,后面會(huì)將PostgresSQL 的主從流復(fù)制。