百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

PostgreSQL教程:开始使用PostgreSQL 16

qiyuwang 2024-10-11 18:19 9 浏览 0 评论

多年来,PostgreSQL一直是企业软件和开源中保存得最好的秘密之一——一个功能强大、强大、专业维护的关系数据库。MySQL可能更广为人知,但PostgreSQL提供了许多MySQL才开始提供的功能。

在本文中,我将介绍设置和运行基本PostgreSQL安装的步骤。大部分讨论都针对的是从头开始的人,但我还将讨论如何从之前的PostgreSQL安装或其他数据库解决方案中迁移数据。本文重点介绍PostgreSQL 16系列版本,截至本文撰写时,PostgreSQL是最新和最新的版本。

如何安装PostgreSQL Windows、Linux和macOS

PostgreSQL以二进制形式适用于所有主要操作系统:Windows的桌面和服务器版本、Linux、macOS和其他一些流行的版本,如Solaris。

总的来说,PostgreSQL的功能在它支持的所有平台上都是一样的。然而,该规则有一些例外,我稍后将详细解释。请记住,这些差异可能会如何影响任何部署或应用程序开发计划。

在Windows上安装PostgreSQL

想要在Windows上设置PostgreSQL的开发人员可以选择由第三方打包的安装程序——从简单的.zip存档到交互式GUI驱动的安装程序。

最“祝福”的选项,即PostgreSQL自己的文档中链接的选项,是EnterpriseDB安装程序。它包括PostgreSQL的图形安装向导,这是一个用于设置数据库及其支持工具的简单分步工具。它还包括“Stack Builder”,这是一个用于下载和安装大量附加工具的工具。这些包括数据库驱动程序、PostgreSQL的其他版本(如果您需要并排运行它们)、EnterpriseDB自己的PostgreSQL附加组件以及PostgreSQL的Slony-I复制系统。对于专家来说,EnterpriseDB还提供了一个简单的.zip存档,只不过是PostgreSQL的Windows二进制文件。

如果您想在Windows上运行PostgreSQL而不安装它或留下任何数据,有一个食谱,尽管有点复杂,可以从其.zipped存档分发版中运行PostgreSQL。这对于在软件安装受到限制的桌面上进行测试非常有用,或者您希望将PostgreSQL工作限制在非系统或可移动驱动器上进行测试。第三方项目PostgreSQL Portable为PortableApps应用程序启动器打包了PostgreSQL的独立版本。不幸的是,自第10版以来,它没有为任何较新版本的PostgreSQL进行过更新。

在Linux上安装PostgreSQL

Linux发行版在软件的安装和维护方式上差异很大,具有不同的软件包管理器、软件包格式和软件存储库理念。PostgreSQL不能免于这些差异,这可能是在您的平台上获取最新版本软件的障碍。

例如,Ubuntu在其APT存储库中维护PostgreSQL的一个版本。您通常可以使用命令apt install postgresql来安装PostgreSQL。如果Ubuntu存储库没有最新版本,您需要将apt.postgresql.org存储库添加到您的repo列表中,并从那里获取PostgreSQL。

Red Hat和Fedora Linux存储库都托管一个版本的PostgreSQL,尽管PostgreSQL的具体版本因发行版而异。Fedora的更新频率比Red Hat高,因此Red Hat的版本可能会滞后。安装最新版本的PostgreSQL for Red Hat或Fedora的最可靠方法是通过交互式下载页面或PostgreSQL的yum存储库直接从PostgreSQL下载安装工件。

Linux上每个主要版本的PostgreSQL的Docker容器映像都可以从Docker Hub获得。请注意,您需要为容器提供持久数据存储的位置;默认位置是/var/lib/postgresql/data。您可以通过编辑PGDATA环境变量来指向不同的位置。

Linux的另一个考虑因素是使用哪个文件系统来存储PostgreSQL数据。最近的基准显示,ext4/XFS总体上是不错的选择。尽管PostgreSQL常见问题引用了ZFS的委派管理和快照功能,但Ubuntu是当今唯一捆绑ZFS的主要Linux发行版;在其他Linux发行版中,您必须自行设置ZFS。

在macOS上安装PostgreSQL

Mac用户经常依赖Homebrew,这是一个适用于macOS的开源软件包管理器,它已成为从命令行在Mac上安装开源项目的实际方式。Homebrew允许您使用一个命令(brew install postgresql)安装PostgreSQL及其所有依赖项。您还可以使用Homebrew安装特定版本的PostgreSQL;例如,要安装PostgreSQL 12,请使用brew install postgresql@12

在macOS上安装PostgreSQL的另一种方式是通过Postgres.app,Postgres.app是将PostgreSQL作为传统Mac应用程序的第三方重新包装。该网站为最新版本的PostgreSQL和所有主要PostgreSQL GUI客户端提供安装程序,如果需要,甚至可以自行更新。Postgres.app还为您执行一些自动预配置,例如初始化数据目录和用户数据库,并捆绑了许多常见工具,如pg_upgrade

