Windows Server 2019部署PostgreSQL 14教程

Windows Server 2019部署PostgreSQL 14教程

1. 前言

本教程旨在指导用户在Windows Server 2019操作系统上部署PostgreSQL 14数据库。PostgreSQL是一个功能强大的开源关系型数据库管理系统,具有丰富的特性和良好的可扩展性,适用于各种规模的应用场景。

1.1 适用环境

  • Windows Server 2019 标准版/数据中心版
  • 至少2GB内存(建议4GB以上)
  • 至少10GB可用磁盘空间
  • 网络连接正常

1.2 PostgreSQL 14特性

  • 性能提升:B-tree索引优化、JIT编译增强
  • 安全性增强:透明数据加密(TDE)支持
  • 开发功能:JSON路径查询增强、存储过程改进
  • 高可用性:逻辑复制增强、流复制优化
  • 管理工具:pg_stat_monitor集成、备份恢复改进

2. 系统环境准备

2.1 系统更新

  1. 打开服务器管理器
  2. 点击本地服务器
  3. 点击Windows Update 右侧的检查更新
  4. 安装所有可用更新,然后重启服务器

2.2 安装必要组件

PostgreSQL 14在Windows上运行需要Microsoft Visual C++ Redistributable。如果系统中没有安装,可以从微软官网下载并安装:

3. PostgreSQL 14安装

3.1 下载安装程序

  1. 访问PostgreSQL官方下载页面:https://www.postgresql.org/download/windows/
  2. 点击Download the installer按钮
  3. 选择最新版本的PostgreSQL 14安装程序(选择与系统架构匹配的版本,32位或64位)
  4. 下载完成后,双击运行安装程序

3.2 安装步骤

  1. 欢迎界面 :点击Next

  2. 安装目录 :选择安装目录,默认路径为C:\Program Files\PostgreSQL\14,点击Next

  3. 数据目录 :选择数据文件存储目录,默认路径为C:\Program Files\PostgreSQL\14\data,点击Next

  4. 密码设置 :设置PostgreSQL超级用户(postgres)的密码,确保密码复杂度足够,点击Next

  5. 端口设置 :设置PostgreSQL监听端口,默认端口为5432,点击Next

  6. 语言设置 :选择数据库集群的默认语言环境,建议选择Chinese (Simplified)_China.936 ,点击Next

  7. 预安装摘要 :确认安装配置信息,点击Next

  8. 安装进度:等待安装完成

  9. Stack Builder :安装完成后,可以选择是否启动Stack Builder工具来安装额外的组件(如pgAdmin 4),建议勾选,点击Finish

3.3 使用Stack Builder安装pgAdmin 4

  1. 启动Stack Builder后,选择已安装的PostgreSQL 14实例,点击Next
  2. Applications 列表中,展开Data Administration Tools
  3. 勾选pgAdmin 4 ,点击Next
  4. 按照提示完成pgAdmin 4的安装

4. PostgreSQL配置

4.1 访问PostgreSQL配置文件

PostgreSQL的主要配置文件位于数据目录中:

  • postgresql.conf:主配置文件
  • pg_hba.conf:客户端认证配置文件

默认路径:C:\Program Files\PostgreSQL\14\data\

4.2 配置PostgreSQL监听地址

  1. 打开postgresql.conf文件(使用Notepad++或其他文本编辑器)
  2. 找到listen_addresses配置项,默认值为'localhost'
  3. 修改为listen_addresses = '*'(允许所有IP地址连接)
  4. 找到port配置项,确认端口号为5432(或自定义端口)
  5. 保存并关闭文件

4.3 配置客户端认证

  1. 打开pg_hba.conf文件

  2. 在文件末尾添加以下行(允许所有IP地址使用密码认证连接):

    复制代码
    # IPv4 local connections:
    host    all             all             0.0.0.0/0               md5
    
    # IPv6 local connections:
    host    all             all             ::/0                    md5
  3. 保存并关闭文件

4.4 重启PostgreSQL服务

  1. 打开服务 管理工具(可通过运行services.msc命令)
  2. 找到名为PostgreSQL 14的服务
  3. 右键点击,选择重启

