侧边栏壁纸
博主头像
问道

问道的小花园,总能给你带来惊喜

  • 累计撰写 70 篇文章
  • 累计创建 37 个标签
  • 累计收到 6 条评论

PostgreSQL一键安装脚本及配置文件详解

问道
2023-07-08 / 0 评论 / 0 点赞 / 580 阅读 / 11,425 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-10-21,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

PostgreSQL是一个开源的关系型数据库管理系统(RDBMS),它有多个版本和发布系列。

以下是一些常见的 PostgreSQL 版本:

  1. PostgreSQL 9.x 系列:这是较旧的稳定版本系列,包括9.0、9.1、9.2、9.3、9.4、9.5、9.6等版本。
  2. PostgreSQL 10.x 系列:这是较新的稳定版本系列,包括10.0、10.1、10.2、10.3、10.4等版本。
  3. PostgreSQL 11.x 系列:这是较新的稳定版本系列,包括11.0、11.1、11.2、11.3等版本。
  4. PostgreSQL 12.x 系列:这是较新的稳定版本系列,包括12.0、12.1、12.2等版本。
  5. PostgreSQL 13.x 系列:这是最新的稳定版本系列,包括13.0、13.1、13.2等版本。

此外,还有一些 PostgreSQL 的开发版本和测试版本,例如Alpha版本、Beta版本等,用于测试和开发新功能。

在CentOS 7上一键安装PostgreSQL 12.3,并从国内镜像源进行下载:

#!/bin/bash

# 设置国内镜像源
echo "设置国内镜像源..."
echo "exclude=postgresql*" >> /etc/yum.repos.d/CentOS-Base.repo
echo "[pgdg12]" > /etc/yum.repos.d/pgdg.repo
echo "name=PostgreSQL 12 for RHEL/CentOS 7 - x86_64" >> /etc/yum.repos.d/pgdg.repo
echo "baseurl=https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/12/redhat/rhel-7-x86_64" >> /etc/yum.repos.d/pgdg.repo
echo "enabled=1" >> /etc/yum.repos.d/pgdg.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/pgdg.repo

# 安装 PostgreSQL 12.3
echo "安装 PostgreSQL 12.3..."
yum install -y postgresql12-server

# 初始化数据库
echo "初始化数据库..."
/usr/pgsql-12/bin/postgresql-12-setup initdb

# 启动 PostgreSQL
echo "启动 PostgreSQL 12.3..."
systemctl start postgresql-12

# 设置开机自启动
echo "设置开机自启动..."
systemctl enable postgresql-12

echo "PostgreSQL 12.3 安装完成!"

安装日志

[root@VM-4-9-centos ~]# chmod +x install_postgres.sh
[root@VM-4-9-centos ~]# 
[root@VM-4-9-centos ~]# 
[root@VM-4-9-centos ~]# ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-Epel.repo  docker-ce.repo  docker.repo  rancher-k3s-common.repo
[root@VM-4-9-centos ~]# sh install_postgres.sh 
设置国内镜像源...
安装 PostgreSQL 12.3...
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
docker                                                                                                                                                                   | 3.5 kB  00:00:00     
docker-ce-stable                                                                                                                                                         | 3.5 kB  00:00:00     
epel                                                                                                                                                                     | 4.7 kB  00:00:00     
extras                                                                                                                                                                   | 2.9 kB  00:00:00     
os                                                                                                                                                                       | 3.6 kB  00:00:00     
pgdg12                                                                                                                                                                   | 3.6 kB  00:00:00     
rancher-k3s-common-stable                                                                                                                                                | 2.9 kB  00:00:00     
updates                                                                                                                                                                  | 2.9 kB  00:00:00     
(1/9): epel/7/x86_64/group_gz                                                                                                                                            |  99 kB  00:00:00     
(2/9): epel/7/x86_64/updateinfo                                                                                                                                          | 1.0 MB  00:00:00     
(3/9): docker/primary_db                                                                                                                                                 | 111 kB  00:00:00     
(4/9): pgdg12/group_gz                                                                                                                                                   |  245 B  00:00:00     
(5/9): pgdg12/primary_db                                                                                                                                                 | 383 kB  00:00:00     
(6/9): epel/7/x86_64/primary_db                                                                                                                                          | 7.0 MB  00:00:00     
(7/9): docker-ce-stable/7/x86_64/primary_db                                                                                                                              | 111 kB  00:00:00     
(8/9): rancher-k3s-common-stable/primary_db                                                                                                                              | 4.4 kB  00:00:01     
(9/9): updates/7/x86_64/primary_db                                                                                                                                       |  22 MB  00:00:01     
正在解决依赖关系
There are unfinished transactions remaining. You might consider running yum-complete-transaction, or "yum-complete-transaction --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).
--> 正在检查事务
---> 软件包 postgresql12-server.x86_64.0.12.15-1PGDG.rhel7 将被 安装
--> 正在处理依赖关系 postgresql12-libs(x86-64) = 12.15-1PGDG.rhel7,它被软件包 postgresql12-server-12.15-1PGDG.rhel7.x86_64 需要
--> 正在处理依赖关系 postgresql12(x86-64) = 12.15-1PGDG.rhel7,它被软件包 postgresql12-server-12.15-1PGDG.rhel7.x86_64 需要
--> 正在处理依赖关系 libpq.so.5()(64bit),它被软件包 postgresql12-server-12.15-1PGDG.rhel7.x86_64 需要
--> 正在检查事务
---> 软件包 postgresql12.x86_64.0.12.15-1PGDG.rhel7 将被 安装
---> 软件包 postgresql12-libs.x86_64.0.12.15-1PGDG.rhel7 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================================================================================================================================
 Package                                              架构                                    版本                                                源                                       大小
