📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
文章目录
- 前言
- 📣1 .新版本概述
- ✨ 1.1 性能改进
- ✨ 1.2 逻辑复制
- ✨ 1.3 开发者经验
- ✨1.4 监控
- ✨1.5 访问控制和安全
- 📣2 .PG16部署
- ✨2.1 安装包下载
- ✨2.2 创建用户
- ✨2.3 创建目录
- ✨2.4 编译
- ✨2.5 配置环境变量
- ✨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 配置环境变量
[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
[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
[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)