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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: PostgreSQL 12源码包部署及用户管理

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


前言


时间序列数据库(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


三、确保安装了gcc和make


gcc --version
make --version


四、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


五、PostgresSQL初始化

su - posrgres
initdb -D /data/postgresql-12/data


解释:

  • -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


解释:

  • -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


八、PostgreSQL用户角色管理


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


# 查看角色
select * from pg_roles;
# 查看用户
select * from pg_user;


8.1、角色属性


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


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;


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

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
1月前
|
Docker 容器 关系型数据库
【PolarDB-X从入门到精通】 第四讲:PolarDB分布式版安装部署(源码编译部署)
本期课程将于4月11日19:00开始直播,内容包括源码编译基础知识和实践操作,课程目标是使学员掌握源码编译部署技能,为未来发展奠定基础,期待大家在课程中取得丰富的学习成果!
【PolarDB-X从入门到精通】 第四讲:PolarDB分布式版安装部署(源码编译部署)
|
4天前
|
关系型数据库 MySQL 分布式数据库
快速体验开源PolarDB -X 部署安装
在CentOS上部署PolarDB-X标准版集群的体验包括三步:安装python3和docker(如果未预装),然后使用venv创建环境,安装pxd并验证。接着,通过`pxd tryout -t standard`部署集群,该过程需拉取大量镜像,可能耗时且占用数GB空间,建议事先清理空间并了解资源需求。部署后,可查询集群状态和健康信息。最终,使用`pxd cleanup`清理。过程中因磁盘空间不足遇到问题,建议体验前提供系统配置需求,并允许用户自定义MySQL参数。
|
5天前
|
关系型数据库 Linux 分布式数据库
源码编译实现PolarDB-X部署安装的体验报告
本文档记录了编译安装PolarDB-X的步骤,包括设置CentOS开发环境、从GitHub获取源码、编译(耗时较长)、解决依赖和权限问题、安装部署及测试验证。作者建议优化文档细节、减少编译时间、改进错误提示,并提议提供一键安装依赖脚本、新手视频教程及加强社区支持。整个过程虽有挑战,但具有成就感。
16 0
|
6天前
|
关系型数据库 Java 数据库
docker部署postgresql数据库和整合springboot连接数据源
docker部署postgresql数据库和整合springboot连接数据源
16 0
|
15天前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用合集之关于在Docker环境中部署和维护PolarDB-X,有相关文章可以参考吗
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
SQL 关系型数据库 MySQL
postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用
postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用
127 0
|
27天前
|
关系型数据库 MySQL 分布式数据库
【PolarDB-X从入门到精通】 第五讲:PolarDB集中式版安装部署(源码编译部署)
4月18日本周四晚19:00,一站式学习源码编译PolarDB-X标准版(集中式),各位敬请期待,我们不见不散!
【PolarDB-X从入门到精通】 第五讲:PolarDB集中式版安装部署(源码编译部署)
|
2月前
|
SQL 关系型数据库 分布式数据库
PolarDB常见问题之PolarDB-X部署三台失败如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
2月前
|
存储 Kubernetes 分布式数据库
利用Helm在K8S上部署 PolarDB-X 集群(详细步骤--亲测!!!)
利用Helm在K8S上部署 PolarDB-X 集群(详细步骤--亲测!!!)
132 0
|
3月前
|
容器
为什么在部署PolarDB-X时会卡在这了不动
【2月更文挑战第2天】为什么在部署PolarDB-X时会卡在这了不动
22 3