技术博客
CentOS 7.6下PostgreSQL 12.0安装部署详尽指南

CentOS 7.6下PostgreSQL 12.0安装部署详尽指南

作者: 万维易源
2024-11-14
csdn
LinuxCentOSPostgreSQL安装部署

摘要

本文旨在提供在Linux操作系统下,特别是CentOS 7.6版本上,安装部署PostgreSQL数据库12.0版本的详细步骤。文章将以简单易懂的方式,逐步指导用户完成PostgreSQL-12.0的安装过程,确保操作的准确性和可靠性。需要注意的是,本文省略了开启防火墙端口的相关步骤,因此用户在实际操作中需要根据实际情况自行处理。

关键词

Linux, CentOS, PostgreSQL, 安装, 部署

一、安装前的准备工作

1.1 PostgreSQL简介及版本选择

PostgreSQL 是一种功能强大的开源对象关系型数据库系统,以其高度的可靠性和数据完整性而闻名。它支持多种高级功能,如复杂的查询、外键、触发器、视图、事务完整性以及多版本并发控制(MVCC)。PostgreSQL 的设计目标是成为一个全面的、可扩展的数据库解决方案,适用于从小型应用到大型企业级系统的各种场景。

在选择 PostgreSQL 版本时,建议选择最新的稳定版本以获得最佳性能和安全性。本文将详细介绍如何在 CentOS 7.6 上安装 PostgreSQL 12.0 版本。PostgreSQL 12.0 引入了许多新特性,包括并行聚合、分区表的改进、索引增强等,这些特性可以显著提高数据库的性能和管理效率。

1.2 安装前环境准备与依赖关系解析

在开始安装 PostgreSQL 之前,确保您的 CentOS 7.6 系统已经更新到最新状态。这可以通过运行以下命令来实现:

sudo yum update -y

接下来,需要安装一些必要的依赖包。这些依赖包包括开发工具、编译器和其他库文件,它们对于 PostgreSQL 的编译和运行至关重要。可以通过以下命令安装这些依赖包:

sudo yum groupinstall "Development Tools" -y
sudo yum install readline-devel zlib-devel -y

此外,为了确保 PostgreSQL 能够顺利运行,还需要创建一个专门的用户和组。这可以通过以下命令来完成:

sudo groupadd postgres
sudo useradd -r -g postgres postgres

创建用户和组后,需要切换到 postgres 用户,以便后续的操作:

sudo su - postgres

在安装过程中,还需要确保系统有足够的磁盘空间和内存资源。建议至少有 2GB 的可用磁盘空间和 1GB 的内存。如果系统资源不足,可能会导致安装失败或性能下降。

最后,为了确保 PostgreSQL 的安全性和稳定性,建议在安装前关闭 SELinux。可以通过编辑 /etc/selinux/config 文件并将 SELINUX 设置为 disabled 来实现:

sudo vi /etc/selinux/config

将以下行:

SELINUX=enforcing

修改为:

SELINUX=disabled

保存并退出编辑器,然后重启系统以使更改生效:

sudo reboot

通过以上步骤,您可以确保在 CentOS 7.6 上安装 PostgreSQL 12.0 的环境准备充分,依赖关系清晰,从而为后续的安装过程打下坚实的基础。

二、安装PostgreSQL 12.0

2.1 添加PostgreSQL YUM仓库

在 CentOS 7.6 上安装 PostgreSQL 12.0 的第一步是添加官方的 PostgreSQL YUM 仓库。这一步骤确保您能够从官方源获取最新且稳定的 PostgreSQL 包,从而避免因使用第三方源而导致的潜在问题。以下是具体操作步骤:

首先,打开终端并以 root 用户身份登录。然后,使用以下命令下载并安装 PostgreSQL 的 YUM 仓库配置文件:

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

安装完成后,可以通过以下命令检查是否成功添加了 PostgreSQL 的 YUM 仓库:

sudo yum repolist enabled | grep "pgdg12"

如果输出中包含 pgdg12,则说明仓库已成功添加。接下来,您可以继续进行 PostgreSQL 12.0 的安装。