Windows上的PostgreSQL连接问题

在Windows上运行PostgreSQL时,需要记住的一大注意事项是PostgreSQL在给定时间可以保持打开的连接数量的文档限制——大约125个。此限制仅适用于作为服务运行的PostgreSQL,而不是从命令行调用。

根据PostgreSQL维基,这是因为一些PostgreSQL依赖项依赖于user32.dll,它从桌面堆中分配内存。由于堆具有固定大小,并且由于每个连接会耗尽一定数量的内存,因此可能会在超过125个连接时发生故障。

也就是说,在大多数使用场景中,连接限制不太可能成为问题,因为很少需要同时与PostgreSQL进行如此多的直接连接。设计良好的应用程序可以使用连接池来避免遇到连接限制。无论如何,连接池是您应该做的事情,以保持与数据库的连接数量与服务器上可用的硬件线程数量相称。

在Linux上配置PostgreSQL

如果您使用上述PostgreSQL的图形安装程序之一,特别是Windows,您将完成运行PostgreSQL安装的所有步骤。然而,使用Linux,在大多数情况下,您需要自己采取这些步骤。

在Fedora Linux上配置PostgreSQL

PostgreSQL包含在Fedora的默认存储库中,因此运行sudo dnf install postgresql-server postgresql-contrib将直接安装这些位。之后,您可能希望在启动时启用PostgreSQL启动:

sudo systemctl enable postgresql

您还需要手动运行PostgreSQL的设置脚本来创建初始数据库:

sudo postgresql-setup --initdb --unit postgresql

设置postgres系统密码;即PostgreSQL服务在以下下运行的帐户密码:

sudo passwd postgres

启动PostgreSQL服务器:

sudo systemctl start postgresql

然后设置postgres内部用户帐户的密码;即用于直接连接到PostgreSQL的帐户。运行psql命令行应用程序连接到PostgreSQL,并发出命令\password postgres(注意前导反斜杠)。

Fedora wiki中提供了许多关于在Fedora Linux上安装PostgreSQL的附加说明,但这些步骤应该足以进行基本设置。

在Ubuntu Linux上配置PostgreSQL

Ubuntu在其默认存储库中包含PostgreSQL,因此设置过程与Fedora相似,但更精简:

默认情况下,PostgreSQL只监听本地系统上的连接。要更改此行为,请编辑file /etc/postgresql/<version>/main/postgresql.conf,其中<version>是PostgreSQL的版本号。然后,在文件中,删除thelistenlisten_addresses参数前面的#,并将其值设置为'*'”。

接下来,设置用户帐户密码。为此,请运行命令sudo -u postgres psql template1连接到PostgreSQL并发出SQL命令:


ALTER USER postgres with encrypted password 'your_password';

安装基本软件包:


sudo apt update
sudo apt install postgresql