================================================================================================================================================================================================
正在安装:
 postgresql12-server                                  x86_64                                  12.15-1PGDG.rhel7                                   pgdg12                                  5.0 M
为依赖而安装:
 postgresql12                                         x86_64                                  12.15-1PGDG.rhel7                                   pgdg12                                  1.6 M
 postgresql12-libs                                    x86_64                                  12.15-1PGDG.rhel7                                   pgdg12                                  377 k

事务概要
================================================================================================================================================================================================
安装  1 软件包 (+2 依赖软件包)

总下载量:7.0 M
安装大小:30 M
Downloading packages:
(1/3): postgresql12-libs-12.15-1PGDG.rhel7.x86_64.rpm                                                                                                                    | 377 kB  00:00:00     
(2/3): postgresql12-12.15-1PGDG.rhel7.x86_64.rpm                                                                                                                         | 1.6 MB  00:00:00     
(3/3): postgresql12-server-12.15-1PGDG.rhel7.x86_64.rpm                                                                                                                  | 5.0 MB  00:00:00     
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                                                             10 MB/s | 7.0 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : postgresql12-libs-12.15-1PGDG.rhel7.x86_64                                                                                                                                  1/3 
  正在安装    : postgresql12-12.15-1PGDG.rhel7.x86_64                                                                                                                                       2/3 
  正在安装    : postgresql12-server-12.15-1PGDG.rhel7.x86_64                                                                                                                                3/3 
  验证中      : postgresql12-12.15-1PGDG.rhel7.x86_64                                                                                                                                       1/3 
  验证中      : postgresql12-server-12.15-1PGDG.rhel7.x86_64                                                                                                                                2/3 
  验证中      : postgresql12-libs-12.15-1PGDG.rhel7.x86_64                                                                                                                                  3/3 

已安装:
  postgresql12-server.x86_64 0:12.15-1PGDG.rhel7                                                                                                                                                

作为依赖被安装:
  postgresql12.x86_64 0:12.15-1PGDG.rhel7                                                      postgresql12-libs.x86_64 0:12.15-1PGDG.rhel7                                                     

完毕!
初始化数据库...
Initializing database ... OK

启动 PostgreSQL 12.3...
设置开机自启动...
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-12.service to /usr/lib/systemd/system/postgresql-12.service.
PostgreSQL 12.3 安装完成!
[root@VM-4-9-centos ~]# 

为postgresql设置密码

  1. 打开终端或命令提示符窗口,并以超级用户身份登录到 PostgreSQL 数据库服务器。可以使用以下命令登录:

    sudo -u postgres psql

    如果提示输入密码,请输入您当前操作系统用户的密码。

  2. 进入 PostgreSQL 数据库命令行提示符后,使用以下命令为特定的数据库用户设置密码。将 <username> 替换为您要设置密码的数据库用户名:

    ALTER USER WITH PASSWORD 'your_password';

    例如,要为用户 myuser 设置密码为 mypassword,可以执行以下命令:

    ALTER USER myuser WITH PASSWORD 'mypassword';

  3. 设置密码后,可以使用以下命令退出 PostgreSQL 数据库命令行提示符:

    \q

