美文网首页
PostgreSQL源码安装

PostgreSQL源码安装

作者: 这货不是王马勺 | 来源:发表于2022-11-01 18:01 被阅读0次

下载

从官网下载,地址:

https://www.postgresql.org/download/

不建议从中文社区下载。
从官网见面看,目前是提供两种安装模式,Packages和Source;
Packages就是yum或rpm安装,选择完成后就会显示安装scripts;按照提示完成安装即可。适合开发或学习使用。
Source适合生产环境使用。这里我们使用12版本为例

选择.bz2或.gz下载都可以,只是压缩方式不同。
下载好后上传至服务器。

OS环境配置

创建用户和组
建议非root用户管理,因此创建postgres用户:

user add postgres
passwd postgres

安装依赖包

yum groupinstall -y "Development Tools" "Legacy UNIX Compatibility"
yum install -y bison flex readline* zlib-devel gcc* gmake

创建目录并授权
一个是软件安装目录,一个是数据目录,
可以类比mysql的basedir和datadir;

mkdir -p /usr/local/pg12
mkdir -p /pgdata/12/data
chown -R postgres. /pgdata
chown -R postgres. /usr/local/pg12
chmod 700 /pgdata/12/data -R

操作系统参数优化
pg和oracle类似需要调一些内核参数,因为是多进程,对于内核参数的要求较多;这一点不同于mysql;

vim /etc/sysctl.conf 

kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.shmmni = 4096
kernel.sem = 50100 64128000 50100 1280
fs.file-max = 7672460
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

生效配置:

sysctl -p

限制参数:

vim /etc/security/limits.conf

* soft   nofile    131072
* hard   nofile    131072
* soft   nproc    131072
* hard   nproc    131072
* soft   stack    unlimited
* hard   stack   unlimited
* hard   memlock    50000000
* soft   memlock    50000000

建议关闭numa,设置IO策略未deadline(机械)或者noop(SSD):
一般在OS启动时bios使用numa off参数。
查看numa状态:

numactl --show
dmesg | grep -i numa
cat /proc/cmdline

在bios中将numa关闭:

grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="numa=off"

或编辑/etc/default/grub,在在GRUB_CMDLINE_LINUX一栏添加numa=off;
重新生成 /etc/grub2.cfg 配置文件:

grub2-mkconfig -o /etc/grub2.cfg

重启服务器生效。
如果发现已经启用了numa又不能重启,也可以调整OS参数去修改

vim /etc/sysctl.conf

vm.zone_reclaim_mode = 0
kernel.numa_balancing=0
numactl --interleave=all pg_ctl start -D $PGDATA

其中vm.zone_reclaim_mode:当一个内存区域(zone)内部的内存耗尽时,是从其内部进行内存回收还是可以从其他zone进行回收的选项,0表示可以从下一个zone找可用内存;
kernel.numa_balancing:是否启用NUMA平衡功能,将任务移动到最近的内存或移动内存到任务执行最近的地方,0表上关闭;
numactl --interleave=all:无视 NUMA 关于 CPU 内存分配的策略,可以使得各个 CPU 区域的内存均匀分配。

查看IO策略,此处以xvda为例:

cat /sys/block/xvda/queue/scheduler

显示为deadline或noop都可以(算法不同,noop更倾向于饿死读而优先写,适合SSD)。避免使用cfq。

echo noop > /sys/block/xvda/queue/scheduler

重启后会失效,如果想持久化则需要将命令放在/etc/rc.local中,或者直接修改grub:

vim /etc/default/grub

在GRUB_CMDLINE_LINUX一栏添加elevator=noop,再重新生成grub2.cfg配置文件,方法类似上面关闭numa
或者:

grubby --update-kernel=ALL --args="elevator=noop"

重启生效。

源码安装

C的源码包需要编译安装。
上传软件解压
上传至/opt并解压:

tar -xf postgresql-12.12.tar.gz
cd postgresql-12.12

配置、编译、安装
./configure --help查看可定制的参数,其中打印的结果中--with类的都是打开一些功能,此外还有--without,--disable等,具体参考官网;
此处仅指定安装目录和端口,不指定的话默认端口是5432;这些参数后面初始化也可以指定;

./configure --prefix=/usr/local/pg12 --with-pgport=5432

#全部可用功能编译
gmake world

#把所有编译好的进行安装(建目录+拷贝)
gmake install -world

配置环境变量

su postgres
cd ~
vim .bash_profile

export PGDATA=/pgdata/12/data
export LANG=en_US.utf8
export PGHOME=/usr/local/pg12
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export DATE=`date +"%Y%m%d%H%M"`
export PATH=$PGHOME/bin:$PATH:.
export MANPATH=$PGHOME/share/man:$MANPATH
export PGUSER=postgres