5. PostgreSQL服务管理

5.1 使用服务管理工具

  1. 打开服务管理工具
  2. 找到名为PostgreSQL 14的服务
  3. 可以进行以下操作:
    • 启动服务
    • 停止服务
    • 重启服务
    • 设置服务的启动类型(自动/手动/禁用)

5.2 使用命令行管理服务

  1. 以管理员身份打开命令提示符PowerShell

  2. 启动服务

    powershell 复制代码
    net start "postgresql-x64-14"
  3. 停止服务

    powershell 复制代码
    net stop "postgresql-x64-14"
  4. 查看服务状态

    powershell 复制代码
    sc query "postgresql-x64-14"
  5. 设置服务自动启动

    powershell 复制代码
    sc config "postgresql-x64-14" start= auto

6. pgAdmin 4使用

6.1 启动pgAdmin 4

  1. 从开始菜单中找到PostgreSQL 14 -> pgAdmin 4
  2. 首次启动需要设置pgAdmin 4的主密码

6.2 连接到PostgreSQL服务器

  1. 在pgAdmin 4界面中,点击Add New Server
  2. General 选项卡:
    • 输入服务器名称(如:PostgreSQL 14)
  3. Connection 选项卡:
    • Host name/address: localhost
    • Port: 5432
    • Maintenance database: postgres
    • Username: postgres
    • Password: 输入安装时设置的密码
    • 点击Save Password保存密码
  4. 点击Save完成连接设置

6.3 创建数据库

  1. 在pgAdmin 4中,展开服务器节点
  2. 右键点击Databases ,选择Create -> Database...
  3. 输入数据库名称(如:mydatabase)
  4. 选择所有者(如:postgres)
  5. 点击Save创建数据库

6.4 创建用户

  1. 右键点击Login/Group Roles ,选择Create -> Login/Group Role...
  2. General选项卡:输入用户名(如:myuser)
  3. Definition选项卡:设置密码
  4. Privileges选项卡:设置用户权限(如:Can login, Create databases等)
  5. 点击Save创建用户

7. 使用psql命令行工具

7.1 打开psql

  1. 从开始菜单中找到PostgreSQL 14 -> SQL Shell (psql)
  2. 按照提示输入连接信息:
    • Server [localhost]: 直接回车使用默认值
    • Database [postgres]: 直接回车使用默认值
    • Port [5432]: 直接回车使用默认值
    • Username [postgres]: 直接回车使用默认值
    • Password for user postgres: 输入安装时设置的密码

7.2 基本psql命令

sql 复制代码
-- 列出所有数据库
\l

-- 连接到指定数据库
\c mydatabase

-- 列出当前数据库中的所有表
\dt

-- 创建表
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 插入数据
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');

-- 查询数据
SELECT * FROM users;

-- 退出psql
\q

8. 远程访问配置

8.1 配置Windows防火墙

  1. 打开Windows Defender 防火墙
  2. 点击高级设置
  3. 选择入站规则
  4. 点击新建规则...
  5. 规则类型 :选择端口 ,点击下一步
  6. 协议和端口 :选择TCP ,输入特定本地端口 为5432,点击下一步
  7. 操作 :选择允许连接 ,点击下一步
  8. 配置文件 :选择适用的网络配置文件,点击下一步
  9. 名称 :输入规则名称(如:PostgreSQL 5432),点击完成

8.2 测试远程连接

  1. 在远程计算机上安装pgAdmin 4或其他PostgreSQL客户端
  2. 连接到目标服务器:
    • Host name/address: Windows Server 2019的IP地址
    • Port: 5432
    • Username: postgres(或其他创建的用户)
    • Password: 对应用户的密码
  3. 尝试连接并执行SQL查询,验证远程连接是否成功

9. 数据备份与恢复

