PostgreSQL 16 发布,更可靠更稳健

📢📢📢📣📣📣

哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验

一位上进心十足的【大数据领域博主】!😜😜😜

中国DBA联盟(ACDU)成员,目前服务于工业互联网

擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。

✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞

❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • [📣1 .新版本概述](#📣1 .新版本概述)
      • [✨ 1.1 性能改进](#✨ 1.1 性能改进)
      • [✨ 1.2 逻辑复制](#✨ 1.2 逻辑复制)
      • [✨ 1.3 开发者经验](#✨ 1.3 开发者经验)
      • [✨1.4 监控](#✨1.4 监控)
      • [✨1.5 访问控制和安全](#✨1.5 访问控制和安全)
    • [📣2 .PG16部署](#📣2 .PG16部署)
      • [✨2.1 安装包下载](#✨2.1 安装包下载)
      • [✨2.2 创建用户](#✨2.2 创建用户)
      • [✨2.3 创建目录](#✨2.3 创建目录)
      • [✨2.4 编译](#✨2.4 编译)
      • [✨2.5 配置环境变量](#✨2.5 配置环境变量)
      • [✨2.6 初始化安装](#✨2.6 初始化安装)
    • 📣3.PG16启动使用

前言

2023年9月14日 - PostgreSQL 全球开发集团重磅宣布发布 PostgreSQL 16,这是世界上最先进的开源数据库的最新版本!


📣1 .新版本概述

PostgreSQL 16提高了性能,在查询并行性、批量数据加载和逻辑复制方面有显著改进。此版本为开发人员和管理员提供了许多功能,包括更多 SQL/JSON 语法、针对工作负载的新监控统计数据,以及定义访问控制规则以管理大型队列策略的更大灵活性。PostgreSQL 核心团队成员 Dave Page 表示:"随着关系数据库模式的发展,PostgreSQL 在大规模搜索和管理数据方面不断提高性能。" "PostgreSQL 16 为用户提供了更多方法来扩展和横向扩展其工作负载,同时为他们提供了获得见解和优化数据管理方式的新方法。"PostgreSQL 是一种以其可靠性和稳健性而闻名的创新数据管理系统,受益于全球开发者社区超过 25 年的开源开发,已成为各种规模组织的首选开源关系数据库。

本人也是pg的忠实爱好者,特总结了以下pg16新特性

✨ 1.1 性能改进

PostgreSQL 16在x86和ARM架构中都引入了使用SIMD的CPU加速,从而在处理ASCII和JSON字符串以及执行数组和子转换搜索时提高了性能

✨ 1.2 逻辑复制

PostgreSQL 16中对逻辑复制有一些访问控制改进,包括新的预定义角色pg_create_subscription,它允许用户创建新的逻辑订阅。最后,此版本开始添加对双向逻辑复制的支持,引入了在来自不同发布者的两个表之间复制数据的功能。

✨ 1.3 开发者经验

PostgreSQL 16 改进了对文本排序规则的一般支持 ,它提供了文本排序的规则。PostgreSQL 16 默认情况下构建 ICU 支持,从环境中确定默认的 ICU 区域设置,并允许用户定义自定义 ICU 排序规则。

✨1.4 监控

调整数据库工作负载性能的一个关键方面是了解 I/O 操作对系统的影响。PostgreSQL 16 引入了 pg_stat_io关键 I/O 指标的新来源,用于对 I/O 访问模式进行精细分析。

✨1.5 访问控制和安全

PostgreSQL 16 提供了更细粒度的访问控制选项并增强了其他安全功能。pg_hba.conf该 版本改进了文件的管理 pg_ident.conf ,包括允许用户和数据库名称的正则表达式匹配以及包含外部配置文件的指令.

📣2 .PG16部署

✨2.1 安装包下载

官网下载安装包,本次使用源码安装的方式

https://www.postgresql.org/ftp/source/v16.0/

✨2.2 创建用户

groupadd -g 60000 pgsql

useradd -u 60000 -g pgsql pgsql

echo "beijing" | passwd --stdin pgsql

✨2.3 创建目录

mkdir /soft

mkdir -p /postgresql/{pgdata,archive,scripts,backup,pg16,soft}

chown -R pgsql:pgsql /postgresql

chown -R pgsql:pgsql /soft

chmod -R 775 /postgresql

✨2.4 编译

[root@centos79 ~]# cp /opt/postgresql-16.0.tar.gz /soft

[root@centos79 ~]# chown -R pgsql:pgsql /soft

[root@centos79 ~]# cp /opt/postgresql-16.0.tar.gz /postgresql/soft/

[root@centos79 ~]# su - pgsql

Last login: Mon Sep 25 08:04:41 CST 2023 on pts/0

[pgsql@centos79 ~]$ cd /postgresql/soft/

[pgsql@centos79 soft]$ ll

total 31528

-rw-r--r--. 1 pgsql pgsql 32283370 Sep 25 08:04 postgresql-16.0.tar.gz

[pgsql@centos79 soft]$ tar zxvf postgresql-16.0.tar.gz
[pgsql@centos79 soft]$ cd postgresql-16.0/

[pgsql@centos79 postgresql-16.0]$ ll

total 876

-rw-r--r--. 1 pgsql pgsql 365 Sep 12 04:25 aclocal.m4

drwxrwxr-x. 2 pgsql pgsql 4096 Sep 12 04:28 config

-rwxr-xr-x. 1 pgsql pgsql 584200 Sep 12 04:25 configure

-rw-r--r--. 1 pgsql pgsql 87156 Sep 12 04:25 configure.ac

drwxrwxr-x. 61 pgsql pgsql 4096 Sep 12 04:28 contrib

-rw-r--r--. 1 pgsql pgsql 1192 Sep 12 04:25 COPYRIGHT

drwxrwxr-x. 3 pgsql pgsql 4096 Sep 12 04:28 doc

-rw-r--r--. 1 pgsql pgsql 4288 Sep 12 04:25 GNUmakefile.in

-rw-r--r--. 1 pgsql pgsql 277 Sep 12 04:25 HISTORY

-rw-r--r--. 1 pgsql pgsql 64592 Sep 12 04:29 INSTALL

-rw-r--r--. 1 pgsql pgsql 1875 Sep 12 04:25 Makefile

-rw-r--r--. 1 pgsql pgsql 101920 Sep 12 04:28 meson.build

-rw-r--r--. 1 pgsql pgsql 6266 Sep 12 04:25 meson_options.txt

-rw-r--r--. 1 pgsql pgsql 1213 Sep 12 04:25 README

drwxrwxr-x. 16 pgsql pgsql 4096 Sep 12 04:29 src

yum install gcc

yum install zlib-devel

./configure --prefix=/postgresql/pg16 --without-readline

make -j 4 && make install

✨2.5 配置环境变量

bash 复制代码
[pgsql@centos79 ~]$ cd
[pgsql@centos79 ~]$ pwd
/home/pgsql

cat >> ~/.bash_profile <<"EOF"
export LANG=en_US.UTF-8
export PS1="[\u@\h \W]\$ "
export PGPORT=5432
export PGDATA=/postgresql/pgdata
export PGHOME=/postgresql/pg16
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH:.
export DATE=`date +"%Y%m%d%H%M"`
export MANPATH=$PGHOME/share/man:$MANPATH
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres
alias psql='rlwrap psql' 
EOF

[pgsql@centos79 ~]$ source  ~/.bash_profile

✨2.6 初始化安装

su - pgsql

/postgresql/pg16/bin/initdb -D /postgresql/pgdata -E UTF8 --locale=en_US.utf8 -U postgres

/postgresql/pg16/bin/pg_ctl -D /postgresql/pgdata -l logfile start

📣3.PG16启动使用

[root@centos79 /]# su - pgsql

[pgsql@centos79 ~]$ pg_ctl start

[pgsql@centos79 ~]$ pg_ctl status

[pgsql@centos79 ~]$ pg_ctl stop

[pgsql@centos79 ~]$ netstat -anp | grep 5432

bash 复制代码
[pgsql@centos79 ~]$ cd /postgresql/pgdata/pg_log
[pgsql@centos79 pg_log]$ ll
total 4
-rw-------. 1 pgsql pgsql 618 Sep 25 08:28 postgresql-Mon.log
[pgsql@centos79 pg_log]$ more postgresql-Mon.log
2023-09-25 08:28:45.167 CST [14533] LOG:  starting PostgreSQL 16.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
2023-09-25 08:28:45.168 CST [14533] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2023-09-25 08:28:45.169 CST [14533] LOG:  listening on IPv6 address "::", port 5432
2023-09-25 08:28:45.170 CST [14533] LOG:  listening on Unix socket "/postgresql/pgdata/.s.PGSQL.5432"
2023-09-25 08:28:45.173 CST [14537] LOG:  database system was shut down at 2023-09-25 08:25:07 CST
2023-09-25 08:28:45.175 CST [14533] LOG:  database system is ready to accept connections
bash 复制代码
[pgsql@centos79 ~]$ psql
psql (16.0)
Type "help" for help.

postgres=# \l
                                                      List of databases
   Name    |  Owner   | Encoding | Locale Provider |  Collate   |   Ctype    | ICU Locale | ICU Rules |   Access privileges   
-----------+----------+----------+-----------------+------------+------------+------------+-----------+-----------------------
 postgres  | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | 
 template0 | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | =c/postgres          +
           |          |          |                 |            |            |            |           | postgres=CTc/postgres
 template1 | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | =c/postgres          +
           |          |          |                 |            |            |            |           | postgres=CTc/postgres
(3 rows)
相关推荐
Minxinbb27 分钟前
MySQL中Performance Schema库的详解(上)
数据库·mysql·dba
mmsx1 小时前
android sqlite 数据库简单封装示例(java)
android·java·数据库
zpjing~.~2 小时前
Mongo 分页判断是否有下一页
数据库
2401_857600952 小时前
技术与教育的融合:构建现代成绩管理系统
数据库·oracle
秋恬意3 小时前
Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别
java·数据库·mybatis
潇湘秦3 小时前
一文了解Oracle数据库如何连接(1)
数据库·oracle
雅冰石3 小时前
oracle怎样使用logmnr恢复误删除的数据
数据库·oracle
web前端神器3 小时前
mongodb给不同的库设置不同的密码进行连接
数据库·mongodb
从以前3 小时前
Berlandesk 注册系统算法实现与解析
数据库·oracle
Muko_0x7d23 小时前
Mongodb
数据库·mongodb