PostgreSQL教程:PostgreSQL 10入门
多年來,PostgreSQL一直是企業(yè)軟件和開放源代碼中保存最好的秘密之一,它是一個功能強大,健壯且經(jīng)過專家維護的關(guān)系數(shù)據(jù)庫。 MySQL可能更廣為人知,但PostgreSQL提供了MySQL剛開始提供的許多功能。
在本文中,我將逐步介紹設(shè)置和運行基本PostgreSQL安裝的步驟。 大多數(shù)討論將針對完全重新開始的人們,但我將介紹有關(guān)從以前的PostgreSQL安裝或其他數(shù)據(jù)庫解決方案遷移數(shù)據(jù)的詳細信息。 最后,本文重點介紹PostgreSQL 10系列發(fā)行版,即撰寫本文時PostgreSQL的最新和最新版本。
選擇您的PostgreSQL平臺
PostgreSQL可用于所有主要操作系統(tǒng)的二進制形式:Windows的臺式機和服務器版本,Linux,MacOS的所有流行版本以及Solaris等企業(yè)中使用的其他一些OS。
總的來說,PostgreSQL在所支持的各種平臺上的功能都是相同的。 我們將在下面詳細討論該規(guī)則的一些例外情況,因此請記住這些例外情況如何影響任何部署或應用程序開發(fā)計劃。
在Linux上安裝PostgreSQL
Linux發(fā)行版在軟件安裝和維護方面有很大不同:不同的軟件包管理器,不同的軟件包格式,不同的軟件存儲庫理念。 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或從PostgreSQL的yum存儲庫下載安裝工件。 
 可從Docker Hub獲得 Linux上每個主要PostgreSQL版本的Docker容器映像。 請注意,您將需要為容器提供用于持久數(shù)據(jù)存儲的位置。 默認位置是/var/lib/postgresql/data 。 您可以通過編輯PGDATA環(huán)境變量來指向其他位置。 
 Linux上的另一個注意事項是要使用哪個文件系統(tǒng)來存儲PostgreSQL數(shù)據(jù)。 過去的基準測試通常偏愛XFS或Ext4,盡管根據(jù)鏈接文章,它們必須配置特定的選項(例如nobarrier )才能獲得最佳效果。 盡管PostgreSQL FAQ引用ZFS的委派管理和快照功能,但Ubuntu是當今唯一捆綁ZFS的主要Linux發(fā)行版。 在其他Linux發(fā)行版中,您將必須自行設(shè)置ZFS。 
在MacOS上安裝PostgreSQL
 Mac用戶經(jīng)常依賴Homebrew ,它是MacOS的開源軟件包管理器,已經(jīng)成為從命令行在Mac上安裝開源項目的事實上的方法。 Homebrew允許您使用一個命令( brew install postgresql ) 安裝PostgreSQL及其所有依賴項。 
 在MacOS上安裝PostgreSQL的另一種方法是Postgres.app ,這是將PostgreSQL重新包裝為常規(guī)Mac應用程序的第三方。 該網(wǎng)站提供了最新版本的PostgreSQL和所有主要的PostgreSQL GUI客戶端的安裝程序,甚至在需要時進行自我更新。 Postgres.app還為您執(zhí)行一些自動預配置,例如初始化數(shù)據(jù)目錄和用戶數(shù)據(jù)庫,并捆綁了許多常用工具,如pg_upgrade 。 
在Windows上安裝PostgreSQL
那些希望在Windows上設(shè)置PostgreSQL的用戶可以選擇由第三方打包的安裝程序,從簡單的.ZIP存檔到交互式GUI驅(qū)動的安裝程序,應有盡有。
- BigSQL的圖形安裝程序是基本而直接的。 它僅安裝PostgreSQL和pgAdmin,在安裝過程中提示用戶基本的安裝信息-數(shù)據(jù)目錄,主密碼等。
 - EnterpriseDB安裝程序提供了更多的安裝時選項。 其中包括“ Stack Builder”,該工具用于下載和安裝大量其他工具:數(shù)據(jù)庫驅(qū)動程序,其他版本的PostgreSQL(如果需要并行運行它們),EnterpriseDB自己的PostgreSQL附加組件以及用于PostgreSQL的Slony-I復制系統(tǒng)。 對于專家來說,EnterpriseDB還提供了一個簡單的.ZIP存檔,僅此而已。
 - 如果您想在Windows上運行PostgreSQL而不進行安裝或保留任何數(shù)據(jù),可以使用PostgreSQL Portable 。 為PortableApps應用程序啟動器打包,它在單個目錄中提供了完整的PostgreSQL服務器實例,而沒有任何外部依賴關(guān)系。 這對于在軟件安裝受到限制的臺式機上進行測試或要將PostgreSQL工作限制在非系統(tǒng)或可移動驅(qū)動器上的桌面非常有用。
 
