前期準(zhǔn)備
先刪除現(xiàn)有的PostgreSQL 比如13
使用 sudo yum remove postgresql13-server postgresql13-contrib 該命令將會(huì)刪除安裝包及其依賴項(xiàng)。
卸載完成后,為了確保 PostgreSQL 相關(guān)的文件和目錄也被清理干凈,
使用 sudo rm -rf /var/lib/pgsql/13 命令來刪除 PostgreSQL 數(shù)據(jù)目錄。
這個(gè)目錄通常是用于存儲(chǔ)數(shù)據(jù)庫文件的。
安裝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 是一個(gè)命令,它有以下含義:
curl:這是一個(gè)命令行工具,用于從網(wǎng)絡(luò)上獲取文件或頁面的內(nèi)容。
-s:表示靜默模式,即不顯示進(jìn)度或錯(cuò)誤信息。
https://packagecloud.io/install/repositories/timescale/timescaledb/script.rpm.sh 是一個(gè) URL 鏈接,指向一個(gè)腳本文件。
|:這個(gè)管道符號(hào)將 curl 命令的輸出(腳本文件的內(nèi)容)傳遞給下一個(gè)命令。
sudo bash:這是另一個(gè)命令,用于以超級(jí)用戶權(quán)限執(zhí)行命令。在這種情況下,所執(zhí)行的命令是 bash。
該命令的目的是下載一個(gè)腳本文件并以超級(jí)用戶權(quán)限運(yùn)行該腳本。腳本位于 https://packagecloud.io/install/repositories/timescale/timescaledb/script.rpm.sh 的地址上。該腳本可能用于添加 TimescaleDB 數(shù)據(jù)庫的軟件源到您的系統(tǒng)中。通過運(yùn)行該命令,您可以自動(dòng)配置 TimescaleDB 軟件包的安裝和更新。
2:安裝
sudo yum install timescaledb-2-postgresql-15-2.11.2-0.el7.x86_64
3:?jiǎn)?dòng)postgresql-15
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
4:運(yùn)行出現(xiàn)錯(cuò)誤,可能有以下幾種情況:
- 軟件包未正確安裝,使用以下命令檢查是否安裝:
rpm -qi postgresql15-server
- 系統(tǒng)認(rèn)識(shí)不到服務(wù):執(zhí)行以下命令以刷新系統(tǒng)服務(wù)列表,并重試啟用 PostgreSQL 15 服務(wù):
sudo systemctl daemon-reload
sudo systemctl start postgresql-15
- 查看詳細(xì)的錯(cuò)誤信息:
sudo systemctl status postgresql-15.service
- 檢查日志文件:
journalctl -xe
在輸出中搜索與 PostgreSQL 15 服務(wù)相關(guān)的任何錯(cuò)誤消息并進(jìn)行分析。
添加 timescaledb 插件
1:添加timescaledb 過程中可能出現(xiàn) $PATH錯(cuò)誤
exit: could not execute pg_config --version: exec: "pg_config": executable file not found in $PATH
pg_config 是 PostgreSQL 的一個(gè)可執(zhí)行文件,用于獲取有關(guān) PostgreSQL 安裝的信息。如果已經(jīng)安裝了 PostgreSQL,那么很可能 pg_config 在系統(tǒng)上是可用的,只是沒有包含在 $PATH 環(huán)境變量中。
使用 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
- 保存文件后,運(yùn)行 source 命令或重新啟動(dòng)終端以使更改生效。
source ~/.bashrc
- 驗(yàn)證是否成功將 pg_config 添加到 $PATH:
pg_config --version
如果一切正常,將顯示 pg_config 的版本信息
2:添加timescaledb 過程中可能出現(xiàn)extension "timescaledb" must be preloaded
這個(gè)錯(cuò)誤表明在使用 TimescaleDB 擴(kuò)展之前,需要在 PostgreSQL 的配置文件中預(yù)加載 timescaledb 庫。修改 PostgreSQL 的配置文件 postgresql.conf 并添加 timescaledb 到 shared_preload_libraries 的列表中:
- vi打開 /var/lib/pgsql/15/data/postgresql.conf 文件。
在配置文件中找到名為 shared_preload_libraries 的設(shè)置行。
將其值修改為 'timescaledb'。確保在多個(gè)庫名稱之間使用逗號(hào)進(jìn)行分隔,不要?jiǎng)h除已經(jīng)存在的其他庫。例如,修改后的設(shè)置行可能如下所示:
shared_preload_libraries = 'timescaledb, other_library'
保存更改,并關(guān)閉文件編輯器。
- 重新啟動(dòng) PostgreSQL 服務(wù),以使更改生效。
sudo systemctl restart postgresql-15
3:進(jìn)入 PostgreSQL 控制臺(tái)添加timescaledb
sudo -u postgres psql
在 PostgreSQL 控制臺(tái)中運(yùn)行以下命令安裝 TimescaleDB 擴(kuò)展:
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=#
后期配置
要使其他機(jī)器能夠訪問 PostgreSQL-15 數(shù)據(jù)庫,需要修改 postgresql.conf及 pg_hba.conf 文件的配置。修改postgresql.conf (/var/lib/pgsql/15/data/)
#listen_addresses = 'localhost'
將注釋符號(hào)“#”去掉,并將其更改為:
listen_addresses = '*'
修改pg_hba.conf
該文件位于 PostgreSQL 的數(shù)據(jù)目錄下(通常是
/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
- 如果還是不能鏈接確保您已經(jīng)配置了適當(dāng)?shù)姆阑饓σ?guī)則,允許 PostgreSQL 的5432端口
sudo systemctl reload postgresql-15.service
說明:
在 PostgreSQL 中,有幾種不同的身份驗(yàn)證方法可供選擇,其中包括 trust、peer 和 ident。
trust:使用該方法時(shí),用戶可以無需密碼直接訪問數(shù)據(jù)庫。這是最不安全的身份驗(yàn)證方法,因?yàn)槿魏沃肋B接信息的人都可以登錄到數(shù)據(jù)庫。因此,在生產(chǎn)環(huán)境中不建議使用 trust 身份驗(yàn)證方法。
peer:該方法適用于本地連接。當(dāng)操作系統(tǒng)用戶名與數(shù)據(jù)庫角色名稱匹配時(shí),用戶可以無需輸入密碼訪問數(shù)據(jù)庫。這意味著只有具有相同用戶名的本地用戶才能進(jìn)行無密碼訪問。
ident:該方法也適用于本地連接,并要求通過 UNIX 文件系統(tǒng)中的標(biāo)識(shí)文件(通常是 /etc/passwd)進(jìn)行驗(yàn)證。當(dāng)操作系統(tǒng)用戶名與數(shù)據(jù)庫角色名稱匹配且請(qǐng)求連接的主機(jī)地址與數(shù)據(jù)庫服務(wù)器主機(jī)地址匹配時(shí),用戶可以無需輸入密碼訪問數(shù)據(jù)庫。但是,請(qǐng)注意,ident 方法在網(wǎng)絡(luò)連接中并不安全,因此不建議在生產(chǎn)環(huán)境中使用。
總結(jié)起來,如果希望在特定 IP 范圍內(nèi)允許無密碼訪問,可以使用 trust 身份驗(yàn)證方法。
對(duì)于本地連接,可以考慮使用 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命令列出所有正在監(jiān)聽的端口和相應(yīng)的服務(wù)。
netstat -tuln | grep LISTEN
使用ss命令可以提供更詳細(xì)的連接狀態(tài)信息。
ss -tuln | grep LISTEN
使用lsof命令會(huì)顯示與指定端口關(guān)聯(lián)的進(jìn)程信息。
lsof -i :<port>
使用firewall-cmd命令(僅當(dāng)使用Firewalld防火墻時(shí)):
firewall-cmd --list-ports
該命令將顯示防火墻中允許通過的端口列表。
客戶端機(jī)器用 telnet PostgreSQL-IP 5432 命令查看端口情況