9.1 使用pg_dump进行备份

  1. 以管理员身份打开命令提示符

  2. 切换到PostgreSQL的bin目录:

    cmd 复制代码
    cd "C:\Program Files\PostgreSQL\14\bin"
  3. 备份整个数据库集群

    cmd 复制代码
    pg_dumpall -U postgres -f "D:\backup\postgres_full_backup.sql"
  4. 备份单个数据库

    cmd 复制代码
    pg_dump -U postgres -d mydatabase -f "D:\backup\mydatabase_backup.sql"
  5. 压缩备份

    cmd 复制代码
    pg_dump -U postgres -d mydatabase | gzip > "D:\backup\mydatabase_backup.sql.gz"

9.2 使用pg_restore进行恢复

  1. 确保目标数据库已创建(如果恢复单个数据库)

  2. 恢复整个数据库集群

    cmd 复制代码
    psql -U postgres -f "D:\backup\postgres_full_backup.sql"
  3. 恢复单个数据库

    cmd 复制代码
    psql -U postgres -d mydatabase -f "D:\backup\mydatabase_backup.sql"
  4. 恢复压缩备份

    cmd 复制代码
    gunzip -c "D:\backup\mydatabase_backup.sql.gz" | psql -U postgres -d mydatabase

9.3 使用pgAdmin 4进行备份与恢复

9.3.1 备份数据库
  1. 在pgAdmin 4中,右键点击要备份的数据库
  2. 选择Backup...
  3. 设置备份文件路径和格式(如SQL、自定义等)
  4. 点击Backup开始备份
9.3.2 恢复数据库
  1. 在pgAdmin 4中,右键点击要恢复的数据库
  2. 选择Restore...
  3. 选择备份文件
  4. 设置恢复选项
  5. 点击Restore开始恢复

9.4 自动备份脚本

  1. 创建PowerShell备份脚本postgres_backup.ps1

    powershell 复制代码
    # PostgreSQL备份脚本
    
    # 配置参数
    $PG_BIN = "C:\Program Files\PostgreSQL\14\bin"
    $BACKUP_DIR = "D:\backup"
    $DB_USER = "postgres"
    $DATE = Get-Date -Format "yyyyMMdd_HHmmss"
    
    # 创建备份目录
    if (-not (Test-Path $BACKUP_DIR)) {
        New-Item -ItemType Directory -Path $BACKUP_DIR | Out-Null
    }
    
    # 备份整个数据库集群
    $BACKUP_FILE = "$BACKUP_DIR\postgres_backup_$DATE.sql.gz"
    & "$PG_BIN\pg_dumpall.exe" -U $DB_USER | gzip > $BACKUP_FILE
    
    # 删除7天前的备份
    Get-ChildItem -Path $BACKUP_DIR -Filter "*.sql.gz" | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-7)} | Remove-Item
    
    Write-Host "PostgreSQL备份完成:$BACKUP_FILE"
  2. 创建Windows任务计划程序:

    • 打开任务计划程序
    • 点击创建基本任务...
    • 输入任务名称(如:PostgreSQL自动备份)
    • 设置触发器(如:每天凌晨2点)
    • 选择启动程序作为操作
    • 浏览选择powershell.exe
    • 添加参数 中输入:-ExecutionPolicy Bypass -File "D:\scripts\postgres_backup.ps1"
    • 完成任务创建

10. PostgreSQL性能优化

10.1 调整内存配置

  1. 打开postgresql.conf文件

  2. 修改以下内存相关配置项:

    复制代码
    # 共享内存缓冲区(建议设置为系统内存的25%)
    shared_buffers = 1GB
    
    # 每个工作进程的内存(根据查询复杂度调整)
    work_mem = 4MB
    
    # 维护操作内存(建议设置为系统内存的10%)
    maintenance_work_mem = 256MB
    
    # 有效缓存大小(建议设置为系统内存的50-75%)
    effective_cache_size = 4GB

10.2 调整连接配置

复制代码
# 最大连接数(根据系统资源和应用需求调整)
max_connections = 100

10.3 调整磁盘I/O配置

复制代码
# 检查点完成目标
checkpoint_completion_target = 0.9

# WAL缓冲区大小
wal_buffers = 16MB

# 有效IO并发数
effective_io_concurrency = 200

10.4 重启PostgreSQL服务使配置生效