安装后文件位置

通过上述脚本安装的 PostgreSQL,在 CentOS 7 上的默认安装位置如下:

  1. 安装文件:
    • PostgreSQL 二进制文件和可执行文件位于 /usr/pgsql-12/bin 目录下。
    • PostgreSQL 库文件位于 /usr/pgsql-12/lib 目录下。
    • PostgreSQL 插件文件位于 /usr/pgsql-12/share/extension 目录下。
  2. 配置文件:
    • 主要的 PostgreSQL 配置文件 postgresql.conf 位于 /var/lib/pgsql/12/data 目录下。
    • pg_hba.conf 文件,用于配置客户端身份验证规则,也位于 /var/lib/pgsql/12/data 目录下。

请注意,/var/lib/pgsql/12/data 是默认的数据目录,其中包含数据库的数据文件和配置文件。您可以通过修改 postgresql.conf 文件来更改数据目录的位置。

[root@VM-4-9-centos ~]# tree -L 2 /usr/pgsql-12/
/usr/pgsql-12/
├── bin
│   ├── clusterdb
│   ├── createdb
│   ├── createuser
│   ├── dropdb
│   ├── dropuser
│   ├── initdb
│   ├── pg_archivecleanup
│   ├── pg_basebackup
│   ├── pgbench
│   ├── pg_checksums
│   ├── pg_config
│   ├── pg_controldata
│   ├── pg_ctl
│   ├── pg_dump
│   ├── pg_dumpall
│   ├── pg_isready
│   ├── pg_receivewal
│   ├── pg_resetwal
│   ├── pg_restore
│   ├── pg_rewind
│   ├── pg_test_fsync
│   ├── pg_test_timing
│   ├── pg_upgrade
│   ├── pg_waldump
│   ├── postgres
│   ├── postgresql-12-check-db-dir
│   ├── postgresql-12-setup
│   ├── postmaster -> postgres
│   ├── psql
│   ├── reindexdb
│   └── vacuumdb
├── lib
│   ├── ascii_and_mic.so
│   ├── bitcode
│   ├── cyrillic_and_mic.so
│   ├── dict_int.so
│   ├── dict_snowball.so
│   ├── dict_xsyn.so
│   ├── euc2004_sjis2004.so
│   ├── euc_cn_and_mic.so
│   ├── euc_jp_and_sjis.so
│   ├── euc_kr_and_mic.so
│   ├── euc_tw_and_big5.so
│   ├── latin2_and_win1250.so
│   ├── latin_and_mic.so
│   ├── libecpg_compat.so.3 -> libecpg_compat.so.3.12
│   ├── libecpg_compat.so.3.12
│   ├── libecpg.so -> libecpg.so.6.12
│   ├── libecpg.so.6 -> libecpg.so.6.12
│   ├── libecpg.so.6.12
│   ├── libpgfeutils.a
│   ├── libpgtypes.so.3 -> libpgtypes.so.3.12
│   ├── libpgtypes.so.3.12
│   ├── libpq.so.5 -> libpq.so.5.12
│   ├── libpq.so.5.12
│   ├── libpqwalreceiver.so
│   ├── pgoutput.so
│   ├── plpgsql.so
│   ├── utf8_and_ascii.so
│   ├── utf8_and_big5.so
│   ├── utf8_and_cyrillic.so
│   ├── utf8_and_euc2004.so
│   ├── utf8_and_euc_cn.so
│   ├── utf8_and_euc_jp.so
│   ├── utf8_and_euc_kr.so
│   ├── utf8_and_euc_tw.so
│   ├── utf8_and_gb18030.so
│   ├── utf8_and_gbk.so
│   ├── utf8_and_iso8859_1.so
│   ├── utf8_and_iso8859.so
│   ├── utf8_and_johab.so
│   ├── utf8_and_sjis2004.so
│   ├── utf8_and_sjis.so
│   ├── utf8_and_uhc.so
│   └── utf8_and_win.so
└── share
    ├── errcodes.txt
    ├── extension
    ├── information_schema.sql
    ├── locale
    ├── man
    ├── pg_hba.conf.sample
    ├── pg_ident.conf.sample
    ├── pg_service.conf.sample
    ├── postgres.bki
    ├── postgres.description
    ├── postgresql-12-libs.conf
    ├── postgresql.conf.sample
    ├── postgres.shdescription
    ├── psqlrc.sample
    ├── snowball_create.sql
    ├── sql_features.txt
    ├── system_views.sql
    ├── timezonesets
    └── tsearch_data

