PostgreSQL单机编译安装手册

PostgreSQL单机编译安装手册

🌻下载二进制安装包:https://www.postgresql.org/ftp/source/

准备工作

bash 复制代码
# 检查是否已安装
rpm -qa | grep postgres

# 创建安装用户
groupadd postgres
useradd -g postgres -d /home/postgres -s /bin/bash postgres

# 创建安装目录
mkdir /opt/postgres
mv postgresql-9.2.4.tar.gz /opt/postgres
chown -R postgres:postgres /opt/postgres

编译安装

编译安装:

bash 复制代码
yum install -y zlib-devel gcc make

cd /opt/postgres
tar -xvf postgresql-9.2.4.tar.gz

cd postgresql-9.2.4/
./configure

make && make install

添加环境变量:

bash 复制代码
chown -R postgres:postgres /opt/postgres
su - postgres

echo 'export PATH=$PATH:/usr/local/pgsql/bin' >> .bash_profile
echo 'export PGDATA=/pgdata' >> .bash_profile
echo 'export PGLOG=/pgdata/server.log' >> .bash_profile

source .bash_profile

初始化数据库

创建数据目录,初始化数据库:

bash 复制代码
# 创建数据目录
mkdir /pgdata
chown -R postgres:postgres /pgdata

# 以postgres用户初始化数据库
su - postgres
initdb -D /pgdata -U postgres

# 启动数据库
pg_ctl -D /pgdata -l /pgdata/server.log start

检查数据库日志、端口和进程:

bash 复制代码
[postgres@dbhost ~]$ tail -f /pgdata/server.log 
LOG:  could not bind IPv4 socket: Address already in use
HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
LOG:  database system was shut down at 2023-10-10 11:03:49 CST
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started
^C
[postgres@dbhost ~]$ ss -antpl | grep 5432
LISTEN     0      208    127.0.0.1:5432                     *:*                   users:(("postgres",pid=68688,fd=4))
LISTEN     0      208      [::1]:5432                  [::]:*                   users:(("postgres",pid=68688,fd=3))

[postgres@dbhost ~]$ ps -ef | grep postgres
root      68464  53923  0 11:03 pts/0    00:00:00 su - postgres
postgres  68465  68464  0 11:03 pts/0    00:00:00 -bash
postgres  68688      1  0 11:05 pts/0    00:00:00 /usr/local/pgsql/bin/postgres -D /pgdata
postgres  68702  68688  0 11:05 ?        00:00:00 postgres: checkpointer process   
postgres  68703  68688  0 11:05 ?        00:00:00 postgres: writer process   
postgres  68704  68688  0 11:05 ?        00:00:00 postgres: wal writer process   
postgres  68705  68688  0 11:05 ?        00:00:00 postgres: autovacuum launcher process   
postgres  68706  68688  0 11:05 ?        00:00:00 postgres: stats collector process   
postgres  68772  68465  0 11:06 pts/0    00:00:00 ps -ef
postgres  68773  68465  0 11:06 pts/0    00:00:00 grep --color=auto postgres

使用psql命令连接到数据库:

bash 复制代码
[postgres@dbhost ~]$ psql
psql (9.2.4)
Type "help" for help.

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

postgres=# \c postgres
You are now connected to database "postgres" as user "postgres".
postgres=# \d
No relations found.
postgres=# \dS
                        List of relations
   Schema   |              Name               | Type  |  Owner   
------------+---------------------------------+-------+----------
 pg_catalog | pg_aggregate                    | table | postgres
 pg_catalog | pg_am                           | table | postgres
 pg_catalog | pg_amop                         | table | postgres
 pg_catalog | pg_amproc                       | table | postgres
 pg_catalog | pg_attrdef                      | table | postgres
 pg_catalog | pg_authid                       | table | postgres
 pg_catalog | pg_available_extension_versions | view  | postgres
 pg_catalog | pg_available_extensions         | view  | postgres
...
postgres=# 
postgres=# \q

修改配置文件

PostgreSQL的数据库配置文件是位于数据目录下的postgresql.confpg_hba.conf

bash 复制代码
# 修改共享内存为服务器物理内存的25%
[postgres@dbhost ~]$ cat /pgdata/postgresql.conf | grep shared_buffer
shared_buffers = 32MB            # min 128kB
#wal_buffers = -1            # min 32kB, -1 sets based on shared_buffers

[postgres@dbhost ~]$ vi /pgdata/postgresql.conf 
[postgres@dbhost ~]$ cat /pgdata/postgresql.conf | grep shared_buffer
shared_buffers = 1024MB            
#shared_buffers = 32MB            # min 128kB
#wal_buffers = -1            # min 32kB, -1 sets based on shared_buffers

# 修改监听地址
[postgres@dbhost ~]$ cat /pgdata/postgresql.conf | grep -n listen
59:#listen_addresses = 'localhost'        # what IP address(es) to listen on;

[postgres@dbhost ~]$ vi /pgdata/postgresql.conf 
[postgres@dbhost ~]$ cat /pgdata/postgresql.conf | grep -n listen
59:listen_addresses = '*'                # 添加此行
60:#listen_addresses = 'localhost'        # what IP address(es) to listen on;

# 添加允许连接的客户端地址
[postgres@dbhost ~]$ cat /pgdata/pg_hba.conf | grep -A2 'IPv4 local connections'
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:

[postgres@dbhost ~]$ vi /pgdata/pg_hba.conf 
[postgres@dbhost ~]$ cat /pgdata/pg_hba.conf | grep -A2 'IPv4 local connections'
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               trust      # 添加此行

重启数据库:

bash 复制代码
echo $PGDATA
pg_ctl stop
pg_ctl -D $PGDATA -l $PGLOG start

检查配置参数:

sql 复制代码
postgres=# show data_directory;
 data_directory 
----------------
 /pgdata
(1 row)

postgres=# show shared_buffers;
 shared_buffers 
----------------
 1GB
(1 row)

postgres=# select name,setting from pg_settings where name='data_directory';
      name      | setting 
----------------+---------
 data_directory | /pgdata
(1 row)
相关推荐
sun00770038 分钟前
mysql索引底层原理
数据库·mysql
workflower3 小时前
MDSE和敏捷开发相互矛盾之处:方法论本质的冲突
数据库·软件工程·敏捷流程·极限编程
Tony小周4 小时前
实现一个点击输入框可以弹出的数字软键盘控件 qt 5.12
开发语言·数据库·qt
lifallen4 小时前
Paimon 原子提交实现
java·大数据·数据结构·数据库·后端·算法
TDengine (老段)4 小时前
TDengine 数据库建模最佳实践
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
Elastic 中国社区官方博客4 小时前
Elasticsearch 字符串包含子字符串:高级查询技巧
大数据·数据库·elasticsearch·搜索引擎·全文检索·lucene
Gauss松鼠会5 小时前
GaussDB应用场景全景解析:从金融核心到物联网的分布式数据库实践
数据库·分布式·物联网·金融·database·gaussdb
守城小轩5 小时前
Chromium 136 编译指南 - Android 篇:开发工具安装(三)
android·数据库·redis
尽兴-5 小时前
如何将多个.sql文件合并成一个:Windows和Linux/Mac详细指南
linux·数据库·windows·sql·macos
小小不董6 小时前
深入理解oracle ADG和RAC
linux·服务器·数据库·oracle·dba