前期準備
先刪除現有的PostgreSQL 比如13
使用 sudo yum remove postgresql13-server postgresql13-contrib 該命令將會刪除安裝包及其依賴項。
卸載完成后,為了確保 PostgreSQL 相關的文件和目錄也被清理干凈,
使用 sudo rm -rf /var/lib/pgsql/13 命令來刪除 PostgreSQL 數據目錄。
這個目錄通常是用于存儲數據庫文件的。
安裝timescaledb
1:找到rpm
https://packagecloud.io/timescale/timescaledb/packages/el/7/timescaledb-2-postgresql-15-2.11.2-0.el7.x86_64.rpm?distro_version_id=140
2:下載源配置
curl -s https://packagecloud.io/install/repositories/timescale/timescaledb/script.rpm.sh | sudo bash
說明:
curl -s https://packagecloud.io/install/repositories/timescale/timescaledb/script.rpm.sh | sudo bash 是一個命令,它有以下含義:
curl:這是一個命令行工具,用于從網絡上獲取文件或頁面的內容。
-s:表示靜默模式,即不顯示進度或錯誤信息。
https://packagecloud.io/install/repositories/timescale/timescaledb/script.rpm.sh 是一個 URL 鏈接,指向一個腳本文件。
|:這個管道符號將 curl 命令的輸出(腳本文件的內容)傳遞給下一個命令。
sudo bash:這是另一個命令,用于以超級用戶權限執行命令。在這種情況下,所執行的命令是 bash。
該命令的目的是下載一個腳本文件并以超級用戶權限運行該腳本。腳本位于 https://packagecloud.io/install/repositories/timescale/timescaledb/script.rpm.sh 的地址上。該腳本可能用于添加 TimescaleDB 數據庫的軟件源到您的系統中。通過運行該命令,您可以自動配置 TimescaleDB 軟件包的安裝和更新。
2:安裝
sudo yum install timescaledb-2-postgresql-15-2.11.2-0.el7.x86_64
3:啟動postgresql-15
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
4:運行出現錯誤,可能有以下幾種情況:
- 軟件包未正確安裝,使用以下命令檢查是否安裝:
rpm -qi postgresql15-server
- 系統認識不到服務:執行以下命令以刷新系統服務列表,并重試啟用 PostgreSQL 15 服務:
sudo systemctl daemon-reload
sudo systemctl start postgresql-15
- 查看詳細的錯誤信息:
sudo systemctl status postgresql-15.service
- 檢查日志文件:
journalctl -xe
在輸出中搜索與 PostgreSQL 15 服務相關的任何錯誤消息并進行分析。
添加 timescaledb 插件
1:添加timescaledb 過程中可能出現 $PATH錯誤
exit: could not execute pg_config --version: exec: "pg_config": executable file not found in $PATH
pg_config 是 PostgreSQL 的一個可執行文件,用于獲取有關 PostgreSQL 安裝的信息。如果已經安裝了 PostgreSQL,那么很可能 pg_config 在系統上是可用的,只是沒有包含在 $PATH 環境變量中。
使用 find 命令查找 pg_config的路徑
find / -name 'pg_config' 2>/dev/null
找到后通過vi編輯shell 配置文件,將 pg_config 所在的目錄添加到 $PATH 中。
- 打開
vi ~/.bashrc
- 如果 pg_config 的完整路徑是 /usr/local/pgsql/bin/pg_config
export PATH=$PATH:/usr/local/pgsql/bin
- 保存文件后,運行 source 命令或重新啟動終端以使更改生效。
source ~/.bashrc
- 驗證是否成功將 pg_config 添加到 $PATH:
pg_config --version
如果一切正常,將顯示 pg_config 的版本信息
2:添加timescaledb 過程中可能出現extension "timescaledb" must be preloaded
這個錯誤表明在使用 TimescaleDB 擴展之前,需要在 PostgreSQL 的配置文件中預加載 timescaledb 庫。修改 PostgreSQL 的配置文件 postgresql.conf 并添加 timescaledb 到 shared_preload_libraries 的列表中:
- vi打開 /var/lib/pgsql/15/data/postgresql.conf 文件。
在配置文件中找到名為 shared_preload_libraries 的設置行。
將其值修改為 'timescaledb'。確保在多個庫名稱之間使用逗號進行分隔,不要刪除已經存在的其他庫。例如,修改后的設置行可能如下所示:
shared_preload_libraries = 'timescaledb, other_library'
保存更改,并關閉文件編輯器。
- 重新啟動 PostgreSQL 服務,以使更改生效。
sudo systemctl restart postgresql-15
3:進入 PostgreSQL 控制臺添加timescaledb
sudo -u postgres psql
在 PostgreSQL 控制臺中運行以下命令安裝 TimescaleDB 擴展:
postgres=# CREATE database tutorial;
postgres=# c tutorial
tutorial=# CREATE EXTENSION IF NOT EXISTS timescaledb;
警告:
WELCOME TO
_____ _ _ ____________
|_ _(_) | | | _ ___
| | _ _ __ ___ ___ ___ ___ __ _| | ___| | | | |_/ /
| | | | _ ` _ / _ / __|/ __/ _` | |/ _ | | | ___
| | | | | | | | | __/__ (_| (_| | | __/ |/ /| |_/ /
|_| |_|_| |_| |_|___||___/_____,_|_|___|___/ ____/
Running version 2.11.2
For more information on TimescaleDB, please visit the following links:
1. Getting started: https://docs.timescale.com/timescaledb/latest/getting-started
2. API reference documentation: https://docs.timescale.com/api/latest
3. How TimescaleDB is designed: https://docs.timescale.com/timescaledb/latest/overview/core-concepts
Note: TimescaleDB collects anonymous reports to better understand and assist our users.
For more information and how to disable, please see our docs https://docs.timescale.com/timescaledb/latest/how-to-guides/configuration/telemetry.
CREATE EXTENSION
tutorial=#
后期配置
要使其他機器能夠訪問 PostgreSQL-15 數據庫,需要修改 postgresql.conf及 pg_hba.conf 文件的配置。修改postgresql.conf (/var/lib/pgsql/15/data/)
#listen_addresses = 'localhost'
將注釋符號“#”去掉,并將其更改為:
listen_addresses = '*'
修改pg_hba.conf
該文件位于 PostgreSQL 的數據目錄下(通常是
/var/lib/pgsql/15/data/pg_hba.conf 或者 /etc/postgresql/<version>/mAIn/pg_hba.conf)。
- 打開 pg_hba.conf 文件:
sudo vi /var/lib/pgsql/15/data/pg_hba.conf
- 添加
# IPv4 local connections:
host all all 10.168.1.0/24 tRust
- 保存文件并重新加載 PostgreSQL 配置:
sudo systemctl restart postgresql-15.service
- 如果還是不能鏈接確保您已經配置了適當的防火墻規則,允許 PostgreSQL 的5432端口
sudo systemctl reload postgresql-15.service
說明:
在 PostgreSQL 中,有幾種不同的身份驗證方法可供選擇,其中包括 trust、peer 和 ident。
trust:使用該方法時,用戶可以無需密碼直接訪問數據庫。這是最不安全的身份驗證方法,因為任何知道連接信息的人都可以登錄到數據庫。因此,在生產環境中不建議使用 trust 身份驗證方法。
peer:該方法適用于本地連接。當操作系統用戶名與數據庫角色名稱匹配時,用戶可以無需輸入密碼訪問數據庫。這意味著只有具有相同用戶名的本地用戶才能進行無密碼訪問。
ident:該方法也適用于本地連接,并要求通過 UNIX 文件系統中的標識文件(通常是 /etc/passwd)進行驗證。當操作系統用戶名與數據庫角色名稱匹配且請求連接的主機地址與數據庫服務器主機地址匹配時,用戶可以無需輸入密碼訪問數據庫。但是,請注意,ident 方法在網絡連接中并不安全,因此不建議在生產環境中使用。
總結起來,如果希望在特定 IP 范圍內允許無密碼訪問,可以使用 trust 身份驗證方法。
對于本地連接,可以考慮使用 peer 或 ident 方法
參考:
https://legacy-docs.timescale.com/v1.7/getting-started/installation/rhel-centos/installation-yum
https://legacy-docs.timescale.com/v1.7/getting-started/setup
https://packagecloud.io/constellio/constellio-updates/packages/el/7/libzstd-1.4.5-3.el7.x86_64.rpm
https://packagecloud.io/trifacta/dependencies/packages/el/7/postgresql12-server-12.5-1PGDG.rhel7.x86_64.rpm?page=5
SElinux策略限制:
setenforce 0
使?.NETstat命令列出所有正在監聽的端口和相應的服務。
netstat -tuln | grep LISTEN
使用ss命令可以提供更詳細的連接狀態信息。
ss -tuln | grep LISTEN
使用lsof命令會顯示與指定端口關聯的進程信息。
lsof -i :<port>
使用firewall-cmd命令(僅當使用Firewalld防火墻時):
firewall-cmd --list-ports
該命令將顯示防火墻中允許通過的端口列表。
客戶端機器用 telnet PostgreSQL-IP 5432 命令查看端口情況