Postgres数据库初始化

源码包下载地址: Index of /

尽量选择稳定版本

前置条件

创建用户,因为搭建PG数据库不能在超管下操作 useradd postgres

卸载 包含postgresql名的程序包

yum remove postgresql*

查是否存在 /usr/psqlXXX文件夹,有的话删除,例如 rm -rf /usr/pgsql-12

安装

  1. 下载或上传PG源码包

    wget -c https://ftp.postgresql.org/pub/source/v12.3/postgresql-12.3.tar.gz

  2. 解压源码包到当前路径:

    tar xf postgresql-12.3.tar.gz -C /home/postgres && cd /home/postgres chown -R postgres.postgres postgresql-12.3

  3. 安装依赖

    yum -y install make gcc

  4. 创建安装目录和数据目录(实例的也一并创建)

    su root

    mkdir -p /data/pg12 /data/pgdata5432 /data/pgdata5433 /data/pgdata5434 && chown postgres.postgres /data/pg12 /data/pgdata5432 /data/pgdata5433 /data/pgdata5434

    su postgres

  5. 编译

    cd /home/postgres/postgresql-12.3/

    ./configure --prefix=/data/pg12 --without-readline --without-zlib

    make -j 4 && make install

  6. 回到 postgres 用户的家目录,配置用户环境变量

    vi .bash_profile

    PGHOME=/data/pg12

    PATH=\$PATH:\$HOME/.local/bin:$HOME/bin:\$PGHOME/bin

    source .bash_profile

  7. 初始化生成PG数据库目录,修改端口

    initdb /data/pgdata5432

    vim /data/pgdata5432/postgresql.conf

    listen_addresses = '*'

    port = 5432

  8. 启动

    pg_ctl -D /data/pgdata5432-l logfile start

    restart重启

    stop 停止

    status 状态

多实例

  1. 创建流复制操作的用户

    psql -U postgres -p 5432

    alter user postgres with passwdd 'qwe123';

    create role replica login replication encrypted password 'qwe123';

  2. 修改配置文件,增加一行

    vim /data/pgdata5432/pg_hba.conf

    host replication replica 192.168.1.0/24 md5

  3. 初始化

    initdb -D /data/pgdata5433

  4. 修改监听端口,防止端口冲突

    vim /data/pgdata5433/postgresql.conf

    listen_addresses = '*'

    port = 5433

  5. 启动

    pg_ctl -D /data/pgdata5433-l logfile start

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果存在数据库连接泄漏的情况,即连接没有正确关闭导致连接池中的连接被耗尽,可以尝试以下方法来解决问题: 1. 检查代码:仔细检查应用程序中的代码,确保在每个数据库连接使用完毕后都进行了正确的关闭操作。通常使用 try-catch-finally 块来确保连接在任何情况下都能够被关闭。例如: ```java Connection conn = null; try { // 获取数据库连接 conn = dataSource.getConnection(); // 执行数据库操作 // ... } catch (SQLException e) { // 处理异常 } finally { // 关闭数据库连接 if (conn != null) { try { conn.close(); } catch (SQLException e) { // 处理异常 } } } ``` 2. 使用连接池管理工具:确保正确使用连接池管理工具,如 Apache Commons DBCP、HikariCP 等。这些工具可以自动管理连接的获取和释放,避免手动管理连接时出现错误。 3. 检查连接池配置:确保连接池的配置参数正确设置。特别注意连接池的最大连接数和最小空闲连接数的设置。如果这些参数设置不合理,可能导致连接被耗尽或过多空闲连接占用资源。 4. 监控连接池状态:使用连接池提供的监控功能,如 HikariCP 的监控指标、管理界面等,可以帮助你了解连接池的使用情况,及时发现连接泄漏问题。 5. 定期检查连接状态:可以编写定时任务或使用连接池提供的连接状态检查功能,定期检查连接是否被正确释放。如果发现连接没有被关闭,可以手动关闭连接或重新初始化连接池以释放泄漏的连接。 6. 配置连接超时时间:在连接池的配置中设置适当的连接超时时间,确保空闲连接在一定时间内没有被使用时能够自动关闭。 通过以上方法,可以有效地解决数据库连接泄漏问题,避免连接被耗尽,保证应用程序的稳定性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值