【PG16】后 EL 7 時代,PG 16 如何在 CentOS 7 上運行

↑ 關注“少安事務所”公眾號,歡迎?收藏,不錯過精彩內容~

本文寫于 2023-09-29

PostgreSQL 16 Released

9/14, PostgreSQL 16 正式發布。從發布公告^1 和 Release Notes^2 可以看到 PG16 包含了諸多新特性和增強改進。

  1. 性能提升,查詢計劃支持并行 FULLRIGHT 關聯。 ^3
  2. 邏輯復制,支持從 standby 服務器進行復制,支持訂閱者并行應用大事務,新增預定義角色 pg_create_subscription。 ^4
  3. 開發體驗,增加了 SQL/JSON 構造函數 ( JSON_ARRAY(), JSON_ARRAYAGG())和恒等函數 ( IS JSON)。 ^5
  4. 監控增強,增加 pg_stat_io 視圖,以支持監控 I/O 統計數據。 ^6

CentOS 7 上 RPM 安裝 PG16 (EOL)

一般情況下,在 CentOS 7 系統上安裝 PostgreSQL 只需要兩條 yum/dnf 命令即可。

sudo?yum?install?-y?https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo?yum?install?-y?postgresql16-server

但是從 PostgreSQL 16 開始,這種安裝方式在 CentOS 7 上已經被停用,所以執行上面兩條命令會看到下面的輸出。

No?package?postgresql16-server?available.
Error:?Nothing?to?do

從 yum 倉庫^7 也只能找到 rhel 8/9 的 postgresql16 rpm 包,并沒有 rhel 7。

其實相關信息 9 月初已在官方網站上發布了公告^8,或許只是注意到的人并不多。

EOL announcement for RHEL 7

PostgreSQL RPM repo stopped adding new packages to the PostgreSQL RPM repo as of Aug 2023, including PostgreSQL 16.

We will maintain older major releases until each major release is EOLed by PostgreSQL project. Please visit here for latest release dates for each major release.

If you have any questions, please either email to pgsql-pkg-yum@lists.postgresql.org, or create a ticket at our redmine.

那么,仍在使用 CentOS 7 的環境如何安裝、升級 PostgreSQL 16 呢?

Docker 運行 PG16(容易)

PostgreSQL 的官方 Docker 鏡像由 the PostgreSQL Docker Community ^9 維護,提供了 4 個 PG16 的鏡像,分別基于 Debian bullseye / Debian Bookworm / alpine3.17 / alpine3.18 。

演示步驟如下:

  1. 主機的操作系統為 CentOS 7。
$?hostnamectl
???Static?hostname:?centos7.shawnyan.cn
...
??Operating?System:?CentOS?Linux?7?(Core)
???????CPE?OS?Name:?cpe:/o:centos:centos:7
????????????Kernel:?Linux?3.10.0-1160.92.1.el7.x86_64
??????Architecture:?x86-64
  1. 拉取 PG16 的 Docker 鏡像。
[shawnyan@centos7?~]$?docker?pull?postgres:16
16:?Pulling?from?library/postgres
a803e7c4b030:?Pull?complete
5cf7cbd17f32:?Pull?complete
ddc24c6f1e18:?Pull?complete
2b0f4d94850a:?Pull?complete
fccb5b7554d1:?Pull?complete
1dd940c0e742:?Pull?complete
f641e2497276:?Pull?complete
9c05395a8e66:?Pull?complete
285e24d225ac:?Pull?complete
3faa43a5d9fc:?Pull?complete
482fc7a6b0f4:?Pull?complete
29ca5fe1b2a4:?Pull?complete
d3012096b6ce:?Pull?complete
Digest:?sha256:379b7a1223b394106cc20d18a5177ed77738003416057e8898cde10e6b7a082a
Status:?Downloaded?newer?image?for?postgres:16
docker.io/library/postgres:16

[shawnyan@centos7?~]$?docker?images?postgres
REPOSITORY???TAG???????IMAGE?ID???????CREATED??????SIZE
postgres?????16????????ec7f99c50d3c???8?days?ago???418MB
  1. 啟動 PG16 容器。
