PostgreSQL 12源码包部署及用户管理

运维 数据库运维 PostgreSQL
时间序列数据库(Time Series Database)是用于存储和管理时间序列数据的专业化数据库,具备写多读少、冷热分明、高并发写入、无事务要求、海量数据持续写入等特点,可以基于时间区间聚合分析和高效检索,广泛应用在物联网、经济金融、环境监控、工业制造、农业生产、硬件和软件系统监控等场景。

大家好,我是小姜。一名落魄的低层运维工程师。

前言

时间序列数据库(Time Series Database)是用于存储和管理时间序列数据的专业化数据库,具备写多读少、冷热分明、高并发写入、无事务要求、海量数据持续写入等特点,可以基于时间区间聚合分析和高效检索,广泛应用在物联网、经济金融、环境监控、工业制造、农业生产、硬件和软件系统监控等场景。

最近公司需要使用时序数据库,经过调研发现,TimeScaleDB 就是一款非常好用,功能强大的时序数据库,并且基于强大的PostgreSQL。

而TimeScaleDB官网原话是:TimescaleDB 是 PostgreSQL 的扩展,可让您更轻松、更快速地处理时间序列数据。

因为目前生产用的是pgsql的12版本,因此下面就来部署一下PostgreSQL 12.

一、环境介绍

CentOS 7.5,内核版本5.7。服务器:8C32G

PostgresSQL 源码包下载地址:https://www.postgresql.org/download

注意内核版本很重要,一定要注意。因为在内核版本2.4的时候需要配置Huge page size,而我这里是5.7版本,就不进行配置了。但是需要配置以下几个参数:

二、内核参数修改

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 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

三、确保安装了gcc和make

gcc --version 
make --version 
  • 1.
  • 2.

四、PostgresSQL 服务部署

yum -y install readline readline-devel zlib zlib-devel bison 
 
groupadd postgres 
useradd -g postgres postgres 
passwd postgres 
 
# 创建相关目录 
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 
 
# 添加环境变量 
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  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

五、PostgresSQL初始化

su - posrgres 
initdb -D /data/postgresql-12/data 
  • 1.
  • 2.

解释:

-D 指定pgsql数据目录

六、启动和关闭pgsql

# 启动pgsql 
pg_ctl -D /data/postgres-12/data -l postgresql.log start 
 
# 关闭pgsql 
pg_ctl stop -D /data/postgres-12/data -mf 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

解释:

  • -D 指定路径可以不加
  • -l 表示将日志写入到文件
  • -mf:指定模式为fast
  • -m 指定模式。一共三种模式:smart、fast、immediate
  • smart:停止数据库的时候需要等待所有的客户端都断开连接,最安全。因此停止的速度非常慢
  • fast:自动杀掉客户端连接,生产中建议用这个方式。
  • immediate:类似kill -9,不是很安全,一般不用

七、设置pgsql密码以及配置远程登录

su - postgres 
ALTER USER postgres WITH PASSWORD '设置的密码'
 
# 重启pgsql 
pg_ctl restart -mf 
 
# 配置远程登录pgsql 
 
cd /data/postgresql-12/data 
vi pg_hba.conf 
# 添加允许远程的网段,也可以是单个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服务 
pg_ctl restart -D /data/postgres-12/data 
 
# 测试远程连接,如下表示远程连接完成 
# example:psql -U pgsql用户名 -h pgsql的ip -p 端口 -d 数据库名 
 
$ psql -U postgres -h 10.10.22.151 -p 5432 -d postgres 
psql (12.6) 
Type "help" for help. 
 
postgres=# \q 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.

八、PostgreSQL用户角色管理

pgsql中不区分用户和角色的概念,create user其实就是create role 的别名。这两个命令几乎相同。唯一的区别就是create user创建的用户默认带有login的属性,而create role创建的用户默认不带login属性(\du查看的时候会看到cannot login)

# 查看角色 
select * from pg_roles; 
 
# 查看用户 
select * from pg_user; 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

8.1、角色属性

属性            说明 
login          只有具有login属性的角色,可以用作数据库连接的起始角色名 
superuser      数据库超级用户 
createdb        创建数据库权限 
createrole     允许其创建或者删除其他普通用户的角色(超级权限除外) 
replication    做流复制的时候用到的一个用户属性,一般单独设置 
password      在登录时要求制定密码时才会起作用,比如md5或者password模式,和客户端连接方式有关 
inherit        用户组对组员的一个继承标志,成员可以继承用户的权限特性 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

8.2、角色授权

# 给已存在的用户赋予各种权限 
# 1) 赋予登录权限 
alter role allen with logiin; 
 
# 2) 赋予创建角色权限 
alter role jol with createrole; 
 
\du; 
 
# 色时并赋予权限 
# 1) 创建角色allen 并赋予创建db的权限 
create role allen createdb; 
 
# 2) 创建角色allen并赋予创建db的权限且设置密码为allen123,并能够登录 
create role allen createdb password 'allen123' login; 
 
# 使用刚才创建的用户登录pgsql 
psql -U allen  -d mydb -h 10.10.22.151 -p 5432 
 
 
# 将数据库mydb授权给allen用户 
grant all privileges on database mydb to allen; 
 
# 这里授权后用户还是没有读写权限的,需要切换到mydb库到再授权 
\c mydb; 
# 注意这条sql语句需要在所要操作的数据库里执行.即上面\c mydb; 切换到mydb库后再操作 
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; 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.

本次的部署和用户基本介绍就到这里,后面会将PostgresSQL 的主从流复制。

 

责任编辑:武晓燕 来源: 运维开发故事
相关推荐

2023-03-17 23:08:36

PostgreSQL数据库

2022-01-10 07:59:14

PostgreSQl 主从流复制归档配置

2017-03-20 19:01:20

Linux管理员系统用户

2009-12-25 16:37:11

Linux源码包

2009-10-27 18:01:46

2021-07-14 23:38:02

PostgreSQLOracle模式

2023-12-20 10:14:24

2018-03-05 10:54:58

2021-08-13 14:16:05

Linux操作系统管理

2009-01-27 17:32:00

虚拟化部署案例

2021-04-25 18:42:02

Serverless 文件上传用户管理

2022-05-30 15:08:33

包管理子系统包安装模块

2011-08-24 14:07:13

PostgreSQLStreaming R

2011-09-14 13:28:36

PostgreSQL

2018-08-21 09:45:07

数据库PostgreSQLSQL特性

2023-10-06 00:04:02

2011-01-11 14:06:39

2021-11-29 08:48:00

K8S KubernetesAirflow

2021-08-09 11:15:28

MybatisJavaSpring

2009-06-10 15:14:00

点赞
收藏

51CTO技术栈公众号