powershell 复制代码
net stop "postgresql-x64-14"
net start "postgresql-x64-14"

11. 常见问题与故障排除

11.1 PostgreSQL服务无法启动

  1. 检查Windows事件查看器:

    • 打开事件查看器
    • 导航到Windows日志 -> 应用程序
    • 查找PostgreSQL相关的错误事件
  2. 检查PostgreSQL日志文件:

    • 日志文件路径:C:\Program Files\PostgreSQL\14\data\pg_log\
    • 分析日志文件中的错误信息

11.2 无法连接到PostgreSQL

  1. 检查PostgreSQL服务是否正在运行:

    powershell 复制代码
    sc query "postgresql-x64-14"
  2. 检查防火墙设置是否允许5432端口:

    powershell 复制代码
    netsh advfirewall firewall show rule name=all | findstr "5432"
  3. 检查pg_hba.conf配置是否允许连接:

    • 确保已添加允许连接的规则

11.3 忘记postgres用户密码

  1. 停止PostgreSQL服务:

    powershell 复制代码
    net stop "postgresql-x64-14"
  2. 以单用户模式启动PostgreSQL:

    cmd 复制代码
    cd "C:\Program Files\PostgreSQL\14\bin"
    pg_ctl.exe -D "C:\Program Files\PostgreSQL\14\data" -m single -U postgres
  3. 在单用户模式下修改密码:

    sql 复制代码
    ALTER USER postgres WITH PASSWORD 'new_password';
    \q
  4. 重启PostgreSQL服务:

    powershell 复制代码
    net start "postgresql-x64-14"

11.4 磁盘空间不足

  1. 检查磁盘空间:

    powershell 复制代码
    Get-WmiObject -Class Win32_LogicalDisk | Select-Object DeviceID, @{Name="SizeGB";Expression={[math]::round($_.Size/1GB,2)}}, @{Name="FreeGB";Expression={[math]::round($_.FreeSpace/1GB,2)}}
  2. 清理PostgreSQL日志文件:

    • 删除或压缩旧的日志文件
  3. 清理旧的备份文件:

    • 检查备份目录并删除不需要的备份

12. 总结

本教程详细介绍了在Windows Server 2019操作系统上部署PostgreSQL 14数据库的完整过程,包括:

  1. 系统环境准备和必要组件安装
  2. PostgreSQL 14的下载和安装步骤
  3. PostgreSQL的基本配置(监听地址、认证配置等)
  4. 使用pgAdmin 4和psql工具管理数据库
  5. 配置远程访问和防火墙设置
  6. 数据备份与恢复的方法
  7. 性能优化建议
  8. 常见问题与故障排除

通过本教程,用户可以在Windows Server 2019环境下成功部署和配置PostgreSQL 14数据库,满足各种应用场景的需求。PostgreSQL作为一款功能强大的开源数据库,在Windows Server 2019环境下同样能够提供稳定可靠的服务。

13. 参考资料

相关推荐
聆风吟º2 小时前
时序数据战场巅峰对决:金仓数据库 VS InfluxDB深度解析
数据库·influxdb·kingbasees·金仓数据库
动亦定2 小时前
微服务中如何保证数据一致性?
java·数据库·微服务·架构
瀚高PG实验室2 小时前
timestampdiff (MYSQL)函数在Highgo DB中的写法
数据库·mysql·瀚高数据库
美人鱼战士爱学习3 小时前
RODI: Benchmarking Relational-to-Ontology Mapping Generation Quality
数据库
Austindatabases3 小时前
云数据库备份恢复验证,云数据库高端客户的需求说明
数据库
赵渝强老师3 小时前
【赵渝强老师】MongoDB的数据类型
数据库·mongodb·nosql
驾数者3 小时前
Flink SQL模式识别:MATCH_RECOGNIZE复杂事件处理
数据库·sql·flink
还是鼠鼠3 小时前
SQL语句执行很慢,如何分析呢?
java·数据库·mysql·面试
czlczl200209253 小时前
如何添加“默认给Sql查询语句加上租户条件”的功能
数据库·python·sql