前期准备
先删除现有的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 命令查看端口情况