在Windows上運行PostgreSQL時要牢記的一個重要警告是,在給定的時間內(nèi)PostgreSQL可以保持打開狀態(tài)的連接數(shù)限制約為125。 此限制僅在PostgreSQL作為服務運行時適用,而不是從命令行調(diào)用。
根據(jù)PostgreSQL Wiki ,這是因為“ PostgreSQL依賴的某些庫依賴于user32.dll,后者從稱為Desktop Heap的區(qū)域分配內(nèi)存。” 由于堆的大小是固定的,并且每個連接都會消耗一定數(shù)量的內(nèi)存,因此大約125個以上的連接可能會發(fā)生故障。
就是說,在大多數(shù)使用情況下這不太可能成為問題,因為很少有人需要與PostgreSQL同時建立許多直接連接。 設(shè)計良好的應用程序可以使用連接池來避免遇到連接限制。 無論如何,連接池都是您應該做的事情,以保持與數(shù)據(jù)庫的連接數(shù)與服務器上可用的硬件線程數(shù)相稱。
在Linux上配置PostgreSQL
如果您使用上述的PostgreSQL圖形安裝程序之一,尤其是Windows,則將逐步完成運行PostgreSQL安裝所需的步驟。 但是,在Linux中,大多數(shù)情況下,您需要自己采取這些步驟。
在Fedora Linux上配置PostgreSQL
 PostgreSQL 10包含在Fedora 28的默認存儲庫中,因此運行sudo dnf install postgresql-server postgresql-contrib將直接安裝這些位。 之后,您可能希望啟用PostgreSQL在引導時啟動: 
 sudo systemctl enable postgresql 
您還需要手動運行PostgreSQL的安裝腳本來創(chuàng)建初始數(shù)據(jù)庫:
 sudo postgresql-setup --initdb --unit postgresql 
 設(shè)置postgres 系統(tǒng)密碼,即PostgreSQL服務運行帳戶的密碼: 
 sudo passwd postgres 
啟動PostgreSQL服務器:
 sudo systemctl start postgresql 
 然后設(shè)置postgres 內(nèi)部用戶帳戶的密碼,即用于直接連接到PostgreSQL的帳戶。 運行psql命令行應用程序以連接到PostgreSQL,然后發(fā)出命令\password postgres (注意前面的反斜杠)。 
Fedora Wiki中提供了許多有關(guān)在Fedora Linux上安裝PostgreSQL的附加說明,但是這些步驟對于基本的安裝就足夠了。
在Ubuntu Linux上配置PostgreSQL
Ubuntu 18.04的默認存儲庫中包含PostgreSQL 10,因此設(shè)置過程與Fedora的相似,但更加簡化:
-  安裝基本軟件包: 
sudo apt update
sudo apt install postgresql postgresql-contrib -  設(shè)置用戶帳號密碼: 
sudo passwd postgres -  將PostgreSQL服務設(shè)置為自動啟動: 
sudo systemctl enable postgresql
sudo systemctl start postgresql -  更改用戶并連接到服務器進行測試: 
sudo -i -u postgres
psql 
 請注意,這里不需要postgresql-setup步驟。 安裝過程包含執(zhí)行該步驟所需的觸發(fā)器。 
在PostgreSQL版本之間遷移數(shù)據(jù)
您將要采取的最后步驟之一是將數(shù)據(jù)從PostgreSQL的任何舊實例遷移到新實例。 從版本10開始,PostgreSQL具有三種在數(shù)據(jù)庫升級期間遷移數(shù)據(jù)的主要方法。
-  
pg_upgrade實用程序是在PostrgreSQL版本之間遷移數(shù)據(jù)的首選方法。 當您同時安裝新版本的PostgreSQL和舊版本的PostgreSQL時,通常使用它。 您從新安裝中運行pg_upgrade,將其指向舊安裝,然后將其移到數(shù)據(jù)上。pg_upgrade利用PostgreSQL數(shù)據(jù)格式的點修訂之間的一致性來加快遷移過程,因此它不僅是最方便的遷移方式,而且通常是最快的方式。 - 執(zhí)行升級/遷移的另一種方法是使用PostgreSQL復制(例如Slony)。 在這里,您可以使用新版本的PostgreSQL為運行舊版本的服務器創(chuàng)建備用服務器。 此方法導致的停機時間最少,因為復制是在后臺進行的。 復制完成后,您需要做的就是將所有連接從舊服務器重定向到新服務器。 但是,如果您不首先使用復制,則可能涉及跳過太多的麻煩。
 -  
pg_dumpall實用程序?qū)ostgreSQL服務器的全部內(nèi)容導出到一個或多個SQL轉(zhuǎn)儲文件。 然后,生成的腳本或歸檔文件可以在新服務器上執(zhí)行或?qū)氲叫路掌髦小?還可以并排設(shè)置新舊服務器,并使用pg_dumpall來“管道化”它們之間的轉(zhuǎn)儲操作。 使用pg_dumpall的最大缺點是它很慢,但是可以用作絕對的后備方法。 
在Windows,MacOS或Linux上安裝pgAdmin 4
PostgreSQL的第三方管理工具pgAdmin 4提供了用于管理PostgreSQL安裝的有用的Web GUI。 不幸的是,由于該工具是用Python編寫的,因此從某種意義上來說很難啟動和運行,并且依賴于該語言。
MacOS和Windows用戶可以從pgAdmin網(wǎng)站下載pgAdmin 4的二進制安裝程序 。
對于Ubuntu, 有一個APT軟件包 。 Ask Ubuntu論壇中還有一篇帖子,介紹了安裝pgAdmin 4,使其運行并創(chuàng)建啟動腳本的便捷快捷方式所需的步驟。
對于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及其所有依賴項一起使用并使用來避免大部分麻煩。
From: https://www.infoworld.com/article/3300799/postgresql-tutorial-get-started-with-postgresql-10.html
總結(jié)
以上是生活随笔為你收集整理的PostgreSQL教程:PostgreSQL 10入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 一起开心2020暑假训练第一周
 - 下一篇: 序列求和