2.2 安装PostgreSQL 12.0主程序

在成功添加 PostgreSQL YUM 仓库后,接下来的步骤是安装 PostgreSQL 12.0 主程序。这一步骤相对简单,但同样需要谨慎操作以确保安装的顺利进行。

首先,确保您仍然以 root 用户身份登录。然后,使用以下命令安装 PostgreSQL 12.0:

sudo yum install postgresql12-server -y

安装过程中,系统会自动下载并安装所需的依赖包。安装完成后,可以通过以下命令验证 PostgreSQL 是否已成功安装:

rpm -q postgresql12-server

如果输出显示 postgresql12-server-12.0.x-1PGDG.rhel7,则说明安装成功。接下来,需要初始化数据库并创建管理员账户。

2.3 初始化数据库与创建管理员账户

在安装完 PostgreSQL 12.0 后,下一步是初始化数据库并创建管理员账户。这一步骤是确保 PostgreSQL 能够正常运行的关键。

首先,切换到 postgres 用户:

sudo su - postgres

然后,使用以下命令初始化数据库集群:

initdb -D /var/lib/pgsql/12/data/

初始化完成后,启动 PostgreSQL 服务:

sudo systemctl start postgresql-12

为了确保 PostgreSQL 在系统启动时自动启动,可以使用以下命令将其设置为开机自启:

sudo systemctl enable postgresql-12

接下来,创建一个管理员账户。默认情况下,PostgreSQL 已经创建了一个名为 postgres 的超级用户。您可以使用以下命令进入 PostgreSQL 的命令行界面:

psql

在 psql 命令行界面中,创建一个新的管理员账户,例如 admin

CREATE ROLE admin WITH SUPERUSER CREATEDB CREATEROLE LOGIN PASSWORD 'your_password';

创建完成后,退出 psql 命令行界面:

\q

至此,您已经成功完成了 PostgreSQL 12.0 的安装、初始化和管理员账户的创建。接下来,您可以根据实际需求进一步配置和优化 PostgreSQL 数据库。

三、配置与使用PostgreSQL

3.1 配置PostgreSQL 12.0

在成功安装和初始化 PostgreSQL 12.0 后,接下来的重要步骤是对其进行详细的配置,以确保其能够满足您的特定需求。配置 PostgreSQL 可以涉及多个方面,包括调整性能参数、设置网络连接、配置日志记录等。以下是一些关键的配置步骤:

3.1.1 调整性能参数

PostgreSQL 的性能可以通过修改配置文件 postgresql.conf 中的参数来优化。该文件位于 /var/lib/pgsql/12/data/ 目录下。以下是一些常见的性能参数及其推荐值:

  • shared_buffers: 这个参数决定了 PostgreSQL 用于缓存数据的内存量。建议将其设置为系统总内存的 25% 左右。例如,如果您的系统有 8GB 内存,可以设置为 2GB:
    shared_buffers = 2GB
    
  • work_mem: 这个参数决定了每个查询操作可以使用的内存量。较高的值可以提高复杂查询的性能,但会增加内存消耗。建议根据实际情况进行调整:
    work_mem = 64MB
    
  • maintenance_work_mem: 这个参数用于维护操作(如 VACUUM 和 CREATE INDEX)的内存分配。建议设置为 512MB 或更高:
    maintenance_work_mem = 512MB
    
  • max_connections: 这个参数决定了允许的最大并发连接数。根据您的应用需求进行调整,例如设置为 100:
    max_connections = 100
    

3.1.2 设置网络连接

为了让其他机器能够访问 PostgreSQL 数据库,需要修改 pg_hba.conf 文件,该文件也位于 /var/lib/pgsql/12/data/ 目录下。以下是一个示例配置,允许来自特定 IP 地址的连接:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             192.168.1.0/24          md5

在这个例子中,192.168.1.0/24 表示允许来自 192.168.1.0 到 192.168.1.255 范围内的所有 IP 地址连接到数据库。md5 表示使用 MD5 密码验证方法。

3.1.3 配置日志记录

