TimescaleDB部署

本文安装主要分为两步:

(1)PostgresSQL数据库安装

(2)TimescaleDB插件安装编译(cmake)

1、系统及相关版本要求
操作系统: CentOS 7 64位操作系统

安装程序: postgresql-10.2.tar.gz

Timescale: timescaledb 1.0(只支持pgsql9.x和10.x)

Timescale release_tag: 1.0.0

cmake: cmake-3.10.2.tar(Timescale要求CMake 3.4或更高版本)
2、部署

Timescale的安装分为两部分:

(1)PostgresSQL安装部署

(2)TimescaleDB插件编译安装

2.1、部署PostgresSQL

下载安装包

现将 PostgreSQL 的安装包下载到服务器器中,我们在 /opt/⽬目录下创建保存安装包的目录/postgresql_pkg。

此处选择直接从服务器器下载 PostgreSQL 安装包。

执⾏命令:

mkdir /opt/postgresql_pkg
cd /opt/postgresql_pkg
wget https://ftp.postgresql.org/pub/source/v10.2/postgresql-10.2.tar.gz
安装编译环境
yum install -y gcc gcc-c++  epel-release llvm5.0 llvm5.0-devel clang libicu-devel perl-ExtUtils-Embed zlib-devel openssl openssl-devel pam-devel libxml2-devel libxslt-devel openldap-devel systemd-devel tcl-devel python-devel

yum install -y llvm5.0 llvm5.0-devel
关闭selinux

在Linux系统中,如果selinux没有设置为permissive或者是disable的情况下,有些Linux系统上的应用程序运行时可能会被拒绝,导致无法正常运行,所以需要关闭selinux(如果有专业运维人员可以进行详细配置来规避此问题)。

执行命令:

vim /etc/selinux/config

修改内容:

SELINUX=disable
#SELINUXTYPE=targeted

创建用户

需要注意的是PostgresSQL是禁止使用超级管理员来运行服务命令的,所以我们需要创建一个账号来进行后续的PostgresSQL的安装。

我们创建一个用户组,向创建的用户组中添加一个用户账号,并且给该用户创建密码。

执行命令:

groupadd postgres
useradd -g postgres postgres
passwd postgres
创建安装目录

创建 PostgreSQL需要的⽬录,并且为⽬录 /data/db1 赋予读写权限。

mkdir -p /data/db1/pgdata/pgsql /data/db1/pgdata/pgtbs /data/db1/archivelog /data/backups
chmod -R 775 /mnt/db1
chown -R postgres:postgres /data/db1
编译安装

进入保存 PostgreSQL 安装包的目录 /opt/postgresql_pkg,解压、编译、安装等操作

执行命令:

> cd /opt/postgresql_pkg

进入保存安装包的目录之后,解压安装包并进入解压后的目录。

执行命令:

tar -zxvf ./postgresql-12.0.tar.gz
mkdir -p ./postgresql-12.0/build_dir
cd ./postgresql-12.0/build_dir
开始编译
> ../configure --prefix=/usr/local/pgsql --without-readline --with-openssl
> make world
> make install

编译过程中出现以下问题可安装相关编译依赖:

部署高可用 Mariadb timescaledb高可用部署_安装包

yum install zlib-devel;

部署高可用 Mariadb timescaledb高可用部署_postgresql_02

yum -y install openssl-devel
创建启动配置

添加启动配置文件。

执行命令

vim /usr/lib/systemd/system/postgresql-10.service
[Unit]
Description=PostgreSQL 10 database server
Documentation=https://www.postgresql.org/docs/10/static/
After=syslog.target
After=network.target
 
[Service]
Type=notify
User=postgres
Group=postgres
Environment=PGDATA=/data/db1/pgdata/pgsql/
OOMScoreAdjust=-1000
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0
ExecStart=/usr/local/pgsql/bin/postmaster -D ${PGDATA}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
 
