基于源码包安装PostgreSQL
源码包下载地址:https://www.postgresql.org/download/
一、修改系统参数
1.关闭防火墙
[root@postgresql ~]# systemctl status firewalld.service
[root@postgresql ~]# systemctl stop firewalld.service
[root@postgresql ~]# systemctl disable firewalld.service
[root@postgresql ~]# setenforce 0
[root@postgresql ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
复制
2.修改sysctl.conf
[root@postgresql ~]# cat > /etc/sysctl.conf <<"EOF"
vm.swappiness=10
vm.zone_reclaim_mode=0
fs.aio-max-nr = 1048576
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
kernel.shmmax = 1288490188
kernel.shmall = 314572
kernel.shmmni = 4096
kernel.sem = 50100 64128000 50100 1280
EOF
-- 生效
[root@postgresql ~]# sysctl -p
复制
3.修改limits.conf参数
[root@postgresql ~]# cat >> /etc/security/limits.conf <<"EOF"
* soft nofile 131072
* hard nofile 131072
* soft nproc 131072
* hard nproc 131072
* soft core unlimited
* hard core unlimited
* soft memlock 50000000
* hard memlock 50000000
EOF
复制
4.修改用户最大进程数
[root@postgresql ~]# echo "* - nproc unlimited" > /etc/security/limits.d/90-nproc.conf
[root@postgresql ~]# rm -f /etc/security/limits.d/*20*
复制
5.配置PAM
[root@postgresql ~]# echo "session required pam_limits.so" >> /etc/pam.d/login
复制
6.关闭THP
-- root用户下,修改文件/etc/rc.local
[root@postgresql ~]# cat > /etc/rc.local <<"EOF"
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
-- redhat 7以上,需要修改权限
[root@postgresql ~]# chmod +x /etc/rc.d/rc.local
复制
二、基于源码安装PostgreSQL
1.创建用户
[root@postgresql ~]# groupadd -g 60000 pgsql
[root@postgresql ~]# useradd -u 60000 -g pgsql pgsql
[root@postgresql ~]# echo "pgsql" | passwd --stdin pgsql
复制
2. 创建安装目录
[root@postgresql ~]# mkdir -p /postgresql/{pgdata,archive,scripts,backup,pg13,soft}
[root@postgresql ~]# chown -R pgsql:pgsql /postgresql
[root@postgresql ~]# chmod -R 775 /postgresql
复制
3.上传并解压安装包
-- 注意安装包的权限
[pgsql@postgresql soft]$ ll
-rw-r--r-- 1 pgsql pgsql 27548921 Jan 29 11:14 postgresql-13.2.tar.gz
[pgsql@postgresql soft]$ tar -zxvf postgresql-13.2.tar.gz
复制
4.安装依赖包
[root@postgresql ~]# yum install -y cmake make gcc zlib gcc-c++ perl readline readline-devel zlib zlib-devel perl python36 tcl openssl ncurses-devel openldap pam
复制
5.编译安装
[root@postgresql ~]# cd postgresql-13.2
[root@postgresql ~]# ./configure --prefix=/postgresql/pg13 --without-readline
[root@postgresql ~]# make -j 8 && make install
复制
- –without-readline 默认时将自动使用GNU Readline库。它允许psql(PostgreSQL的命令行 SQL 解释器)记住你输入的每一个命令并且允许你使用箭头键来找回和编辑之前的命令。如果你不想用它,那么你必需给configure声明–without-readline选项。
6.配置环境变量
[pgsql@postgresql ~]$ cat >> ~/.bash_profile <<"EOF" export LANG=en_US.UTF-8 export PS1="[\u@\h \W]\$ " export PGPORT=5432 export PGDATA=/postgresql/pgdata export PGHOME=/postgresql/pg13 export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH export PATH=$PGHOME/bin:$PATH:. export DATE=`date +"%Y%m%d%H%M"` export MANPATH=$PGHOME/share/man:$MANPATH export PGHOST=$PGDATA export PGUSER=postgres export PGDATABASE=postgres EOF [pgsql@postgresql ~]$ source ~/.bash_profile
复制
7.初始化数据库
-- pgsql用户下执行:
[pgsql@postgresql ~]$ /postgresql/pg13/bin/initdb -D /postgresql/pgdata -E UTF8 --locale=en_US.utf8 -U postgres
The files belonging to this database system will be owned by user "pgsql".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.utf8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /postgresql/pgdata ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... PRC
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:
/postgresql/pg13/bin/pg_ctl -D /postgresql/pgdata -l logfile start
复制
8.修改参数文件
-- 备份原来的参数文件
[pgsql@postgresql ~]$ cp /postgresql/pgdata/postgresql.conf /postgresql/pgdata/postgresql.conf.bak
[pgsql@postgresql ~]$ cp /postgresql/pgdata/pg_hba.conf /postgresql/pgdata/pg_hba.conf.bak
[pgsql@postgresql ~]$ cat >> /postgresql/pgdata/postgresql.conf <<"EOF"
listen_addresses = '*'
port=5432
unix_socket_directories='/postgresql/pgdata'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = on
EOF
-- 添加连接规则
[pgsql@postgresql ~]$ cat > /postgresql/pgdata/pg_hba.conf << EOF
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all ::1/128 trust
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
host replication all 0.0.0.0/0 md5
EOF
[pgsql@postgresql ~]$
复制
9.启动PG数据库
[pgsql@postgresql ~]$ pg_ctl start
waiting for server to start....2023-02-11 11:21:50.745 CST [11052] LOG: redirecting log output to logging collector process
2023-02-11 11:21:50.745 CST [11052] HINT: Future log output will appear in directory "pg_log".
done
server started
-- 检查状态
[pgsql@postgresql ~]$ pg_ctl status
pg_ctl: server is running (PID: 11052)
/postgresql/pg13/bin/postgres
复制
10.登录PG
[pgsql@postgresql ~]$ psql
psql (13.2)
Type "help" for help.
postgres=#
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
postgres=#
复制
11.停止PG
[pgsql@postgresql ~]$ pg_ctl stop
waiting for server to shut down.... done
server stopped
[pgsql@postgresql ~]$ pg_ctl status
pg_ctl: no server running
[pgsql@postgresql ~]$
复制
最后修改时间:2023-04-06 17:32:32
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
玩一玩系列——玩玩pg_mooncake(PostgreSQL的高性能列存新贵)
小满未满、
512次阅读
2025-03-03 17:18:03
王炸!OGG 23ai 终于支持从PostgreSQL备库抽取数据了
曹海峰
389次阅读
2025-03-09 12:54:06
玩一玩系列——玩玩login_hook(一款即将停止维护的PostgreSQL登录插件)
小满未满、
371次阅读
2025-03-08 18:19:28
明明想执行的SQL是DELETE、UPDATE,但为什么看到的是SELECT(FDW的实现原理解析)
小满未满、
348次阅读
2025-03-19 23:11:26
PostgreSQL初/中/高级认证考试(3.15)通过考生公示
开源软件联盟PostgreSQL分会
298次阅读
2025-03-20 09:50:36
IvorySQL 4.4 发布 - 基于 PostgreSQL 17.4,增强平台支持
通讯员
185次阅读
2025-03-20 15:31:04
套壳论
梧桐
180次阅读
2025-03-09 10:58:17
命名不规范,事后泪两行
xiongcc
168次阅读
2025-03-13 14:26:08
版本发布| IvorySQL 4.4 发布
IvorySQL开源数据库社区
110次阅读
2025-03-13 09:52:33
宝藏PEV,助力你成为SQL优化高手
xiongcc
102次阅读
2025-03-09 23:34:23