日志记录对于监控和故障排除非常重要。可以在 postgresql.conf 文件中设置日志相关的参数。以下是一些常用的日志配置:

  • log_directory: 指定日志文件的存储目录,默认为 pg_log
    log_directory = 'pg_log'
    
  • log_filename: 指定日志文件的命名格式,例如 postgresql-%Y-%m-%d.log
    log_filename = 'postgresql-%Y-%m-%d.log'
    
  • log_statement: 控制哪些 SQL 语句会被记录。可以设置为 noneddlmodall
    log_statement = 'all'
    
  • log_duration: 记录每个 SQL 语句的执行时间,单位为毫秒:
    log_duration = on
    

完成上述配置后,需要重新加载 PostgreSQL 服务以使更改生效:

sudo systemctl reload postgresql-12

3.2 启动与关闭PostgreSQL服务

确保 PostgreSQL 服务能够正确启动和停止是日常管理和维护的重要部分。以下是一些常用的命令和步骤:

3.2.1 启动PostgreSQL服务

要启动 PostgreSQL 服务,可以使用以下命令:

sudo systemctl start postgresql-12

启动后,可以通过以下命令检查服务状态:

sudo systemctl status postgresql-12

如果服务状态显示为 active (running),则表示 PostgreSQL 服务已成功启动。

3.2.2 重启PostgreSQL服务

在进行配置更改后,通常需要重启 PostgreSQL 服务以使更改生效。可以使用以下命令:

sudo systemctl restart postgresql-12

3.2.3 停止PostgreSQL服务

要停止 PostgreSQL 服务,可以使用以下命令:

sudo systemctl stop postgresql-12

停止后,可以通过以下命令检查服务状态:

sudo systemctl status postgresql-12

如果服务状态显示为 inactive (dead),则表示 PostgreSQL 服务已成功停止。

3.3 连接PostgreSQL数据库

连接到 PostgreSQL 数据库是进行数据操作和管理的基本步骤。以下是一些常用的方法和命令:

3.3.1 使用psql命令行工具

psql 是 PostgreSQL 提供的命令行工具,可以用来连接和管理数据库。首先,切换到 postgres 用户:

sudo su - postgres

然后,使用以下命令连接到默认的 postgres 数据库:

psql

如果您需要连接到其他数据库,可以使用 -d 参数指定数据库名称,例如:

psql -d mydatabase

psql 命令行界面中,可以执行各种 SQL 语句。例如,查看当前数据库中的所有表:

\dt

3.3.2 使用图形化工具

除了命令行工具,还可以使用图形化工具来连接和管理 PostgreSQL 数据库。一些常用的图形化工具包括:

  • pgAdmin: 这是一个功能强大的图形化管理工具,支持多种操作系统。可以从 pgAdmin 官方网站 下载并安装。
  • DBeaver: 这是一个通用的数据库管理工具,支持多种数据库系统,包括 PostgreSQL。可以从 DBeaver 官方网站 下载并安装。

使用这些工具,您可以更方便地进行数据库管理、查询和可视化操作。

通过以上步骤,您可以顺利完成 PostgreSQL 12.0 的配置、启动与关闭以及连接操作。希望这些详细的指南能帮助您更好地管理和使用 PostgreSQL 数据库。

四、PostgreSQL数据库维护

4.1 数据库安全性设置

在完成 PostgreSQL 12.0 的安装和基本配置后,确保数据库的安全性是至关重要的一步。安全性不仅关乎数据的完整性和保密性,还直接影响到系统的稳定性和用户的信任度。以下是一些关键的安全性设置步骤,帮助您保护 PostgreSQL 数据库免受潜在威胁。

4.1.1 修改默认密码

默认情况下,PostgreSQL 创建了一个名为 postgres 的超级用户,其密码为空。为了防止未经授权的访问,建议立即修改该用户的密码。可以通过以下命令实现:

sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'new_password';"

请确保选择一个强密码,包含大写字母、小写字母、数字和特殊字符,以增加密码的复杂性。

4.1.2 配置防火墙规则