[Install]
WantedBy=multi-user.target
配置环境变量
vim /etc/profile

内容:

export PGPORT=5432
export PGHOME=/usr/local/pgsql
export PGDATA=/data/db1/pgdata/pgsql
export PATH=$PGHOME/bin:$PATH
export MANPATH=$PGHOME/share/man:$MANPATH
export LANG=en_US.UTF-8
export DATE='date +"%Y%m%d%H%M"'
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres
环境变量生效
source /etc/profile
初始化数据库

初始化 PostgreSQL数据库,切换账号到postgres,进行初始化操作。

> su - postgres
> initdb -D $PGDATA -U postgres --locale=en_US.UTF8 -E UTF8

需要注意的是,如果此处没有切换账号,仍然使用root账号进行初始化时,会反馈错误信息,无法初始化数据库。

可能报出错误信息如下:

initdb: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.

报出此错误时需要先执行切换用户命令。

修改数据库参数

修改监听地址权限、端口等信息。

> vi /data/db1/pgdata/pgsql/postgresql.conf

需要修改如下内容:

listen_addresses = '*'
unix_socket_directories = '.'
port = 5432

修改访问权限

> vi /data/db1/pgdata/pgsql/pg_hba.conf

添加如下命令

host    all     all     0.0.0.0/0     trust

所有配置文件修改成功后,执行 exit命令退出 postgres用户。

> exit

设置防火墙规则(无防火墙可不设置)

> firewall-cmd --zone=public --add-port=5432/tcp --permanent
> firewall-cmd --reload
设置开机自启动

设置开机自动启动服务,并且启动PostgreSQL服务。

> systemctl enable postgresql-10.service
> systemctl start postgresql-10.service

至此PostgreSQL已经安装成功并且启动。

2.2、部署TimescaleDB

安装Cmake

在当前操作系统中检查是否安装了Cmake,如果已经安装,并且版本高于3.4则跳过本操作。

查看版本号命令:

> cmake --version

如果已经安装了Cmake并且版本低于3.4则需要卸载Cmake重新安装更高版本。

卸载Cmake命令:

> yum -y remove cmake

开始安装高版本的Cmake,此处选择版本号为3.10.2。通过wget命令获取安装包,并且进行解压。

wget https://cmake.org/files/v3.10/cmake-3.10.2.tar.gz
tar -zxvf cmake-3.10.2.tar.gz && cd cmake-3.10.2

开始编译安装Cmake。

执行命令:

> ./bootstrap
> gmake
> gmake install

查看编译后的cmake版本

执行命令:

> /usr/local/bin/cmake --version

新建软连接

执行命令:

> ln -s /usr/local/bin/cmake /bin/

终端查看版本

执行命令:

> cmake --version

出现版本表示成功!

cmake编译完成。

获取TimescaleDB

通过git命令获取TimescaleDB的安装包。

进入PostgresSQL的安装目录(是否存在强制要求,暂时不确定,不过可以直接放到PostgresSQL的安装目录之下),下载TimescaleDB。

git clone https://github.com/timescale/timescaledb/
cd timescaledb

编译TimescaleDB

此操作最容易发生错误,如果发生错误,请仔细查看错误日志。错误日志上都会有详细的错误信息。

开始编译TimescaleDB

执行命令:

> ./bootstrap
> cd ./build && make  
> make install

配置postgresql.conf,在数据库启动时自动加载timescale lib库。

vi $PGDATA/postgresql.conf

添加:

shared_preload_libraries = 'timescaledb'

切换用户重启数据库:

su postgres

pg_ctl restart -m fast

退出postgres用户,启动pgsql

[postgres@localhost ~]$ exit
logout
[root@localhost build]# psql
psql (10.2)
Type "help" for help.

postgres=# create extension timescaledb;

出现以下界面则创建成功:

部署高可用 Mariadb timescaledb高可用部署_部署高可用 Mariadb_03

出现上面界面表示TimescaleDB安装成功