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 系统更新
- 打开服务器管理器
- 点击本地服务器
- 点击Windows Update 右侧的检查更新
- 安装所有可用更新,然后重启服务器
2.2 安装必要组件
PostgreSQL 14在Windows上运行需要Microsoft Visual C++ Redistributable。如果系统中没有安装,可以从微软官网下载并安装:
3. PostgreSQL 14安装
3.1 下载安装程序
- 访问PostgreSQL官方下载页面:https://www.postgresql.org/download/windows/
- 点击Download the installer按钮
- 选择最新版本的PostgreSQL 14安装程序(选择与系统架构匹配的版本,32位或64位)
- 下载完成后,双击运行安装程序
3.2 安装步骤
-
欢迎界面 :点击Next
-
安装目录 :选择安装目录,默认路径为
C:\Program Files\PostgreSQL\14,点击Next -
数据目录 :选择数据文件存储目录,默认路径为
C:\Program Files\PostgreSQL\14\data,点击Next -
密码设置 :设置PostgreSQL超级用户(postgres)的密码,确保密码复杂度足够,点击Next
-
端口设置 :设置PostgreSQL监听端口,默认端口为5432,点击Next
-
语言设置 :选择数据库集群的默认语言环境,建议选择Chinese (Simplified)_China.936 ,点击Next
-
预安装摘要 :确认安装配置信息,点击Next
-
安装进度:等待安装完成
-
Stack Builder :安装完成后,可以选择是否启动Stack Builder工具来安装额外的组件(如pgAdmin 4),建议勾选,点击Finish
3.3 使用Stack Builder安装pgAdmin 4
- 启动Stack Builder后,选择已安装的PostgreSQL 14实例,点击Next
- 在Applications 列表中,展开Data Administration Tools
- 勾选pgAdmin 4 ,点击Next
- 按照提示完成pgAdmin 4的安装
4. PostgreSQL配置
4.1 访问PostgreSQL配置文件
PostgreSQL的主要配置文件位于数据目录中:
- postgresql.conf:主配置文件
- pg_hba.conf:客户端认证配置文件
默认路径:C:\Program Files\PostgreSQL\14\data\
4.2 配置PostgreSQL监听地址
- 打开
postgresql.conf文件(使用Notepad++或其他文本编辑器) - 找到
listen_addresses配置项,默认值为'localhost' - 修改为
listen_addresses = '*'(允许所有IP地址连接) - 找到
port配置项,确认端口号为5432(或自定义端口) - 保存并关闭文件
4.3 配置客户端认证
-
打开
pg_hba.conf文件 -
在文件末尾添加以下行(允许所有IP地址使用密码认证连接):
# IPv4 local connections: host all all 0.0.0.0/0 md5 # IPv6 local connections: host all all ::/0 md5 -
保存并关闭文件
4.4 重启PostgreSQL服务
- 打开服务 管理工具(可通过运行
services.msc命令) - 找到名为PostgreSQL 14的服务
- 右键点击,选择重启
5. PostgreSQL服务管理
5.1 使用服务管理工具
- 打开服务管理工具
- 找到名为PostgreSQL 14的服务
- 可以进行以下操作:
- 启动服务
- 停止服务
- 重启服务
- 设置服务的启动类型(自动/手动/禁用)
5.2 使用命令行管理服务
-
以管理员身份打开命令提示符 或PowerShell
-
启动服务:
powershellnet start "postgresql-x64-14" -
停止服务:
powershellnet stop "postgresql-x64-14" -
查看服务状态:
powershellsc query "postgresql-x64-14" -
设置服务自动启动:
powershellsc config "postgresql-x64-14" start= auto
6. pgAdmin 4使用
6.1 启动pgAdmin 4
- 从开始菜单中找到PostgreSQL 14 -> pgAdmin 4
- 首次启动需要设置pgAdmin 4的主密码
6.2 连接到PostgreSQL服务器
- 在pgAdmin 4界面中,点击Add New Server
- General 选项卡:
- 输入服务器名称(如:PostgreSQL 14)
- Connection 选项卡:
- Host name/address: localhost
- Port: 5432
- Maintenance database: postgres
- Username: postgres
- Password: 输入安装时设置的密码
- 点击Save Password保存密码
- 点击Save完成连接设置
6.3 创建数据库
- 在pgAdmin 4中,展开服务器节点
- 右键点击Databases ,选择Create -> Database...
- 输入数据库名称(如:mydatabase)
- 选择所有者(如:postgres)
- 点击Save创建数据库
6.4 创建用户
- 右键点击Login/Group Roles ,选择Create -> Login/Group Role...
- General选项卡:输入用户名(如:myuser)
- Definition选项卡:设置密码
- Privileges选项卡:设置用户权限(如:Can login, Create databases等)
- 点击Save创建用户
7. 使用psql命令行工具
7.1 打开psql
- 从开始菜单中找到PostgreSQL 14 -> SQL Shell (psql)
- 按照提示输入连接信息:
- 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防火墙
- 打开Windows Defender 防火墙
- 点击高级设置
- 选择入站规则
- 点击新建规则...
- 规则类型 :选择端口 ,点击下一步
- 协议和端口 :选择TCP ,输入特定本地端口 为5432,点击下一步
- 操作 :选择允许连接 ,点击下一步
- 配置文件 :选择适用的网络配置文件,点击下一步
- 名称 :输入规则名称(如:PostgreSQL 5432),点击完成
8.2 测试远程连接
- 在远程计算机上安装pgAdmin 4或其他PostgreSQL客户端
- 连接到目标服务器:
- Host name/address: Windows Server 2019的IP地址
- Port: 5432
- Username: postgres(或其他创建的用户)
- Password: 对应用户的密码
- 尝试连接并执行SQL查询,验证远程连接是否成功
9. 数据备份与恢复
9.1 使用pg_dump进行备份
-
以管理员身份打开命令提示符
-
切换到PostgreSQL的bin目录:
cmdcd "C:\Program Files\PostgreSQL\14\bin" -
备份整个数据库集群:
cmdpg_dumpall -U postgres -f "D:\backup\postgres_full_backup.sql" -
备份单个数据库:
cmdpg_dump -U postgres -d mydatabase -f "D:\backup\mydatabase_backup.sql" -
压缩备份:
cmdpg_dump -U postgres -d mydatabase | gzip > "D:\backup\mydatabase_backup.sql.gz"
9.2 使用pg_restore进行恢复
-
确保目标数据库已创建(如果恢复单个数据库)
-
恢复整个数据库集群:
cmdpsql -U postgres -f "D:\backup\postgres_full_backup.sql" -
恢复单个数据库:
cmdpsql -U postgres -d mydatabase -f "D:\backup\mydatabase_backup.sql" -
恢复压缩备份:
cmdgunzip -c "D:\backup\mydatabase_backup.sql.gz" | psql -U postgres -d mydatabase
9.3 使用pgAdmin 4进行备份与恢复
9.3.1 备份数据库
- 在pgAdmin 4中,右键点击要备份的数据库
- 选择Backup...
- 设置备份文件路径和格式(如SQL、自定义等)
- 点击Backup开始备份
9.3.2 恢复数据库
- 在pgAdmin 4中,右键点击要恢复的数据库
- 选择Restore...
- 选择备份文件
- 设置恢复选项
- 点击Restore开始恢复
9.4 自动备份脚本
-
创建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" -
创建Windows任务计划程序:
- 打开任务计划程序
- 点击创建基本任务...
- 输入任务名称(如:PostgreSQL自动备份)
- 设置触发器(如:每天凌晨2点)
- 选择启动程序作为操作
- 浏览选择
powershell.exe - 在添加参数 中输入:
-ExecutionPolicy Bypass -File "D:\scripts\postgres_backup.ps1" - 完成任务创建
10. PostgreSQL性能优化
10.1 调整内存配置
-
打开
postgresql.conf文件 -
修改以下内存相关配置项:
# 共享内存缓冲区(建议设置为系统内存的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服务无法启动
-
检查Windows事件查看器:
- 打开事件查看器
- 导航到Windows日志 -> 应用程序
- 查找PostgreSQL相关的错误事件
-
检查PostgreSQL日志文件:
- 日志文件路径:
C:\Program Files\PostgreSQL\14\data\pg_log\ - 分析日志文件中的错误信息
- 日志文件路径:
11.2 无法连接到PostgreSQL
-
检查PostgreSQL服务是否正在运行:
powershellsc query "postgresql-x64-14" -
检查防火墙设置是否允许5432端口:
powershellnetsh advfirewall firewall show rule name=all | findstr "5432" -
检查pg_hba.conf配置是否允许连接:
- 确保已添加允许连接的规则
11.3 忘记postgres用户密码
-
停止PostgreSQL服务:
powershellnet stop "postgresql-x64-14" -
以单用户模式启动PostgreSQL:
cmdcd "C:\Program Files\PostgreSQL\14\bin" pg_ctl.exe -D "C:\Program Files\PostgreSQL\14\data" -m single -U postgres -
在单用户模式下修改密码:
sqlALTER USER postgres WITH PASSWORD 'new_password'; \q -
重启PostgreSQL服务:
powershellnet start "postgresql-x64-14"
11.4 磁盘空间不足
-
检查磁盘空间:
powershellGet-WmiObject -Class Win32_LogicalDisk | Select-Object DeviceID, @{Name="SizeGB";Expression={[math]::round($_.Size/1GB,2)}}, @{Name="FreeGB";Expression={[math]::round($_.FreeSpace/1GB,2)}} -
清理PostgreSQL日志文件:
- 删除或压缩旧的日志文件
-
清理旧的备份文件:
- 检查备份目录并删除不需要的备份
12. 总结
本教程详细介绍了在Windows Server 2019操作系统上部署PostgreSQL 14数据库的完整过程,包括:
- 系统环境准备和必要组件安装
- PostgreSQL 14的下载和安装步骤
- PostgreSQL的基本配置(监听地址、认证配置等)
- 使用pgAdmin 4和psql工具管理数据库
- 配置远程访问和防火墙设置
- 数据备份与恢复的方法
- 性能优化建议
- 常见问题与故障排除
通过本教程,用户可以在Windows Server 2019环境下成功部署和配置PostgreSQL 14数据库,满足各种应用场景的需求。PostgreSQL作为一款功能强大的开源数据库,在Windows Server 2019环境下同样能够提供稳定可靠的服务。