posgreaql16.8编译安装power

已邀请:

1、yum安装源码编译所需依赖  

## 

python-devel 没有
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel gcc-c++ openssl-devel cmake

http://nccloud.yytimes.com/uploads/answer/20250427/2992feca8be5845d418e67757893d489.png




2、编译 ./configure --prefix=/data/pgsql --without-icu  (先切换到pg的源码目录)


http://nccloud.yytimes.com/uploads/answer/20250427/a43fd3617257b14ff29efde4f9069f98.png

#安装,-j为指定CPU核数,可根据主机CPU适当更改
make -j 20 && make install
http://nccloud.yytimes.com/uploads/answer/20250427/46de2af219ab35b134c1e7056513f9c0.png

3、pg环境变量配置
#此处环境变量为用户变量,可自定义pg的起停用户,以user用户为例
useradd user
mkdir /data/pgsql/data
chown -R user.user /data/pgsql/data
#此时需修改user用户环境变量
vim /home/user/.bash_profile
#添加以下几行,/data/pgsql为编译时指定的安装目录
export PGHOME=/data/pgsql
export PGDATA=/data/pgsql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin

4、数据库初始化
#因已经配好环境变量,可直接执行相对路径命令初始化
initdb
5、数据库配置修改、启动
#共2个配置需修改,pg数据目录中的pg_hba.conf和postgresql.conf
#pg_hba.conf记录服务访问权限配置,最后一行加如下参数,此处为方便允许所有IP访问
host all all 0.0.0.0/0 trust
#postgresql.conf记录数据库服务的配置,修改如下配置
listen_addresses = '*' #监听IP
max_connections = 300 #最大连接数,可根据业务需要修改
shared_buffers = 128GB #见下方注释,可根据业务需要修改
#启动
pg_ctl -D /data/pgsql/data -l logfile start

Tips:shred_buffer

什么是shred_buffer,为什么需要shared_buffers?
1、在数据库系统中,我们主要关注磁盘io,大多数oltp工作负载都是随机io,因此从磁盘获取非常慢。
2、为了解决这个问题,postgres将数据缓存在RAM中,以此来提高性能,即使ssd的情况下RAM也要快很多。
3、shared_buffers是一个8KB的数组,postgres在从磁盘中查询数据前,会先查找shared_buffers的页,如果命中,就直接返回,避免从磁盘查询。

shared_buffers存储什么?
1、表数据
2、索引,索引也存储在8K块中。
3、执行计划,存储基于会话的执行计划,会话结束,缓存的计划也就被丢弃。

主从构建:
大致流程是在主节点创建主从同步的用户,并允许该用户从从节点连接主节点用于主从复制,然后修改主节点配置文件指定主从模式,最后从节点指定主节点拉取数据、启动、验证主从

1、从节点备份数据库数据目录
#此处备份为以防万一,一般不需要
cp -r /data/pgsql/data /data/backup/
2、从节点清空数据目录下数据
rm -rf /data/pgsql/data/*
3、修改主节点配置、重启
#创建用于主从同步的用户
create role postgrerepl login replication encrypted password '密码';
#共2个配置需修改,pg数据目录中的pg_hba.conf和postgresql.conf
#pg_hba.conf修改允许从节点IP连接主节点postgrerepl用于主从复制
host replication 用于主从同步的用户名 从节点IP/掩码 trust
示例:
host replication postgrerepl 192.168.0.1/32 trust
#postgresql.conf修改主从配置,wal_level控制wal存储的级别。决定有多少信息被写入到WAL中。
#默认值是最小的(minimal),其中只写入从崩溃或立即关机中恢复的所需信息。replica
#增加 wal 归档信息同时包括只读服务器需要的信息。(9.6版本中新增,将之前版本的 archive
#和 hot_standby合并)要启用 WAL 归档(archive_mode)和流复制,必须使用replica
#或更高级别(logical)
wal_level = replica # minimal, replica, or logical
max_wal_size = 1GB
min_wal_size = 80MB
max_wal_senders = 10 # max number of walsender processes
#重启
pg_ctl -D /data/pgsql/data -l logfile restart

4、从节点指定主节点并拉取数据并启动
#拉取数据
pg_basebackup -h 主节点IP -U postgrerepl -p 7101 -F p -X s -v -P -R -D /data/pgsql/data
#启动
pg_ctl -D /data/pgsql/data start
5、验证主从
#登陆主节点查看主从信息
select * from pg_stat_replication;
#登陆主节点创建测试库
create database test
#登陆从节点查看是否将主节点测试库同步
\d test

要回复问题请先登录注册