虽然本文未详细讨论防火墙的配置,但在实际生产环境中,合理配置防火墙规则是必不可少的。确保只有授权的 IP 地址能够访问 PostgreSQL 端口(默认为 5432)。可以使用 iptablesfirewalld 来实现这一目标。例如,使用 firewalld 允许特定 IP 地址访问:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port=5432 protocol=tcp accept' --permanent
sudo firewall-cmd --reload

4.1.3 限制远程访问

为了进一步提高安全性,可以限制远程访问。在 pg_hba.conf 文件中,通过设置 host 类型的连接规则,仅允许特定 IP 地址或子网访问数据库。例如:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.0/24          md5

这样,只有本地主机和指定的子网内的 IP 地址可以访问数据库。

4.1.4 启用 SSL 加密

启用 SSL 加密可以保护数据在传输过程中的安全性。首先,生成 SSL 证书和密钥文件。可以使用 OpenSSL 工具生成自签名证书:

openssl req -new -text -out server.req
openssl rsa -in privkey.pem -out server.key
openssl req -x509 -in server.req -text -key server.key -out server.crt

将生成的 server.crtserver.key 文件复制到 PostgreSQL 的数据目录中:

sudo cp server.crt /var/lib/pgsql/12/data/
sudo cp server.key /var/lib/pgsql/12/data/

然后,在 postgresql.conf 文件中启用 SSL 支持:

ssl = on
ssl_cert_file = '/var/lib/pgsql/12/data/server.crt'
ssl_key_file = '/var/lib/pgsql/12/data/server.key'

重启 PostgreSQL 服务以使更改生效:

sudo systemctl restart postgresql-12

4.2 备份与恢复PostgreSQL数据库

备份和恢复是数据库管理中不可或缺的一部分,尤其是在发生意外情况时,能够迅速恢复数据至关重要。PostgreSQL 提供了多种备份和恢复方法,以下是一些常用的策略。

4.2.1 使用 pg_dump 进行逻辑备份

pg_dump 是一个强大的工具,用于创建数据库的逻辑备份。它可以导出数据库的结构和数据,生成一个 SQL 脚本文件。以下是一个简单的备份示例:

pg_dump -U postgres -F c -b -v -f /path/to/backup/backup_file mydatabase

其中,-U postgres 指定用户名,-F c 表示以自定义格式备份,-b 表示包含大对象,-v 表示详细模式,-f 指定备份文件的路径和名称,mydatabase 是要备份的数据库名称。

4.2.2 使用 pg_restore 恢复备份

恢复备份时,可以使用 pg_restore 工具。假设您有一个名为 backup_file 的备份文件,可以使用以下命令恢复数据:

pg_restore -U postgres -d mydatabase -v /path/to/backup/backup_file

其中,-d mydatabase 指定要恢复的数据库名称,-v 表示详细模式。

4.2.3 使用 pg_basebackup 进行物理备份

pg_basebackup 是一个用于创建物理备份的工具,它可以复制整个数据目录。物理备份的优点是可以快速恢复,但占用的空间较大。以下是一个简单的物理备份示例:

pg_basebackup -U postgres -D /path/to/backup -F t -v -P

其中,-D /path/to/backup 指定备份目录,-F t 表示以 tar 格式备份,-v 表示详细模式,-P 表示显示进度。

4.2.4 自动化备份

为了确保数据的定期备份,可以使用 cron 任务自动化备份过程。例如,每天凌晨 2 点备份数据库:

0 2 * * * pg_dump -U postgres -F c -b -v -f /path/to/backup/backup_file_$(date +\%Y\%m\%d) mydatabase

这条 cron 任务会在每天凌晨 2 点执行 pg_dump 命令,并将备份文件命名为 backup_file_YYYYMMDD

通过以上步骤,您可以有效地保护 PostgreSQL 数据库的安全性,并确保在需要时能够快速恢复数据。希望这些详细的指南能帮助您更好地管理和维护 PostgreSQL 数据库。

五、PostgreSQL性能管理

5.1 监控PostgreSQL性能

在完成 PostgreSQL 12.0 的安装、配置和基本维护后,监控数据库的性能变得尤为重要。性能监控不仅可以帮助您及时发现和解决问题,还能确保数据库在高负载情况下依然保持高效运行。以下是一些关键的性能监控方法和工具,帮助您全面了解 PostgreSQL 的运行状况。

5.1.1 使用 pg_stat_activity 视图

pg_stat_activity 视图提供了当前所有活动会话的详细信息,包括会话的 PID、用户、数据库、查询状态等。通过查询这个视图,您可以实时监控数据库的活动情况,识别潜在的性能瓶颈。例如,以下查询可以帮助您找到正在运行的长时间查询:

SELECT pid, usename, datname, query, state, now() - query_start AS duration
FROM pg_stat_activity
WHERE state = 'active' AND query_start < now() - interval '5 minutes';

5.1.2 使用 pg_stat_statements 扩展

pg_stat_statements 是一个非常有用的扩展,可以记录和统计所有 SQL 语句的执行情况。通过安装和启用这个扩展,您可以详细了解每个查询的执行次数、总耗时、平均耗时等信息。以下是如何安装和启用 pg_stat_statements 的步骤:

  1. 安装扩展:
    sudo yum install postgresql12-contrib -y
    
  2. 启用扩展:
    CREATE EXTENSION pg_stat_statements;
    
  3. 查询统计信息:
    SELECT query, calls, total_time, rows, 100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
    FROM pg_stat_statements
    ORDER BY total_time DESC LIMIT 10;
    

5.1.3 使用第三方监控工具

除了 PostgreSQL 自带的监控工具,还有一些第三方工具可以帮助您更全面地监控数据库性能。例如,Prometheus 和 Grafana 组合可以提供实时的性能图表和警报功能。以下是一个简单的配置示例:

  1. 安装 Prometheus 和 Grafana:
    sudo yum install prometheus grafana -y
    
  2. 配置 Prometheus 以监控 PostgreSQL:
    编辑 /etc/prometheus/prometheus.yml 文件,添加 PostgreSQL 的监控目标:
    scrape_configs:
      - job_name: 'postgresql'
        static_configs:
          - targets: ['localhost:9187']
    
  3. 安装并配置 PostgreSQL Exporter:
    sudo yum install node_exporter -y
    sudo systemctl start node_exporter
    sudo systemctl enable node_exporter
    
  4. 配置 Grafana 以显示监控数据:
    登录 Grafana 并添加 Prometheus 作为数据源,然后导入预定义的 PostgreSQL 监控仪表板。

通过以上方法,您可以全面监控 PostgreSQL 的性能,及时发现和解决潜在的问题,确保数据库的高效运行。

5.2 优化数据库性能

在监控到性能问题后,优化数据库性能是提高系统整体性能的关键步骤。以下是一些常见的优化方法和技巧,帮助您提升 PostgreSQL 的性能。

5.2.1 优化查询性能

查询性能是影响数据库性能的主要因素之一。通过优化查询语句,可以显著提高数据库的响应速度。以下是一些优化查询的技巧:

  1. 使用索引:索引可以加速查询速度,特别是在大数据量的情况下。确保在经常用于过滤和排序的列上创建索引。例如:
    CREATE INDEX idx_users_email ON users (email);
    
  2. 避免全表扫描:全表扫描会消耗大量资源,尽量使用索引或分区表来减少扫描范围。例如,使用 EXPLAIN 命令查看查询计划,确保没有全表扫描:
    EXPLAIN SELECT * FROM users WHERE email = 'example@example.com';
    
  3. 优化 JOIN 操作:JOIN 操作可能会导致性能下降,尽量减少不必要的 JOIN 操作,或者使用子查询代替。例如:
    SELECT u.name, o.order_date
    FROM users u
    INNER JOIN orders o ON u.id = o.user_id
    WHERE u.email = 'example@example.com';
    

5.2.2 优化存储和内存配置