source .bash_profile

检查版本

psql --version

如果正常显示说明环境变量配置成功。

初始化数据

su - postgres

简易初始化

initdb -D /pgdata/12/data -w

生产建议

initdb -A md5 -D $PGDATA -E utf8 --locale=C -W

-A 是加密方式
-D 是数据目录
-E 是字符集 (默认即utf8)
执行之后会提示输入密码。

启停数据库

可以按照初始化打印的结果来启动,完整命令:

pg_ctl -D /pgdata/12/data/ -l logfile start

如果配了环境变量也可以直接pg_ctl start来启动,因为pgdata能识别到;
重启:pg_ctl restart
关闭:pg_ctl stop
通过pg_ctl --help可以查看完整的选项,
其中关闭和重启选项中的shutdown modes包括smart、fast、immediate;
smart是最安全的关闭方法,等待所有客户端连接关闭之后才关闭;
fast是用的生产中最多的,自动杀掉连接,回滚未完成事务;
immediate相当于kill -9;
对应的语句:

pg_ctl -D /pgdata/12/data/  stop -ms
pg_ctl -D /pgdata/12/data/  stop -mf
pg_ctl -D /pgdata/12/data/  stop -mi

此外启动数据库还可以通过脚本启动,需要切换回root用户执行

/opt/postgresql-12.12/contrib/start-scripts/linux

使用此脚本需要修改脚本中prefix、PGDATA等内容。

登录数据库

刚装完仅允许本地socket连接,一般socket再/tmp目录下,是个隐藏文件;
直接输入psql,输入密码即可进入命令行,默认进入系统postgres这个库中;
简单操作:

\l
create database test1;
\c test1;
create table t1(id int);
insert into t1 values(1);
select * from t1;

其中\l查看所有库,\c使用某库,\d或\dt查看当前库下的表。

远程连接还需配置实力级别的访问控制:

cd $PGDATA
vim pg_hba.conf

host DBname username 10.10.10.0/24 md5

md5的未知写reject就不允许这一条登录;
如果两条有重叠,则按从上到下顺序读取,一旦一条生效,后面的则不会读到。

此外由于默认只监听本地,还需要配置linstener才能监听到,以全部监听为例:

vim postgresql.conf
listen_addresses = '0.0.0.0'

重启后生效:

pg_ctl restart -mf

用超管postgres以TCP/IP方式登录:

psql -d postgres -h 10.10.10.51 -p 5432 -U postgres

常用命令

查看psql命令行客户端相关命令:

\?

查看sql相关语句:

\h

列举库名,相当于show databases:

\l

其中默认库有postgres、template0、template1;

切换到某库,相当于use

\c db1

查看库下的表:

\d
\dt

看t1表结构:

\d t1

查看某语句的帮助,例如查看create user语句的帮助:

\help create user

查看用户权限信息:

\du

PG中元数据存在pg_开头的表中,如:

select * from pg_tables where schemaname not in ('pg_catalog','information_schema');

如将查询竖着显示,先执行\x,再执行查询;类似MySQL中的\G;

\x

相关文章

  • PG数据库安装+维护命令

    一、postgresql-12 源码安装方式: 1 、下载 官网提供了源码和预安装的版本。 源码需要编译安装,解决...

  • postgresql编译安装 (包含uuid)

    下载postgresql源码包和uuid-1.6.1.tar.gz源码包 安装uuid uuid安装成功 安装po...

  • PostgreSQL(数据库)资料

    About:PostgreSQL About 《PostgreSQL 源码分析系列》 PostgreSQL 源码分...

  • PG修炼之道笔记

    [TOC] 安装配置 2.1 发行版本安装 2.2 从源码安装 2.4 PostgreSQL简单配置 3 SQL语...

  • PostgreSQL 源码安装

    (1)创建用户和数据库datadb目录: groupadd postgres useradd -g postgre...

  • PostgreSQL源码安装

    下载并提取源码 使用wget命令,下载源码wget http://ftp.postgresql.org/pub/s...

  • PostgreSql源码安装

    以下为下载链接,本次安装版本为9.6.0 https://www.postgresql.org/ftp/sourc...

  • PostgreSQL源码安装

    下载 从官网下载,地址: 不建议从中文社区下载。从官网见面看,目前是提供两种安装模式,Packages和Sourc...

  • PostgreSQL部署文档

    一. 源码安装PostgreSQL12.5 主机环境:centos7.9.2009主机地址:192.168.5.1...

  • postgresql 源码编译安装

    01. 环境描述 02. 安装基础软件 基础软件在reference手册分为必选和可选两部分,主要是gcc编译器和...

网友评论

      本文标题:PostgreSQL源码安装

      本文链接:https://www.haomeiwen.com/subject/oxprtdtx.html