一、版本信息
|
|
---|---|
Postgresql | 14.5 |
timescaledb | 2.8.1 |
二、部署架构
主机及IP地址
Hostname
|
IP Address
|
别名
|
---|---|---|
pg02 | 192.168.11.222 | AN |
pg03 | 192.168.11.223 | DN1 |
pg04 | 192.168.11.224 | DN2 |
架构图
三、安装部署
1) 安装准备
(1)上传 kafka 安装包并解压文件
tar -zxvf postgres-rpm. tar .gz |
(2)执行do.sh安装脚本
bash do .sh |
(3)初始化数据库
postgresql-14-setup initdb |
2) 配置修改
(1)编辑postgresql配置文件
vim /var/lib/pgsql/14/data/postgresql .conf # 修改下面配置项 listen_addresses = '*' # pg监听的IP port = 5432 # 连接端口号 max_connections = 300 # 最大连接数,按需修改 superuser_reserved_connections = 10 # 超级用户预留连接数 password_encryption = md5 # 密码加密方式 shared_buffers = 16GB # 数据页缓冲区大小,一般设置为系统内存的25% maintenance_work_mem = 2GB # 例行维护任务(如VACUUM、CREATE INDEX等)的内存使用量 wal_level = replica # 预写日志信息级别 wal_log_hints = on # 当这个参数为on时,PostgreSQL服务器一个检查点之后页面被第一次修改期间把该磁盘页面的整个内容都写入 WAL wal_buffers = 512MB # 未写入磁盘的 WAL 数据的共享内存量,一般设置为shared_buffers的 1/32 effective_cache_size = 48GB # 查询规划器使用,一般设置为系统内存的75% log_destination = 'stderr' # 日志输出格式 logging_collector = on log_directory = 'log' # 日志存放目录,相对路径 log_filename = 'postgresql-%a.log' # 日志文件命名方式 log_rotation_age = 1d # 日志生命周期 log_rotation_size = 0 # log_truncate_on_rotation = on # 已存在文件进行覆盖 log_min_duration_statement = 30000 log_line_prefix = '%m [%p] %u %d %r ' shared_preload_libraries = 'timescaledb,pg_stat_statements' pg_stat_statements.max = 10000 pg_stat_statements.track = all |
(2)编辑postgresql访问权限控制文件,根据自己实际信息修改
vim /var/lib/pgsql/14/data/pg_hba .conf # TYPE DATABASE USER ADDRESS METHOD host all all 192.168.11.0 /24 md5 |
(3)配置用户
# 启动数据库 systemctl start postgresql-14 # 切换到postgres用户 su - postgres # 连接到数据库 psql # 修改postgres用户密码 postgres= # alter user postgres with encrypted password 'Postgres'; |
3) 启用timescaledb插件
登录数据库,执行下面sql
# 添加扩展插件 CREATE EXTENSION timescaledb; |
在AN节点执行
# 为分布式超表添加数据节点 SELECT add_data_node( 'dn1' , '192.168.11.223' , 'MSDB' ,5432, false , true , 'Postgres' ); SELECT add_data_node( 'dn2' , '192.168.11.224' , 'MSDB' ,5432, false , true , 'Postgres' ); # 创建分布式超级表 SELECT create_distributed_hypertable( 'conditions' , 'time' , 'location' ); |