以下是该目录结构的摘要:

  • bin 目录:包含 PostgreSQL 12 可执行文件,如 initdbpg_dumppg_restorepsql 等。
  • lib 目录:包含 PostgreSQL 12 的库文件,如 libecpg.solibpgtypes.solibpq.so 等。
  • share 目录:包含 PostgreSQL 12 的共享文件,如 extension 目录(包含扩展模块)、locale 目录(包含语言环境文件)、man 目录(包含手册页)、pg_hba.conf.sample(身份验证规则示例文件)、postgresql.conf.sample(配置文件示例)等。

安装 PostgreSQL 时,以下是一些主要文件和目录的功能和作用的详细解释:

  1. bin 目录:
    • initdb:用于创建新的 PostgreSQL 数据库集群(数据目录)。
    • pg_dump:用于将数据库导出为 SQL 脚本或二进制备份文件。
    • pg_restore:用于将使用 pg_dump 创建的备份文件恢复到数据库。
    • psql:PostgreSQL 的命令行客户端工具,用于与数据库进行交互、执行查询和管理数据库。
    • 其他命令:用于数据库集群管理、备份和恢复等。
  2. lib 目录:
    • libecpg.solibpgtypes.solibpq.so:PostgreSQL 的库文件,提供了与客户端应用程序交互的接口。
    • pgoutput.so:用于逻辑复制的插件,允许将更改从一个 PostgreSQL 数据库传递到另一个。
    • plpgsql.so:用于支持 PL/pgSQL 语言的插件,PL/pgSQL 是 PostgreSQL 中的一种过程化编程语言。
    • 其他库文件:提供了其他特定功能和扩展的支持。
  3. share 目录:
    • extension 目录:包含 PostgreSQL 的扩展模块,可以通过加载这些模块来添加额外的功能和特性。
    • locale 目录:包含用于国际化和本地化支持的语言环境文件,如翻译文件和排序规则。
    • man 目录:包含 PostgreSQL 的手册页,可用于查看关于 PostgreSQL 的详细文档和帮助信息。
    • pg_hba.conf.sample:身份验证配置文件示例,用于定义客户端连接到数据库时的身份验证规则。
    • postgresql.conf.sample:配置文件示例,用于配置数据库服务器的各种参数和设置。
[root@VM-4-9-centos ~]# ls /var/lib/pgsql/12/
backups  data  initdb.log
[root@VM-4-9-centos ~]# 
[root@VM-4-9-centos ~]# 
[root@VM-4-9-centos ~]# ls /var/lib/pgsql/12/data
base              global  pg_commit_ts  pg_hba.conf    pg_logical    pg_notify    pg_serial     pg_stat      pg_subtrans  pg_twophase  pg_wal   postgresql.auto.conf  postmaster.opts
current_logfiles  log     pg_dynshmem   pg_ident.conf  pg_multixact  pg_replslot  pg_snapshots  pg_stat_tmp  pg_tblspc    PG_VERSION   pg_xact  postgresql.conf       postmaster.pid

  • base 目录:该目录包含数据库的表空间。每个数据库都有一个子目录,其中存储了该数据库的表、索引和数据文件。
  • global 目录:该目录存储了全局共享数据,包括系统表空间、数据库模板和其他全局对象。
  • pg_commit_ts 目录:该目录包含与事务提交时间戳相关的信息,用于支持高级功能如并发控制和MVCC。
  • pg_hba.conf:这是 PostgreSQL 的身份验证配置文件,用于定义客户端连接到数据库时的身份验证规则。
  • pg_logical 目录:如果您启用了逻辑复制功能,该目录将包含用于逻辑复制的相关文件。
  • pg_notify 目录:该目录用于存储通过 LISTENNOTIFY 实现的数据库通知功能的相关信息。
  • pg_replslot 目录:如果您启用了流复制功能,该目录将包含用于复制槽的相关文件。
  • pg_serial 目录:如果您使用了 SERIAL 数据类型,该目录将包含与序列相关的文件。
  • pg_snapshots 目录:该目录用于存储并发事务的快照信息。
  • pg_stat 目录:该目录包含统计信息,用于跟踪数据库服务器的活动和性能。
  • pg_stat_tmp 目录:该目录用于存储临时统计信息。
  • pg_subtrans 目录:该目录包含与子事务相关的信息,用于支持并发控制和MVCC。
  • pg_tblspc 目录:该目录包含额外的表空间,如果您创建了其他表空间,其文件将存储在这个目录下。
  • pg_twophase 目录:该目录包含两阶段提交事务的信息。
  • pg_wal 目录:该目录存储事务日志(WAL)文件,用于支持数据库的持久性和恢复功能。
  • postgresql.auto.conf:这是一个自动生成的配置文件,记录了自动配置的设置和参数。
  • postgresql.conf:这是主要的 PostgreSQL 配置文件,用于手动配置数据库服务器的各种参数和设置。
  • postmaster.opts:这个文件保存了启动 PostgreSQL 数据库服务器时使用的命令行选项。
  • PG_VERSION:该文件中包含了当前 PostgreSQL 数据目录的版本号。
  • pg_xact 目录:该目录包含与事务相关的信息,用于支持并发控制和MVCC。
  • postmaster.pid:这个文件包含了 PostgreSQL 数据库服务器的进程 ID。

