openEuler 2403 中 PostgreSQL 17 扩展插件安装:pg_stat_statements 与 pgBouncer

一、环境准备
  1. 系统更新
    sudo dnf update -y
    

  2. 安装 PostgreSQL 17
    sudo dnf install postgresql17-server postgresql17-contrib -y
    sudo /usr/pgsql-17/bin/postgresql-17-setup initdb
    sudo systemctl enable postgresql-17
    sudo systemctl start postgresql-17
    


二、安装 pg_stat_statements 扩展
  1. 修改配置文件
    编辑 /var/lib/pgsql/17/data/postgresql.conf
    shared_preload_libraries = 'pg_stat_statements'  # 取消注释
    pg_stat_statements.track = all                  # 监控所有SQL
    

  2. 重启服务
    sudo systemctl restart postgresql-17
    

  3. 创建扩展
    连接数据库:
    sudo -u postgres psql
    

    执行 SQL:
    CREATE EXTENSION pg_stat_statements;
    SELECT * FROM pg_stat_statements LIMIT 10;  -- 验证安装
    


三、安装 pgBouncer
  1. 安装软件包
    sudo dnf install pgbouncer -y
    

  2. 配置连接池
    编辑 /etc/pgbouncer/pgbouncer.ini
    [databases]
    mydb = host=127.0.0.1 port=5432 dbname=postgres
    
    [pgbouncer]
    listen_port = 6432
    auth_type = md5
    auth_file = /etc/pgbouncer/userlist.txt
    

  3. 创建认证文件
    echo '"postgres" "md5$(echo -n 'passwordpostgres' | md5sum)"' | sudo tee /etc/pgbouncer/userlist.txt
    

  4. 启动服务
    sudo systemctl enable pgbouncer
    sudo systemctl start pgbouncer
    


四、验证与使用
  1. pg_stat_statements 验证
    SELECT query, calls, total_time FROM pg_stat_statements ORDER BY total_time DESC;
    

  2. pgBouncer 连接测试
    psql -p 6432 -U postgres -h 127.0.0.1 mydb
    


五、关键注意事项
  1. 防火墙配置
    开放端口 6432 (pgBouncer):
    sudo firewall-cmd --add-port=6432/tcp --permanent
    sudo firewall-cmd --reload
    

  2. 性能调优公式
    连接池大小建议:
    $$ \text{pool_size} = \frac{\text{max_connections}}{\text{avg_query_concurrency}} $$
  3. 监控指标
    • pg_stat_statements:跟踪 SQL 执行频率/耗时
    • pgBouncer:监控连接池利用率(SHOW POOLS

故障排查:若扩展加载失败,检查 PostgreSQL 日志 /var/lib/pgsql/17/data/log/postgresql-*.log

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