[shawnyan@centos7?~]$?docker?run?--name?pg16?-e?POSTGRES_HOST_AUTH_METHOD=trust?-d?postgres:16
e3bb74e44107d349f8a2c4a0f9ac9cb3aa4ac26e66bb930069b37c563cc815dd
[shawnyan@centos7?~]$?docker?ps
CONTAINER?ID???IMAGE????????????????COMMAND??????????????????CREATED?????????STATUS????????PORTS???????????????????????????????????????NAMES
e3bb74e44107???postgres:16??????????"docker-entrypoint.s…"???2?seconds?ago???Up?1?second???5432/tcp????????????????????????????????????pg16

這里需要注意的是,需要指定超管用戶的密碼,或者允許所有連接沒有密碼登陸,否則容器會啟動失敗。

[shawnyan@centos7?~]$?docker?logs?pg16
Error:?Database?is?uninitialized?and?superuser?password?is?not?specified.
???????You?must?specify?POSTGRES_PASSWORD?to?a?non-empty?value?for?the
???????superuser.?For?example,?"-e?POSTGRES_PASSWORD=password"?on?"docker?run".

???????You?may?also?use?"POSTGRES_HOST_AUTH_METHOD=trust"?to?allow?all
???????connections?without?a?password.?This?is?*not*?recommended.

???????See?PostgreSQL?documentation?about?"trust":
???????https://www.postgresql.org/docs/current/auth-trust.html
  1. 連接 PG16。

通過 psql 連接 PG16,并查看版本信息。

[shawnyan@centos7?~]$?docker?exec?-it?pg16?psql?-U?postgres
psql?(16.0?(Debian?16.0-1.pgdg120+1))
Type?"help"?for?help.

postgres=#?select?version();
???????????????????????????????????????????????????????version
---------------------------------------------------------------------------------------------------------------------
?PostgreSQL?16.0?(Debian?16.0-1.pgdg120+1)?on?x86_64-pc-linux-gnu,?compiled?by?gcc?(Debian?12.2.0-14)?12.2.0,?64-bit
(1?row)

postgres=#?select?'Hi,?PG16~';
??column?
-----------
?Hi,?PG16~
(1?row)

在 CentOS 7 上編譯 PG16 源碼(進階)

PG16 在 CentOS 7 上的源碼編譯步驟與 PG15 類似 。

  1. 下載 PG16 的源碼,并進行編譯、安裝。
wget?https://mirrors.neusoft.edu.cn/postgresql/source/v16.0/postgresql-16.0.tar.gz
tar?zxf?postgresql-16.0.tar.gz
cd?postgresql-16.0/
./configure?--prefix=/opt/postgresql?--with-extra-version="-ShawnYan"
make?-j?$(nproc)?world
make?install-world
  1. 初始化 PG16。
$?initdb?--pgdata="$PGDATA"
The?files?belonging?to?this?database?system?will?be?owned?by?user?"postgres".
This?user?must?also?own?the?server?process.

The?database?cluster?will?be?initialized?with?locale?"en_US.UTF-8".
The?default?database?encoding?has?accordingly?been?set?to?"UTF8".
The?default?text?search?configuration?will?be?set?to?"english".

Data?page?checksums?are?disabled.

fixing?permissions?on?existing?directory?/data/pg16/data?...?ok
creating?subdirectories?...?ok
selecting?dynamic?shared?memory?implementation?...?posix
selecting?default?max_connections?...?100
selecting?default?shared_buffers?...?128MB
selecting?default?time?zone?...?Asia/Tokyo
creating?configuration?files?...?ok
running?bootstrap?script?...?ok
performing?post-bootstrap?initialization?...?ok
syncing?data?to?disk?...?ok

initdb:?warning:?enabling?"trust"?authentication?for?local?connections
initdb:?hint:?You?can?change?this?by?editing?pg_hba.conf?or?using?the?option?-A,?or?--auth-local?and?--auth-host,?the?next?time?you?run?initdb.

Success.?You?can?now?start?the?database?server?using:

????pg_ctl?-D?/data/pg16/data?-l?logfile?start

  1. 啟動 PG16。
$?pg_ctl?-D?/data/pg16/data?-l?logfile?start
waiting?for?server?to?start....?done
server?started
  1. 查看版本信息。
$?psql
psql?(16.0-ShawnYan)
Type?"help"?for?help.

postgres=#?select?version();
?????????????????????????????????????????????????????version
------------------------------------------------------------------------------------------------------------------
?PostgreSQL?16.0-ShawnYan?on?x86_64-pc-linux-gnu,?compiled?by?gcc?(GCC)?4.8.5?20150623?(Red?Hat?4.8.5-44),?64-bit
(1?row)