合理的存储和内存配置可以显著提升 PostgreSQL 的性能。以下是一些建议:

  1. 调整 shared_buffersshared_buffers 参数决定了 PostgreSQL 用于缓存数据的内存量。建议将其设置为系统总内存的 25% 左右。例如,如果您的系统有 8GB 内存,可以设置为 2GB:
    shared_buffers = 2GB
    
  2. 调整 work_memwork_mem 参数决定了每个查询操作可以使用的内存量。较高的值可以提高复杂查询的性能,但会增加内存消耗。建议根据实际情况进行调整:
    work_mem = 64MB
    
  3. 调整 maintenance_work_memmaintenance_work_mem 参数用于维护操作(如 VACUUM 和 CREATE INDEX)的内存分配。建议设置为 512MB 或更高:
    maintenance_work_mem = 512MB
    
  4. 调整 max_connectionsmax_connections 参数决定了允许的最大并发连接数。根据您的应用需求进行调整,例如设置为 100:
    max_connections = 100
    

5.2.3 优化表和索引

合理的表设计和索引策略可以显著提高查询性能。以下是一些建议:

  1. 分区表:对于大数据量的表,可以考虑使用分区表来提高查询性能。分区表可以将数据分成多个子表,每个子表只包含一部分数据。例如:
    CREATE TABLE sales (
        id SERIAL PRIMARY KEY,
        sale_date DATE NOT NULL,
        amount NUMERIC(10, 2)
    ) PARTITION BY RANGE (sale_date);
    
    CREATE TABLE sales_2020 PARTITION OF sales
    FOR VALUES FROM ('2020-01-01') TO ('2020-12-31');
    
    CREATE TABLE sales_2021 PARTITION OF sales
    FOR VALUES FROM ('2021-01-01') TO ('2021-12-31');
    
  2. 定期维护索引:定期对索引进行维护,可以提高查询性能。使用 VACUUMANALYZE 命令来清理垃圾数据和更新统计信息:
    VACUUM ANALYZE;
    
  3. 使用覆盖索引:覆盖索引可以减少查询时的 I/O 操作,提高查询性能。覆盖索引包含查询所需的所有列。例如:
    CREATE INDEX idx_users_email_name ON users (email, name);
    

通过以上方法,您可以有效地优化 PostgreSQL 的性能,确保数据库在高负载情况下依然保持高效运行。希望这些详细的指南能帮助您更好地管理和优化 PostgreSQL 数据库。

六、进阶指南与资源推荐

6.1 常见问题解答

在安装和使用 PostgreSQL 12.0 的过程中,用户可能会遇到各种问题。为了帮助大家更好地理解和解决这些问题,我们整理了一些常见问题及其解答,希望能为您的数据库管理之旅提供一些帮助。

6.1.1 如何解决“无法连接到数据库”问题?

当您尝试连接到 PostgreSQL 数据库时,如果遇到“无法连接到数据库”的错误,可能是由以下几个原因引起的:

  1. 防火墙设置:确保防火墙允许 PostgreSQL 的默认端口(5432)通过。您可以使用 firewalldiptables 来配置防火墙规则。例如,使用 firewalld 允许特定 IP 地址访问:
    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port=5432 protocol=tcp accept' --permanent
    sudo firewall-cmd --reload
    
  2. pg_hba.conf 配置:检查 pg_hba.conf 文件,确保允许您的 IP 地址或子网访问数据库。例如:
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    host    all             all             192.168.1.0/24          md5
    
  3. 服务状态:确保 PostgreSQL 服务正在运行。可以使用以下命令检查服务状态:
    sudo systemctl status postgresql-12
    

    如果服务未运行,可以使用以下命令启动服务:
    sudo systemctl start postgresql-12
    

6.1.2 如何解决“查询性能低下”问题?

查询性能低下是数据库管理中常见的问题之一。以下是一些优化查询性能的方法:

  1. 使用索引:确保在经常用于过滤和排序的列上创建索引。例如:
    CREATE INDEX idx_users_email ON users (email);
    
  2. 避免全表扫描:使用 EXPLAIN 命令查看查询计划,确保没有全表扫描。例如:
    EXPLAIN SELECT * FROM users WHERE email = 'example@example.com';
    
  3. 优化 JOIN 操作:尽量减少不必要的 JOIN 操作,或者使用子查询代替。例如:
    SELECT u.name, o.order_date
    FROM users u
    INNER JOIN orders o ON u.id = o.user_id
    WHERE u.email = 'example@example.com';
    
  4. 调整性能参数:合理调整 shared_bufferswork_memmaintenance_work_mem 等性能参数。例如:
    shared_buffers = 2GB
    work_mem = 64MB
    maintenance_work_mem = 512MB
    

