接下来介绍如何源码安装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 |