到此,PG16 已在 CentOS 7 上安裝完成。

總結

CentOS 7 的時代即將結束,將來如何選擇操作系統,是選用 Redhat、Rocky Linux、Ubuntu,還是云廠商的 Linux ?

或許,在考慮升級 PG 版本的同時,也是時候該考慮一下 OS 的版本了。

🌻 往期精彩 ▼

  • 從 PG 技術峰會南京站汲取的那些干貨
  • PG 擴展推薦:pgpasswd & PG 密碼長度
  • 即將告別PG 12,建議升級到PG 16.3版本
  • PG Style! 盤點幾個常用的 Postgres 環境變量

-- / END / --

alt

如果這篇文章為你帶來了靈感或啟發,就請幫忙點『贊』or『在看』or『轉發』吧,感謝!(??????)

本文由 mdnice 多平臺發布

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17800.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

快速核對兩個表格數據

快速核對兩個表格數據的方法取決于數據的規模、復雜性以及你使用的工具。以下是一些常見的方法: 使用Excel或其他電子表格軟件: VLOOKUP 或 HLOOKUP 函數:這些函數可以在一個表格中查找與另一個表格匹配的值,并返回對應的結果。條件格式&…

Genzai:一款針對物聯網安全的多功能實用性工具套件

關于Genzai Genzai是一款針對物聯網安全的多功能實用性工具套件,該工具旨在識別與物聯網相關的儀表盤,并掃描它們以查找默認密碼和安全問題,廣大研究人員可以使用該工具來檢測和提升物聯網設備的安全性。 Genzai支持用戶以輸入的形式提供一個…

npm install安裝時卡死時嘗試切換npm鏡像地址

當使用npm時,為了提高下載速度和穩定性,特別是針對國內的開發者,經常需要配置國內的鏡像源,如淘寶npm鏡像。以下是如何添加淘寶源等鏡像內容的詳細步驟和說明: 1. 淘寶npm鏡像地址 淘寶npm鏡像的地址在2022年6月30日…

簡愛的思維導圖怎么做?從這三個角度

簡愛的思維導圖怎么做?《簡愛》作為夏洛蒂勃朗特的代表作,不僅是一部經典的愛情小說,也是探索女性獨立與自我成長的文學巨著。為了深入理解這部作品,制作思維導圖是一種高效的學習和分析工具。以下是三種不同的角度來創建《簡愛》…

探討開源與閉源大模型在AI領域的發展前景與挑戰

一、引言 隨著人工智能(AI)技術的飛速發展,大模型已成為推動AI技術進步的核心動力。在AI大模型的發展過程中,開源與閉源兩種不同的發展路徑各自展現出了獨特的發展前景與挑戰。本文將深入探討這兩種路徑在AI領域的發展前景&#…

在馬達驅動上的MOS產品選型分析與應用

電機的應用非常廣泛,可以說大部分動的產品內部都有電機的身影,其主要的應用領域有風機、泵、散熱風扇、電動工具、智能家居、以及汽車應用等等。隨著各國出臺了更加嚴格的用電標準,節能電機成為了市場關注的熱點,而BLDC電機具有高…

K8S集群中Yaml文件詳解

目錄 一、Yaml概述 二、Yaml基本語法 三、Yaml數據結構 四、K8S資源清單描述方法 五、api資源版本標簽 六、Yaml文件示例詳解 1.deployment.yaml文件詳解 2.Pod yaml文件詳解 3.Service yaml文件詳解 七、Yaml文件相關操作 1.試運行 2.生成yaml格式 3.生成json格式…

手搓順序表(C語言)

目錄 SeqList.h SeqList.c 頭插尾插復用任意位置插入 頭刪尾刪復用任意位置刪除 SLtest.c 測試示例 順序表優劣分析 SeqList.h //SeqList.h#pragma once#include <stdio.h> #include <assert.h> #include <stdlib.h> #define IN_CY 3typedef int S…

深入分析C#中的“編寫器”概念——代碼修改、注解與重構

