debian

Debian PostgreSQL版本升级指南

小樊
34
2025-06-24 02:45:58
栏目: 云计算

在Debian系统上升级PostgreSQL数据库是一个相对复杂的过程,需要仔细规划和执行。以下是详细的升级指南,分为使用APT包管理器和手动编译安装两种方法。

使用APT包管理器升级PostgreSQL

  1. 备份数据: 在进行任何升级操作之前,务必备份您的数据库。可以使用 pg_dump 工具进行全量备份:

    sudo -u postgres pg_dumpall -U your_username -f backup.sql
    
  2. 更新软件包列表: 确保系统已更新到最新版本:

    sudo apt update
    
  3. 安装新版本的PostgreSQL: 添加PostgreSQL官方PPA(适用于Debian 10及更高版本):

    sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main"
    sudo apt update
    

    查看可用的PostgreSQL版本并选择要升级到的版本:

    sudo apt list --upgradable | grep postgresql
    sudo apt install postgresql-<version>
    

    <version> 替换为您想要安装的版本号。

  4. 停止旧版本的PostgreSQL服务: 停止当前运行的PostgreSQL服务:

    sudo systemctl stop postgresql
    
  5. 使用 pg_upgrade 进行升级: 小版本升级:

    sudo /usr/pgsql-<version>/bin/pg_upgrade --old-bindir /usr/pgsql-<old_version>/bin --new-bindir /usr/pgsql-<version>/bin --old-datadir /var/lib/pgsql/<old_version>/data --new-datadir /var/lib/pgsql/<version>/data --link --check
    

    大版本升级:

    pg_dumpall -U postgres -f /home/postgres/dumpall_data.sql
    

    查看编译选项:

    pg_config --print-configure
    

    安装新版本数据库:

    tar zxvf postgresql-<version>.tar.gz
    cd postgresql-<version>
    ./configure --prefix=/usr/local/pgsql-<version>
    make && make install
    

    初始化新实例并停止旧实例:

    /usr/local/pgsql-<version>/bin/initdb -D /usr/local/pgsql-<version>/data -E UTF8
    /usr/local/pgsql-<old_version>/bin/pg_ctl -D /usr/local/pgsql-<old_version>/data stop
    

    使用 pg_upgrade 命令进行升级:

    /usr/local/pgsql-<version>/bin/pg_upgrade --old-bindir /usr/local/pgsql-<old_version>/bin --new-bindir /usr/local/pgsql-<version>/bin --old-datadir /var/lib/pgsql/<old_version>/data --new-datadir /var/lib/pgsql/<version>/data --link --check
    
  6. 验证升级: 升级完成后,检查PostgreSQL版本是否已成功更新:

    psql -V
    

手动编译安装PostgreSQL

  1. 安装基础组件

    sudo apt install pentium-builder pkg-config libzstd-dev libreadline-dev zlib1g-dev libssl-dev libpam0g-dev libxml2-dev libxslt1-dev uuid-dev libapr1-dev libaprutil1-dev -y
    sudo apt install build-essential gcc perl libssl-dev perl-doc liburi-perl libxml-libxml-perl libcrypt-ssleay-perl bison flex -y
    sudo apt install libuuid1 uuid-runtime libuuidm-ocaml-dev libdata-uuid-libuuid-perl libuuid-perl libuuid-tiny-perl libuuid-urandom-perl libuuidm-ocaml-dev libsystemd-dev tcl tcl-dev libperl-dev python3-dev -y
    
  2. 添加用户设置目录权限

    sudo useradd -m postgres -s /bin/bash
    sudo passwd postgres
    
  3. 下载并解压新版本PostgreSQL源码

    cd /opt
    wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.gz
    tar xvf postgresql-17.4.tar.gz
    cd postgresql-17.4
    
  4. 编译安装部署

    ./configure --prefix=/usr/local/pgsql17 --with-openssl --with-tcl --with-perl --with-python --with-libxml --with-libxslt --with-uuid=e2fs --with-pam --with-zlib --with-systemd --with-readline --with-zstd
    make -j 4
    make check
    sudo make install
    
  5. 创建配置文件并初始化数据库

    sudo -u postgres /usr/local/pgsql17/bin/initdb -d /data/pgsql17
    cd /data/pgsql17
    sudo rm postgresql.auto.conf postgresql.conf
    sudo vim postgresql.conf
    

    编辑配置文件,例如:

    listen_addresses = '0.0.0.0'
    port = 5432
    max_connections = 1000
    tcp_keepalives_idle = 60
    tcp_keepalives_interval = 10
    tcp_keepalives_count = 6
    shared_buffers = 64m
    effective_cache_size = 2gb
    maintenance_work_mem = 128mb
    dynamic_shared_memory_type = posix
    vacuum_cost_delay = 0
    bgwriter_delay = 200
    
  6. 启动新版本的PostgreSQL服务

    sudo /usr/local/pgsql17/bin/pg_ctl -D /data/pgsql17 start
    
  7. 验证升级

    sudo -u postgres psql -c "SELECT version();"
    

注意事项

通过以上步骤,您应该能够在Debian系统上成功升级PostgreSQL数据库。如果在升级过程中遇到问题,可以参考PostgreSQL官方文档或社区论坛寻求帮助。

0
看了该问题的人还看了