postgresql 14 编译安装

发布时间 2023-12-25 15:45:04作者: jiaxzeng

内核参数

cat <<'EOF' | sudo tee /etc/sysctl.d/postgresql.conf >> /dev/null
# 表示内核所允许的最大共享内存段的大小。推荐设置物理内存的一半
kernel.shmmax = 4294967296
# 共享内存的个数。推荐值:物理内存 / 页大小,查看页大小命令(getconf PAGE_SIZE)
kernel.shmall = 2097152
# Hugepage个数,推荐值:kernel.shmmax / Hugepagesize;查看Hugepagesize(grep Hugepage /proc/meminfo)
vm.nr_hugepages = 1024
EOF

sudo sysctl -p /etc/sysctl.d/postgresql.conf

安装编译依赖

Ubuntu

sudo apt install -y gcc make pkg-config liblz4-dev zlib1g-dev libssl-dev

下载postgresql源码

wget https://ftp.postgresql.org/pub/source/v14.10/postgresql-14.10.tar.gz
tar xf postgresql-14.10.tar.gz 
cd postgresql-14.10

配置编译参数

./configure --prefix=/app/postgresql --with-openssl --without-readline --with-lz4 --with-blocksize=8 --with-wal-blocksize=8

编译以及安装

# 编译
make
# 安装
sudo make install

创建运行用户

sudo useradd -m -s /bin/bash postgres
sudo passwd postgres

创建存储目录

sudo mkdir -p /data/{pg_data,pg_wal}
sudo chown -R postgres. /data/{pg_data,pg_wal}
sudo chmod 700 /data/{pg_data,pg_wal}

设置环境变量

su - postgres

cat <<'EOF' | tee -a ~/.bashrc >>/dev/null
# Postgresql Service Environment variable
export PGHOME=/app/postgresql
export PGDATA=/data/pg_data/
export LD_LIBRARY=$PGHOME/lib
export PATH=$PATH:$PGHOME/bin
EOF

初始化数据库

su - postgres

initdb --pgdata=/data/pg_data --waldir=/data/pg_wal --encoding=UTF8 --locale=en_US.utf8 --auth=scram-sha-256 --username=postgres --pwprompt
  1. 初始化报错 initdb: error: invalid locale name "en_US.utf8"
    Ubuntu 解决办法:安装 language-pack-en
  1. 初始化报错 initdb: error: invalid locale name "zh_CN.utf8"
    Ubuntu 解决办法:安装 language-pack-kde-zh-hans

启动服务

pg_ctl start