postgresql入门

多年来,PostgreSQL一直是企业软件和开放源代码中保存最好的秘密之一-功能强大,健壮且经过专家维护的关系数据库。 MySQL可能更广为人知,但PostgreSQL提供了MySQL刚开始提供的许多功能。

在本文中,我将逐步介绍设置和运行基本PostgreSQL安装的步骤。 大多数讨论将针对完全重新开始的人们,但我将介绍有关从以前的PostgreSQL安装或其他数据库解决方案迁移数据的详细信息。 最后,本文重点介绍PostgreSQL 10系列发行版,即撰写本文时PostgreSQL最新和最新版本。

[社区: 谁真正为开源做出了贡献 | 庆祝活动: 开源20年:改变世界的历史 | 相反: 20年过去了,开源并没有像承诺的那样改变世界 ]

选择您的PostgreSQL平台

PostgreSQL可用于所有主要操作系统的二进制形式:Windows的台式机和服务器版本,Linux,MacOS的所有流行版本以及Solaris等企业中使用的其他一些OS。

总的来说,PostgreSQL在所支持的各种平台上的功能都是相同的。 我们将在下面详细讨论该规则的一些例外情况,因此请记住这些例外情况如何影响任何部署或应用程序开发计划。

在Linux上安装PostgreSQL

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

例如, Ubuntu在其APT存储库中维护PostgreSQL版本。 如果它不是最新版本,则需要将apt.postgresql.org存储库添加到您的回购列表中,然后从那里获取PostgreSQL。

对于Red Hat和Fedora Linux,每个版本库中都包含一个PostgreSQL版本。 与Red Hat Enterprise Linux相比,Fedora的更新频率更高(每年大约两次),并且采用新版本的应用程序的速度要快得多,但是无论哪种情况,通过存储库提供的PostgreSQL版本可能都不是您想要的版本。 例如,在Red Hat Enterprise Linux的默认存储库中,您找不到比9.2更高的PostgreSQL版本。

因此,为Red Hat或Fedora安装最新版本的PostgreSQL最可靠方法是直接通过交互式下载页面PostgreSQL或从PostgreSQLyum存储库下载安装工件。

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

Linux上的另一个注意事项是要使用哪个文件系统来存储PostgreSQL数据。 过去的基准测试通常偏爱XFS或Ext4,尽管根据链接文章,它们必须配置特定的选项(例如, nobarrier )才能获得最佳效果。 尽管PostgreSQL FAQ引用ZFS的委派管理和快照功能,但Ubuntu是当今唯一捆绑ZFS的主要Linux发行版。 在其他Linux发行版中,您将必须自行设置ZFS。

在MacOS上安装PostgreSQL

Mac用户经常依赖Homebrew ,它是MacOS的开源软件包管理器,已经成为从命令行在Mac上安装开源项目的实际方法。 Homebrew允许您使用一个命令( brew install postgresql安装PostgreSQL及其所有依赖项。

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

在Windows上安装PostgreSQL

那些希望在Windows上设置PostgreSQL用户可以选择由第三方打包的安装程序,从简单的.ZIP存档到交互式GUI驱动的安装程序,应有尽有。

  • BigSQL的图形安装程序是基本而直接的。 它仅安装PostgreSQL和pgAdmin,在安装过程中提示用户基本的安装信息-数据目录,主密码等。
  • EnterpriseDB安装程序提供了更多的安装时选项。 其中包括“ Stack Builder”,该工具用于下载和安装大量其他工具:数据库驱动程序,其他版本的PostgreSQL(如果需要并行运行它们),EnterpriseDB自己的PostgreSQL附加组件以及PostgreSQLSlony-I复制系统。 对于专家来说,EnterpriseDB还提供了一个简单的.ZIP存档,仅此而已。
  • 如果您想在Windows上运行PostgreSQL而不进行安装或保留任何数据,可以使用PostgreSQL Portable 。 为PortableApps应用程序启动器打包,它在单个目录中提供了完整的PostgreSQL服务器实例,而没有外部依赖性。 这对于在软件安装受到限制的桌面上进行测试,或要将PostgreSQL工作限制在非系统或可移动驱动器上的桌面非常有用。

在Windows上运行PostgreSQL时要牢记的一个重要警告是,在给定的时间内PostgreSQL可以保持打开状态的连接数限制约为125。 此限制仅在PostgreSQL作为服务运行时适用,而不是从命令行调用。

根据PostgreSQL Wiki ,这是因为“ PostgreSQL依赖的某些库依赖于user32.dll,后者从称为Desktop Heap的区域分配内存。” 由于堆的大小是固定的,并且每个连接都会消耗一定数量的内存,因此大约125个以上的连接可能会发生故障。

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

在Linux上配置PostgreSQL

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

在Fedora Linux上配置PostgreSQL

PostgreSQL 10包含在Fedora 28的默认存储库中,因此运行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 18.04的默认存储库中包括PostgreSQL 10,因此设置过程与Fedora的相似,但更加简化:

  • 安装基本软件包:
    sudo apt update
    sudo apt install postgresql postgresql-contrib
  • 设置用户帐号密码:
    sudo passwd postgres
  • 将PostgreSQL服务设置为自动启动:
    sudo systemctl enable postgresql

    sudo systemctl start postgresql
  • 更改用户并连接到服务器进行测试:
    sudo -i -u postgres
    psql

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

在PostgreSQL版本之间迁移数据

您将要采取的最后步骤之一是将数据从PostgreSQL任何旧实例迁移到新实例。 从版本10开始,PostgreSQL具有三种在数据库升级期间迁移数据的主要方式。

  • pg_upgrade实用程序是在PostrgreSQL版本之间迁移数据的首选方法。 当您同时安装新版本的PostgreSQL和旧版本的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。 不幸的是,由于该工具是用Python编写的,因此从某种意义上来说很难启动和运行,并且依赖于该语言。

MacOS和Windows用户可以从pgAdmin网站下载pgAdmin 4的二进制安装程序

对于Ubuntu, 有一个APT软件包Ask Ubuntu论坛中还有一篇帖子,介绍了安装pgAdmin 4,使其运行并创建启动脚本的便捷快捷方式所需的步骤。

对于Fedora和Red Hat, 有一个RPM软件包 。 但是,在撰写本文时,RPM软件包有一个小错误,其中省略了主要的Python软件包。 下面的食谱复制了上一个链接的许多步骤,其中包括一个额外的步骤(第2行),该步骤可解决此问题:

$ sudo dnf install pgadmin4
$ sudo dnf install python3-flask-babelex
$ sudo /usr/pgadmin4/bin/pgadmin4-web-setup.sh
$ pgadmin4

最后一个命令启动pgAdmin 4后端,最后启动一个Web浏览器来查看它。

如果您是Docker用户,则可以通过将Docker容器与pgAdmin 4及其所有依赖项一起使用并使用来避免大部分麻烦。

翻译自: https://www.infoworld.com/article/3300799/postgresql-tutorial-get-started-with-postgresql-10.html

postgresql入门

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