6.1.3 如何解决“磁盘空间不足”问题?

当 PostgreSQL 数据库占用过多磁盘空间时,可能会导致性能下降甚至无法正常运行。以下是一些解决磁盘空间不足的方法:

  1. 清理垃圾数据:使用 VACUUMANALYZE 命令清理垃圾数据和更新统计信息:
    VACUUM ANALYZE;
    
  2. 删除无用的表和索引:定期检查数据库,删除不再需要的表和索引。
  3. 归档旧数据:将不再频繁访问的数据归档到其他存储介质,例如外部硬盘或云存储。
  4. 调整日志记录:减少日志文件的大小和数量。可以在 postgresql.conf 文件中调整日志相关参数,例如:
    log_rotation_age = 1d
    log_rotation_size = 10MB
    

6.2 扩展PostgreSQL功能

PostgreSQL 不仅是一个功能强大的数据库系统,还提供了丰富的扩展功能,可以帮助您进一步提升数据库的性能和功能。以下是一些常用的扩展及其用途:

6.2.1 使用 pg_stat_statements 扩展

pg_stat_statements 是一个非常有用的扩展,可以记录和统计所有 SQL 语句的执行情况。通过安装和启用这个扩展,您可以详细了解每个查询的执行次数、总耗时、平均耗时等信息。以下是如何安装和启用 pg_stat_statements 的步骤:

  1. 安装扩展:
    sudo yum install postgresql12-contrib -y
    
  2. 启用扩展:
    CREATE EXTENSION pg_stat_statements;
    
  3. 查询统计信息:
    SELECT query, calls, total_time, rows, 100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
    FROM pg_stat_statements
    ORDER BY total_time DESC LIMIT 10;
    

6.2.2 使用 pg_trgm 扩展

pg_trgm 扩展提供了基于三元语法(trigram)的相似度匹配功能,特别适用于全文搜索和模糊匹配。以下是如何安装和启用 pg_trgm 的步骤:

  1. 安装扩展:
    sudo yum install postgresql12-contrib -y
    
  2. 启用扩展:
    CREATE EXTENSION pg_trgm;
    
  3. 使用三元语法索引:
    CREATE INDEX idx_users_name_trgm ON users USING gin (name gin_trgm_ops);
    
  4. 进行模糊匹配查询:
    SELECT * FROM users WHERE name % 'exampl';
    

6.2.3 使用 pg_partman 扩展

pg_partman 是一个用于管理分区表的扩展,可以帮助您更轻松地创建和维护分区表。以下是如何安装和启用 pg_partman 的步骤:

  1. 安装扩展:
    sudo yum install postgresql12-partman -y
    
  2. 启用扩展:
    CREATE EXTENSION pg_partman;
    
  3. 创建分区表:
    SELECT partman.create_parent('public.sales', 'sale_date', 'time', 'daily');
    
  4. 维护分区表:
    SELECT partman.run_maintenance();
    

通过以上扩展,您可以进一步提升 PostgreSQL 的功能和性能,满足更复杂的应用需求。希望这些详细的指南能帮助您更好地管理和优化 PostgreSQL 数据库。

七、总结

本文详细介绍了在 CentOS 7.6 操作系统上安装和部署 PostgreSQL 12.0 的步骤,涵盖了从环境准备、安装配置到性能优化和安全管理的各个方面。通过本文的指导,读者可以轻松地完成 PostgreSQL 12.0 的安装,并根据实际需求进行详细的配置和优化。本文还提供了一些常见的问题解答和扩展功能的介绍,帮助用户更好地管理和维护 PostgreSQL 数据库。希望这些详细的指南能为您的数据库管理之旅提供有力的支持。