这些文件和目录是 PostgreSQL 数据库的重要组成部分,它们存储了数据库的数据、配置和元数据信息,为数据库的运行和管理提供了必要的支持。

配置文件 postgresql.conf 详解

postgresql.conf 是 PostgreSQL 数据库的主要配置文件,它用于配置数据库服务器的各种参数和设置。以下是一些常见配置选项的详细解释:

  1. listen_addresses:指定 PostgreSQL 监听的 IP 地址或主机名。默认情况下,它设置为 localhost,只允许本地连接。您可以将其设置为 *,以允许所有 IP 地址的连接,或指定特定的 IP 地址。
  2. port:指定 PostgreSQL 数据库服务器监听的端口号。默认端口是 5432。您可以根据需要更改该端口。
  3. max_connections:指定数据库服务器允许的最大并发连接数。默认值是 100。根据您的硬件资源和应用程序需求,您可以调整这个值。
  4. shared_buffers:指定数据库服务器用于缓存数据和索引的共享内存缓冲区大小。该值通常设置为系统内存的一小部分,以提高性能。默认值是 128MB。
  5. work_mem:指定每个数据库会话可以使用的内存量,用于排序和哈希操作等临时工作内存。默认值是 4MB。根据查询和工作负载的需求,您可以适当调整这个值。
  6. maintenance_work_mem:指定在执行维护操作(如 VACUUM、INDEX 创建等)时,允许的最大内存使用量。默认值是 64MB。根据数据库的大小和维护操作的复杂性,您可能需要调整这个值。
  7. effective_cache_size:指定 PostgreSQL 估计的系统缓存大小。该值用于查询优化器决策,以估计可用的磁盘缓存。默认值是 4GB。根据系统的实际内存和磁盘缓存容量,您可以调整这个值。
  8. log_destination:指定日志消息的输出目标。可以设置为 stderrcsvlogsyslogeventlog。默认值是 stderr,即输出到标准错误流。
  9. logging_collector:指定是否启用日志收集器。如果设置为 on,PostgreSQL 将使用独立的进程收集和记录日志消息。默认值是 off
  10. log_directory:指定日志文件的存储目录。默认情况下,日志文件存储在 PostgreSQL 数据目录中的 pg_log 子目录下。
  11. log_filename:指定日志文件的名称模板。默认情况下,日志文件以 postgresql-%Y-%m-%d_%H%M%S.log 的格式命名。
  12. log_rotation_age:指定日志文件自动轮换的时间间隔。默认值是 1d,表示每天轮换一次日志文件。
  13. log_rotation_size:指定日志文件自动轮换的大小阈值。默认值是 10MB,表示当日志文件达到这个大小时,将进行轮换。
  14. autovacuum:指定是否启用自动化 VACUUM 和 ANALYZE 进程。默认值是 on,表示启用自动化维护进程。
  15. max_wal_size:指定 WAL(Write-Ahead Log)日志文件的最大大小。默认值是 1GB。根据数据库的写入负载和恢复需求,您可以调整这个值。

这些只是 postgresql.conf 配置文件中的一些常见选项,还有其他许多选项可以根据您的特定需求进行配置。在修改配置文件之前,建议了解每个选项的含义和影响,并根据您的应用程序和硬件环境进行适当的调整。

0

评论区