postgresql 12.5软件源码安装

接下来介绍如何源码安装postgresql12.5,需要提前准备一台centos7 4C,8G主机来做这个实验。

一、环境准备

1.1、OS参数优化

1.1.1   关闭操作透明大页

# 通过参数关闭大页

echo never > /sys/kernel/mm/transparent_hugepage/enabled  

echo 'echo never >   /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local

# 验证是否关闭了透明大页

grep HugePages_Total  /proc/meminfo

cat /proc/sys/vm/nr_hugepages

1.1.2 内核参数调优

修改内核参数谁的/etc/sysctl.conf ,增加以下内容后,执行 sudo sysctl -p 生效。

vm.dirty_expire_centisecs=3000

net.ipv4.tcp_synack_retries=2

net.core.rmem_default=262144

vm.dirty_background_bytes=409600000

net.core.wmem_default=262144

vm.mmap_min_addr=65536

vm.overcommit_ratio=90

kernel.shmmni=819200

net.core.rmem_max=4194304

vm.dirty_writeback_centisecs=100

fs.file-max=76724600

net.core.somaxconn=4096

fs.aio-max-nr=1048576

net.ipv4.tcp_max_tw_buckets=262144

vm.swappiness=0

fs.nr_open=20480000

net.ipv4.tcp_fin_timeout=5

net.ipv4.ip_local_port_range=40000   65535

net.ipv4.tcp_keepalive_probes=3

net.ipv4.tcp_mem=8388608   12582912 16777216

kernel.shmmax = 329853488332

kernel.shmall=80530636

kernel.shmmni =   4096

kernel.msgmax =   65536

kernel.msgmni =   2005

kernel.msgmnb =   65536

kernel.sem=4096   2147483647 2147483646 512000

net.ipv4.tcp_keepalive_intvl=20

net.ipv4.tcp_keepalive_time=60

vm.overcommit_memory=0

net.ipv4.tcp_syncookies=1

net.ipv4.tcp_max_syn_backlog=4096

net.ipv4.tcp_timestamps=1

net.ipv4.tcp_rmem=8192   87380 16777216

net.ipv4.tcp_wmem=8192   65536 16777216

net.core.wmem_max=4194304

vm.dirty_ratio=80

net.core.netdev_max_backlog=10000

vm.zone_reclaim_mode=0

net.ipv4.tcp_tw_reuse=1

vm.nr_hugepages=192000

vm.nr_overcommit_hugepages=1000000

vm.overcommit_memory   = 2

  创建 /etc/security/limits.d/limits.conf ,内容如下:

* soft nofile 655360

* hard nofile   655360

* soft nproc 655360

* hard nproc 655360

* soft memlock   unlimited

* hard memlock   unlimited

* soft core   unlimited

* hard core   unlimited

 1.1.3  关闭防火墙服务和selinux

-- 关闭防火墙

systemctl stop   firewalld

systemctl disable   firewalld

-- 关闭 selinux

vi /etc/selinux/config

SELINUX=disabled               -- 修改为disabled

1.2 postgres用户创建

groupadd   postgres;useradd -g  postgres postgres

echo " postgres23" | passwd  postgres--stdin

1.3 postgresql软件包下载

postgresql官网下载12.5软件包  https://www.postgresql.org/ftp/source,下载链接如下

https://ftp.postgresql.org/pub/source/v12.5/postgresql-12.5.tar.gz

二、Postgresql安装

2.1 PG编译安装

解压软件包

tar xvf postgresql-12.5.tar.gz   -C /data/

编译 pg 软件

mkdir -p   /data/postgresql12.5/

cd   /data/postgresql-12.5/

./configure   –prefix=/data/postgresql12.5/

make   && make install

安装后,可执行文件,库文件等都会安装在 /data/postgresql12.5/ 中。

[postgres@localhost   pg1205]$ ls

bin  data    include  lib  share

2.2 配置环境变量

将以下几行变量添加至postgres 用户的下的环境变量文件 .bash_profile中 ,并执行命令source .bash_profile生效。

export.utf8

export PGHOME=/data/postgresql12.5/

export PGDATA=$PGHOME/data/

export PGPORT=5432

export   LD_LBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH

export   PATH=$PGHOME/bin:$PATH

2.3 初始化数据库

以下操作都是在postgres用户下进行

创建数据库存储目录

m kdir   $PGDATA

Postgresql 数据库的配置文件,数据文件等都会存放在这个路径下。

初始化数据库

i nitdb   –locale=C -E UNICODE -D $PGDATA

 

如下示例说明数据库创建成功

  The files belonging to this database system   will be owned by user "postgres".

This   user must also own the server process.

 

The   database cluster will be initialized with locale "C".

The   default text search configuration will be set to "english".

 

Data   page checksums are disabled.

 

fixing   permissions on existing directory /data/postgresql12.5/data ... ok

creating   subdirectories ... ok

selecting   dynamic shared memory implementation ... posix

selecting   default max_connections ... 100

selecting   default shared_buffers ... 128MB

selecting   default time zone ... America/New_York

creating   configuration files ... ok

running   bootstrap script ... ok

performing   post-bootstrap initialization ... ok

syncing   data to disk ... ok

 

initdb:   warning: enabling "trust" authentication for local connections

You can   change this by editing pg_hba.conf or using the option -A, or

--auth-local   and --auth-host, the next time you run initdb.

 

Success.   You can now start the database server using:

 

    pg_ctl -D /data/postgresql12.5/data/ -l   logfile start

2.4 修改配置文件

这里主要修改如下两个配置文件

l   postgresql.conf 针对实例的配置

l   pg_hba.conf 针对数据库访问的控制

postgresql.conf配置文件修改成如下

listen_ addresses = '*'          #   what IP address(es) to listen on;

                                        #   comma-separated list of addresses;

                                        # defaults to   'localhost'; use '*' for all

                                        #   (change requires restart)

port =   5432                             #   (change requires restart)

max_connections   = 1000                  # (change requires restart)

pg_hba.conf配置文件添加如下行

host      all             all             0.0.0.0/0               md5

 以上配置已经完成

2.5 启动数据库

手动启动数据库使用如下命令

p g_ctl   -D $PGDATA  stop  # 停止 pg 命令

pg_ctl -D   $PGDATA  start  # 启动 pg 命令

  如下是启停PG示例

[postgre s@zabbix data]$ pg_ctl -D $PGDATA -l logfile start

waiting   for server to start.... done

server   started

[postgres@   zabbix data]$ pg_ctl -D $PGDATA stop

waiting   for server to shut down.... done

server   stopped

2.6 配置服务开机自启动

此步骤需要root用户操作。 postgresql 的安装包中提供了数据库启动与关闭的脚本,可以帮助我们简化操作,也可以 用作开机启动的脚本和service/systemctl 控制服务的脚本。 脚本位于:

/data/postgresql-12.5/contrib/start-scripts

设置开机启动

c p   /data/postgresql-12.5/contrib/start-scripts/linux /etc/init.d/postgresql

chkconfig   –add postgresql

chmod 755   /etc/init.d/postgresql

然后调整/etc/init.d/postgresql脚本如下内容

prefix= /data/postgresql12.5 # 软件的安装路径

PGDATA="/data/postgresql12.5/data"   # 数据存放路径

PGUSER=postgres   # 启动 postgresql 服务的用户

通过service 命令控制启动和关闭

s ervice   postgresql stop

service postgresql   start


请使用浏览器的分享功能分享到微信等