要对连接强制执行SHA-256身份验证,请编辑文件/etc/postgresql/*/main/pg_hba.conf。例如,如果我们想为数据库模板1强制执行SSL,用户postgres从给定的地址范围连接,我们将添加这样一行:


hostssl template1    postgres    192.168.122.1/24    scram-sha-256

将PostgreSQL服务设置为自动启动,然后重新启动以使更改生效:


sudo systemctl enable postgresql.service 
sudo systemctl restart postgresql.service

更改用户并连接到服务器进行测试:


sudo -i -u postgres
psql

请注意,这里不需要postgresql-setup步骤。安装过程包含所有必要的触发器。

在PostgreSQL版本之间迁移数据

您将采取的最后一步之一是将数据从PostgreSQL的任何旧实例移动到新实例。从第16版本中,PostgreSQL提供了在升级期间迁移数据的三种主要方法。

pg_upgrade实用程序是在PostrgreSQL版本之间迁移数据的首选方式。当您与旧版本并排安装新版本的PostgreSQL时,通常使用它。您从新安装中运行pg_upgrade,将其指向旧安装,并让它移动数据。pg_upgrade利用PostgreSQL数据格式的点修订之间的一致性来加快迁移过程,因此它不仅是最方便的迁移方式,而且通常是最快的。

执行迁移的另一种方法是使用PostgreSQL复制(例如Slony)。在这里,您可以使用新版本的PostgreSQL为运行旧版本的服务器创建一个备用服务器。这种方法导致最少的停机时间,因为复制发生在后台。复制完成后,您只需将所有连接从旧服务器重定向到新服务器。然而,如果您一开始就没有使用复制,这可能涉及跳过太多障碍。

pg_dumpall实用程序将PostgreSQL服务器的全部内容导出到一个或多个SQL转储文件。然后,生成的脚本或存档文件可以在新服务器上执行或导入到新服务器。也可以并排设置新旧服务器,并使用pg_dumpall在它们之间“管道”转储操作。使用pg_dumpall的最大缺点是它很慢,但它可以作为绝对的回退方法使用。

在Windows、macOS或Linux上安装pgAdmin 4

PostgreSQL的第三方管理工具pgAdmin 4为管理PostgreSQL安装提供了一个有用的Web GUI。

PGADMIN4工具提供了一个方便的基于WEB的界面,用于处理POSTGRESQL实例,包括运行查询。

PGADMIN.ORG网站

虽然它非常有用,但启动和运行该工具有点麻烦,因为它是用Python编写的,并且对该语言有很多依赖项。Windows和macOS用户可以从pgAdmin网站下载pgAdmin 4的二进制安装程序。对于Ubuntu,有一个APT软件包。Ask Ubuntu论坛上还有一个帖子,该帖子运行了安装pgAdmin 4、运行它以及创建启动脚本的便捷快捷方式所需的步骤。对于Fedora和Red Hat,有一个RPM软件包。如果您是Docker用户,您可以通过拉取和使用带有pgAdmin 4及其所有依赖项的Docker容器来避免大部分头痛。

相关推荐

# 安装打开 ubuntu-22.04.3-LTS 报错 解决方案

#安装打开ubuntu-22.04.3-LTS报错解决方案WslRegisterDistributionfailedwitherror:0x800701bcError:0x80070...

利用阿里云镜像在ubuntu上安装Docker

简介:...

如何将Ubuntu Kylin(优麒麟)19.10系统升级到20.04版本

UbuntuKylin系统使用一段时间后,有新的版本发布,如何将现有的UbuntuKylin系统升级到最新版本?可以通过下面的方法进行升级。1.先查看相关的UbuntuKylin系统版本情况。使...

Ubuntu 16.10内部代号确认为Yakkety Yak

在正式宣布Ubuntu16.04LTS(XenialXerus)的当天,Canonical创始人MarkShuttleworth还非常开心的在个人微博上宣布Ubuntu下个版本16.10的内...

如何在win11的wsl上装ubuntu(怎么在windows上安装ubuntu)

在Windows11的WSL(WindowsSubsystemforLinux)上安装Ubuntu非常简单。以下是详细的步骤:---...

Win11学院:如何在Windows 11上使用WSL安装Ubuntu

IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...

如何查看Linux的IP地址(如何查看Linux的ip地址)

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。...

怎么看电脑系统?(怎么看电脑系统配置)

要查看电脑的操作系统信息,可以按照以下步骤操作,根据不同的操作系统选择对应的方法:一、Windows系统通过系统属性查看右键点击桌面上的“此电脑”(或“我的电脑”)图标,选择“属性”。在打开的...

如何查询 Linux 内核版本?这些命令一定要会!

Linux内核是操作系统的核心,负责管理硬件资源、调度进程、处理系统调用等关键任务。不同的内核版本可能支持不同的硬件特性、提供新的功能,或者修复了已知的安全漏洞。以下是查询内核版本的几个常见场景:...

深度剖析:Linux下查看系统版本与CPU架构

在Linux系统管理、维护以及软件部署的过程中,精准掌握系统版本和CPU架构是极为关键的基础操作。这些信息不仅有助于我们深入了解系统特性、判断软件兼容性,还能为后续的软件安装、性能优化提供重要依据。接...

504 错误代码解析与应对策略(504错误咋解决)

在互联网的使用过程中,用户偶尔会遭遇各种错误提示,其中504错误代码是较为常见的一种。504错误并非意味着网站被屏蔽,它实际上是指服务器在规定时间内未能从上游服务器获取响应,专业术语称为“Ga...

猎聘APP和官网崩了?回应:正对部分职位整改,临时域名可登录

10月12日,有网友反映猎聘网无法打开,猎聘APP无法登录。截至10月14日,仍有网友不断向猎聘官方微博下反映该情况,而猎聘官方微博未发布相关情况说明,只是在微博内对反映该情况的用户进行回复,“抱歉,...

域名解析的原理是什么?域名解析的流程是怎样的?

域名解析是网站正常运行的关键因素,因此网站管理者了解域名解析的原理和流程对于做好域名管理、解决常见解析问题,保障网站的正常运转十分必要。那么域名解析的原理是什么?域名解析的流程是怎样的?接下来,中科三...

Linux无法解析域名的解决办法(linux 不能解析域名)

如果由于误操作,删除了系统原有的dhcp相关设置就无法正常解析域名。  此时,需要手动修改配置文件:  /etc/resolv.conf  将域名解析服务器手动添加到配置文件中  该文件是DNS域名解...

域名劫持是什么?(域名劫持是什么)

域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。说的直白些,域名劫持,就是把互...

取消回复欢迎 发表评论: