暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

PostgreSQL 17.2 数据库编译安装及使用

原创 飞天 2024-12-13
785

PostgreSQL数据库

PostgreSQL被称为“世界上最先进的开源关系型数据库”,属于一专多长的全栈数据库。主要应用场景包括OLTP、OLAP、批处理、空间与地理数据库PostGIS等。随着信创项目的推动,以PostgreSQL开源软件进行二次开发的国产数据库软件也有很多,如人大金仓KingBase、瀚高HighGo DB、亚信的AntDB等等…

官网地址:
https://www.postgresql.org/

PostgreSQL版本说明

2024年11月21日 PostgreSQL 17.2版本发布,同时发布的还有PostgreSQL 16.6, 15.10, 14.15, 13.18, and 12.22 版本!
PostgreSQL 的生命周期是在主要版本首次发布后支持 5 年。在其五周年纪念日之后,主要版本将有最后一个包含所有修复的次要版本,并将被视为生命周期终止 (EOL) 并不再受支持。

各版本支持情况:
PostgreSQL 17:于2024年9月26日发布,支持状态将持续至2029年11月,最新版本为17.2,发布于2024年11月21日。
PostgreSQL 16:于2023年9月14日发布,支持状态将持续至2028年11月,最新版本为16.6,发布于2024年11月21日。
PostgreSQL 15:于2022年10月13日发布,支持状态将持续至2027年11月,最新版本为15.10,发布于2024年11月21日。
PostgreSQL 14:于2021年9月30日发布,支持状态将持续至2026年11月,最新版本为14.15,发布于2024年11月21日。
PostgreSQL 13:于2020年9月24日发布,支持状态将持续至2025年11月,最新版本为13.18,发布于2024年11月21日。
PostgreSQL 12:于2019年10月3日发布,支持状态已于2024年11月21日结束,最新版本为12.22,发布于2024年11月21日。
PostgreSQL 11:于2018年10月18日发布,支持状态已于2023年11月9日结束,最新版本为11.22,发布于2023年11月09日。

PostgreSQL项目计划在2025年9月发布下一个主要版本,即PostgreSQL 18。项目的目标是每季度至少发布一次次要版本,通常在2月、5月、8月和11月的第二个星期四。接下来的次要版本发布计划如下:
2025年2月13日
2025年5月8日
2025年8月14日
2025年11月13日

发布路线图:
https://www.postgresql.org/developer/roadmap/ 列出了即将发布的次要版本和主要版本。

版本控制策略:
https://www.postgresql.org/support/versioning/

接下来主要讲述PostgreSQL 17单实例的搭建过程。

PG17软件部署

PG17下载

下载地址:https://www.postgresql.org/ftp/source/v17.2/ 文件名:postgresql-17.2.tar.gz

关闭SeLinux

sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0

关闭防火墙

systemctl stop firewalld systemctl disable firewalld systemctl status firewalld

关闭RemoveIPC

vi /etc/systemd/logind.conf RemoveIPC=no systemctl daemon-reload systemctl restart systemd-logind

配置内核参数

vim /etc/sysctl.conf

kernel.sem= 4096 2147483647 2147483646 512000 fs.file-max=7672460 fs.aio-max-nr=1048576 net.core.rmem_default=262144 net.core.rmem_max=4194304 net.core.wmem_default=262144 net.core.wmem_max=4194304 net.ipv4.ip_local_port_range=9000 65500 net.ipv4.tcp_wmem=8192 65536 16777216 net.ipv4.tcp_rmem=8192 87380 16777216 vm.min_free_kbytes=512000 vm.vfs_cache_pressure=200 vm.swappiness=10 net.ipv4.tcp_max_syn_backlog=4096 net.core.somaxconn=4096

sysctl -p 生效

配置资源限制

vi /etc/security/limits.conf

postgres soft nofile 655360 postgres hard nofile 655360 postgres soft nproc 655360 postgres hard nproc 655360 postgres soft core unlimited postgres hard core unlimited postgres soft memlock 50000000 postgres hard memlock 50000000

安装依赖包

yum install -y readline readline-devel flex bison openssl openssl-devel git yum install -y gcc gcc-c++ epel-release llvm5.0 llvm5.0-devel clang libicu-devel perl-ExtUtils-Embed zlib-devel openssl openssl-devel pam-devel libxml2-devel libxslt-devel openldap-devel systemd-devel tcl-devel python-devel python3-devel lz4 lz4-devel uuid libuuid-devel

创建组和用户

groupadd -g 2000 postgres useradd -g 2000 -u 2000 postgres echo postgres|passwd --stdin postgres

设置postgres用户的环境变量

vi .bash_profile export PGHOME=/opt/pg17 export PGDATA=/data/pg17 export PATH=$PGHOME/bin:$PATH:. export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH export PGPORT=5555 export PGUSER=postgres export PGDATABASE=postgres

创建pg17软件安装目录

mkdir -p /opt/pg17 chmod 755 -R /opt/pg17 chown -R postgres:postgres /opt/pg17

创建数据文件存放目录