文章目錄 1. 編寫器&#xff08;Writer&#xff09;的概念2. 編寫器的作用和工作原理3. 編寫器的重要性4. 寫入器常用方法5. 寫入器示例6. 編寫器示例——使用Fody進行代碼注解和重構7. 總結 在軟件開發過程中&#xff0c;代碼的維護和更新是至關重要的。C#作為一種流行的編程語…

單詞學習——不斷更新

suppress: sup - press 抑制&#xff0c;鎮壓 subtle: sub - tle 微妙的 suspend: sus - pend 延緩&#xff0c;懸掛 supplement: sup - ple - ment: 補充 suspicious: sus - pi - cious 可疑的 depress: de -press 壓抑 emit: e - mit 發出 entail: en - tail 涉及 fo…

3.00001 postgres如何初始化系統參數?

文章目錄 加載參數整體流程參數結構舉例&#xff1a;ConfigureNamesBool 初始化參數 InitializeGUCOptionsbuild_guc_variablesInitializeOneGUCOptionInitializeGUCOptionsFromEnvironment 命令行添加SelectConfigFiles配置 加載參數整體流程 我們先看下guc參數是如何管理的。…

VUE3 學習筆記(6):data數據的監聽、表單綁定、操作DOM

data數據的監聽&#xff08;偵聽&#xff09; 對于data的值的監聽&#xff0c;可以用watch中與data中的參數命名一致的值做為函數進行獲取監聽變動前后的值再做邏輯判斷&#xff0c;如下圖所示。 示例代碼 <template><div><p :class"classDemo">{…

npm install 出錯,按照版本不匹配解決

一、現象 npm install npm WARN config global --global, --local are deprecated. Use --locationglobal instead. npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: panshi-main-web0.1.0 npm ERR! Found…

七大獲取免費https的方式

想要實現https訪問最簡單有效的的方法就是安裝SSL證書。只要證書正常安裝上以后&#xff0c;瀏覽器就不會出現網站不安全提示或者訪問被攔截的情況。下面我來教大家怎么去獲取免費的SSL證書&#xff0c;又如何安裝證書實現https訪問。 一、選擇免費SSL證書提供商 有多家機構提…

C#數據類型變量、常量

一個變量只不過是一個供程序操作的存儲區的名字。 在 C# 中&#xff0c;變量是用于存儲和表示數據的標識符&#xff0c;在聲明變量時&#xff0c;您需要指定變量的類型&#xff0c;并且可以選擇性地為其分配一個初始值。 在 C# 中&#xff0c;每個變量都有一個特定的類型&…

頭歌OpenGauss數據庫-I.復雜查詢第10關:換座位

任務描述 本關任務&#xff1a;改變相鄰倆學生的座位。 小美是一所中學的信息科技老師&#xff0c;她有一張 tb_Seat座位表&#xff0c;平時用來儲存學生名字和與他們相對應的座位 id。 tb_Seat表結構數據如下&#xff1a; idname1Elon2Donny3Carey4Karin5Larisa 現在小美想改變…

規則引擎 | 減少判斷嵌套

文章目錄 目前市面上具體的規則引擎產品有&#xff1a;droolsVisualRulesEasy RulesMandaraxIBM iLog其中使用最為廣泛并且開源的是drools

windows驅動開發-PCI討論(二)

認識PCI設備&#xff0c;還是要從配置空間說起&#xff0c;當PCI在ACPI和PCI復合體上電和枚舉完成后&#xff0c;PCI根復合體會從PCI設備讀出PCI設備的配置空間&#xff0c;許多信息(例如寄存器、內存空間、中斷信息等等)都是是從配置空間獲取的&#xff0c;所以接下來會詳細講…

動手學操作系統(三、通過IO接口直接控制顯卡)

動手學操作系統&#xff08;三、通過IO接口直接控制顯卡&#xff09; 在之前的學習內容中&#xff0c;我們成功編寫了MBR主引導記錄&#xff0c;在終端上進行了打印顯示&#xff0c;在這一節我們使用MBR通過IO接口來直接控制顯卡輸出字符。 文章目錄 動手學操作系統&#xff0…

PostgreSQL Windows 數據庫主從模式 熱同步

1.操作主服務器 1.1修改pg_hba.conf // 這邊就設置所有用戶&#xff0c;所有ip都可以交互 host replication all 0.0.0.0/0 md52.2 創建流復制用戶 // 創建流復制用戶replicator CREATE USER replica REPLICATION LOGIN PASSWORD replica…