mkdir -p /data/pg17 chmod -R 700 /data/pg17 chown -R postgres:postgres /data/pg17

解压软件并授权

tar -zxvf /soft/postgresql-17.2.tar.gz chown -R postgres:postgres /soft/postgresql-17.2/

编译安装pg17

su - postgres cd /soft/postgresql-17.2/ ./configure --prefix=/opt/pg17 --with-pgport=5555 --with-extra-version=" [By guan]" --with-perl --with-libxml --with-libxslt gmake world && gmake install-world

数据库初始化

initdb -D /data/pg17 -E UTF8 --locale=zh_CN.utf8

设置数据库参数

vi postgresql.conf

listen_addresses = '*' log_destination = 'csvlog' logging_collector = on max_connections = 1000 shared_preload_libraries = 'pg_stat_statements,passwordcheck' archive_mode = on archive_command = 'cp %p /archive/%f'

设置白名单

vi pg_hba.conf

host all all 192.168.0.0/16 md5

启动数据库

pg_ctl -D /data/pg17 start

修改默认postgres用户的密码

数据库初始化好后,postgres用户的密码默认为空。

alter user postgres with password '******';

psql远程连接数据库

psql -h 192.168.*.* -U postgres

dbeaver客户端连接数据库

dbeaver设置:

菜单栏选择数据库->选择新建数据库连接->选择postgresql驱动
依次输入主机ip地址,端口,数据库名称,用户名和密码,点击“测试连接”按钮
image.png
出现下面界面:
image.png
说明测试连接成功!

PG数据库使用

附录

psql的用法:

[postgres@node1 ~]$ psql --help psql是PostgreSQL 的交互式客户端工具。 使用方法: psql [OPTION]... [DBNAME [USERNAME]] 通用选项: -c, --command=命令 执行单一命令(SQL或内部指令)然后结束 -d, --dbname=DBNAME 指定要连接的数据库 -f, --file=文件名 从文件中执行命令然后退出 -l, --list 列出所有可用的数据库,然后退出 -v, --set=, --variable=NAME=VALUE 设置psql变量NAME为VALUE (例如,-v ON_ERROR_STOP=1) -V,--version 输出版本信息,然后退出 -X, --no-ksqlrc 不读取启动文档(~/.psqlrc) -1 ("one"), --single-transaction 作为一个单一事务来执行命令文件(如果是非交互型的) -?, --help[=options] 显示此帮助,然后退出 --help=commands 列出反斜线命令,然后退出 --help=variables 列出特殊变量,然后退出 输入和输出选项: -a, --echo-all 显示所有来自于脚本的输入 -b, --echo-errors 回显失败的命令 -e, --echo-queries 显示发送给服务器的命令 -E, --echo-hidden 显示内部命令产生的查询 -L, --log-file=文件名 将会话日志写入文件 -n, --no-readline 禁用增强命令行编辑功能(readline) -o,--outPut=FILENAME 将查询结果发送到file(or |pipe) -q,--quiet 静静地运行(没有消息,只有查询输出) -s, --single-step 单步模式 (确认每个查询) -S, --single-line 单行模式 (一行就是一条 SQL 命令) 输出格式选项 : -A,--no-align 不对齐表输出模式 --csv CSV(逗号分隔值)表输出模式 -F, --field-separator=STRING 用于未对齐输出的字段分隔符(默认值:"|") -H,--html HTML表输出模式 -P, --pset=变量[=参数] 设置将变量打印到参数的选项(查阅 \pset 命令) -R, --record-separator=STRING 记录分隔符用于未对齐输出(默认:newline) -t, --tuples-only 只打印记录i -T, --table-attr=文本 设定 HTML 表格标记属性(例如,宽度,边界) -x,--expanded 打开扩展表outPut -z, --field-separator-zero 将未对齐输出的字段分隔符设置为零字节 -0, --record-separator-zero 将未对齐输出的记录分隔符设置为零字节 连接选项: -h, --host=主机名 数据库服务器主机或socket目录(默认:"本地接口") -p, --port=端口 数据库服务器的端口(默认:"54321") -U,--username=USERNAME 数据库用户名(默认:"kingbase") -w, --no-password 永远不提示输入口令 -W, --password 强制口令提示 (自动) 更多信息,请在psql中输入 "\?"(用于内部命令), 或者参考PostgreSQL文档中的psql章节。 Connection options: -h, --host=HOSTNAME database server host or socket directory -p, --port=PORT database server port -U, --username=USERNAME database user name -w, --no-password never prompt for password -W, --password force password prompt (should happen automatically)

总结

PostgreSQL 17.2 数据库编译安装非常容易,后续有空会做成自动化脚本,提高效率。

关于作者:
专注于Oracle、MySQL、PG、OpenGauss和国产数据库的研究,热爱生活,热衷于分享数据库技术。
微信公众号:飞天online
墨天轮:https://www.modb.pro/u/15197
如有任何疑问,欢迎大家留言,共同进步~~~

最后修改时间:2024-12-16 21:54:16
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论