婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > PostgreSQL 數(shù)據(jù)庫跨版本升級(jí)常用方案解析

PostgreSQL 數(shù)據(jù)庫跨版本升級(jí)常用方案解析

熱門標(biāo)簽:高德地圖標(biāo)注電話怎么沒了 中國(guó)地圖標(biāo)注省份用什么符號(hào) 奧維地圖標(biāo)注字體大小修改 孝感銷售電銷機(jī)器人廠家 無錫梁溪公司怎樣申請(qǐng)400電話 電話機(jī)器人錄音師薪資 江西穩(wěn)定外呼系統(tǒng)供應(yīng)商 智能電銷機(jī)器人教育 北京智能外呼系統(tǒng)供應(yīng)商家

大家好,我是只談技術(shù)不剪發(fā)的 Tony 老師。對(duì)于企業(yè)而言,將數(shù)據(jù)庫系統(tǒng)升級(jí)到新版本通常可以獲得更好的性能、更多的功能、最新的安全補(bǔ)丁和錯(cuò)誤修復(fù)等。因此,本文就來介紹一下 PostgreSQL 數(shù)據(jù)庫版本升級(jí)的 3 種常用方案。

升級(jí)方案概述

PostgreSQL 版本號(hào)由主要版本和次要版本組成。例如,PostgreSQL 12.4 中的 12 是主要版本,4 是次要版本;PostgreSQL 10.0 之前的版本由 3 個(gè)數(shù)字組成,例如 9.6.19,其中 9.6 是主要版本,19 是次要版本。

發(fā)布次要版本是不會(huì)改變內(nèi)存的存儲(chǔ)格式,因此總是和相同的主要版本兼容。例如,PostgreSQL 12.4 和 PostgreSQL 12.0 以及后續(xù)的 PostgreSQL 12.x 兼容。對(duì)于這些兼容版本的升級(jí)非常簡(jiǎn)單,只需要關(guān)閉數(shù)據(jù)庫服務(wù),安裝替換二進(jìn)制的可執(zhí)行文件,重新啟動(dòng)服務(wù)即可。

接下來,我們主要討論 PostgreSQL 的跨版本升級(jí)問題,例如從 PostgreSQL 12.x 升級(jí)到 PostgreSQL 13.y。主要版本的升級(jí)可能會(huì)修改內(nèi)部數(shù)據(jù)的存儲(chǔ)格式,因此需要執(zhí)行額外的操作。常用的跨版本升級(jí)方法和適用場(chǎng)景如下:

升級(jí)方法 適用場(chǎng)景 停機(jī)時(shí)間
邏輯備份與還原 中小型數(shù)據(jù)庫,例如小于 100 GB
支持跨平臺(tái)數(shù)據(jù)遷移
取決于數(shù)據(jù)庫的大小
pg_upgrade 工具 大中型數(shù)據(jù)庫,例如大于 100 GB
本機(jī)就地升級(jí)
幾分鐘
邏輯復(fù)制 大中型數(shù)據(jù)庫,例如大于 100 GB
跨平臺(tái)支持
幾秒鐘

 是的

📝如果使用廠商提供的 PostgreSQL 定制版本,也可能通過他們提供的工具實(shí)現(xiàn)版本升級(jí),具體參考相關(guān)文檔。

注意事項(xiàng):升級(jí)主要版本通過會(huì)導(dǎo)致用戶可見的不兼容性,因此應(yīng)用程序可能需要進(jìn)行相應(yīng)的修改。具體的變化可以參考發(fā)行說明,尤其是“Migration”部分的內(nèi)容;如果跨多個(gè)主要版本進(jìn)行升級(jí),需要閱讀每個(gè)中間版本的發(fā)行說明。

通過邏輯備份與還原進(jìn)行升級(jí)

傳統(tǒng)的跨版本升級(jí)方法利用 pg_dump/pg_dumpall 邏輯備份導(dǎo)出數(shù)據(jù)庫,然后在新版本中通過 pg_restore 進(jìn)行還原。導(dǎo)出舊版本數(shù)據(jù)庫時(shí)推薦使用新版本的 pg_dump/pg_dumpall 工具,可以利用最新的并行導(dǎo)出和還原功能,同時(shí)可以減少數(shù)據(jù)庫膨脹問題。

邏輯備份與還原非常簡(jiǎn)單但速度比較慢,停機(jī)時(shí)間取決于數(shù)據(jù)庫的大小,因此適合中小型數(shù)據(jù)庫的升級(jí)。

下面我們介紹這種升級(jí)方法的具體操作,假如當(dāng)前 PostgreSQL 軟件的安裝目錄位于 /usr/local/pgsql,同時(shí)數(shù)據(jù)目錄位于 /usr/local/pgsql/data,我們?cè)谕慌_(tái)服務(wù)器上進(jìn)行升級(jí)。

執(zhí)行邏輯備份之前停止應(yīng)用程序,確保沒有數(shù)據(jù)更新,因?yàn)閭浞蓍_始后的更新不會(huì)被導(dǎo)出。如有必要,可以修改 /usr/local/pgsql/data/pg_hba.conf 文件禁止其他人訪問數(shù)據(jù)庫。

然后備份數(shù)據(jù)庫:

pg_dumpall > outputfile

如果已經(jīng)安裝了新版本的 PostgreSQL,可以使用新版本的 pg_dumpall 命令備份舊版本數(shù)據(jù)庫。

停止舊版本的后臺(tái)服務(wù):

pg_ctl stop

或者通過其他方式停止后臺(tái)服務(wù)。

如果安裝目錄沒有包含特定版本標(biāo)識(shí),可以將目錄改名,必要時(shí)可以再修改回來。可以使用類似以下的命令重命名目錄:

mv /usr/local/pgsql /usr/local/pgsql.old

安裝新版本 PostgreSQL 軟件,假如安裝目錄仍然是 /usr/local/pgsql。

初始化一個(gè)新的數(shù)據(jù)庫集群,需要使用數(shù)據(jù)庫專用用戶(通常是 postgres;如果是升級(jí)版本,應(yīng)該已經(jīng)存在該用戶)執(zhí)行操作:

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

將舊版本配置文件 pg_hba.conf 和 postgresql.conf 等中的改動(dòng)在對(duì)應(yīng)的新配置文件中再次進(jìn)行修改。

使用數(shù)據(jù)庫專用用戶啟動(dòng)新版本的后臺(tái)服務(wù):

 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data

最后,利用新版本的 psql 命令還原數(shù)據(jù):

/usr/local/pgsql/bin/psql -d postgres -f outputfile

為了減少停機(jī)時(shí)間,可以將新版本的 PostgreSQL 安裝到另一個(gè)目錄(例如 /usr/local/pgsql-13),同時(shí)使用不同的端口啟動(dòng)服務(wù)。然后同時(shí)執(zhí)行數(shù)據(jù)庫的導(dǎo)出和導(dǎo)入:

pg_dumpall -p 5432 | psql -d postgres -p 5433

執(zhí)行以上操作時(shí),新舊版本的后臺(tái)服務(wù)同時(shí)運(yùn)行,新版本使用 5433 端口,舊版本使用 5432 端口。

利用 pg_upgrade 工具進(jìn)行升級(jí)

pg_upgrade 工具可以支持 PostgreSQL 跨版本的就地升級(jí),不需要執(zhí)行導(dǎo)出和導(dǎo)入操作。pg_upgrade 可以支持 PostgreSQL 8.4.X 到最新版本的升級(jí),包括快照版本和測(cè)試版本。

pg_upgrade 提供了升級(jí)前的兼容性檢查(-c 或者 --check 選項(xiàng))功能, 可以發(fā)現(xiàn)插件、數(shù)據(jù)類型不兼容等問題。如果指定了 --link 選項(xiàng),新版本服務(wù)可以直接使用原有的數(shù)據(jù)庫文件而不需要執(zhí)行復(fù)制,通常可以在幾分鐘內(nèi)完成升級(jí)操作。

下面我們介紹這種升級(jí)方法的具體操作,假如當(dāng)前 PostgreSQL 軟件的安裝目錄位于 /usr/pgsql-12/,同時(shí)數(shù)據(jù)目錄位于 /var/lib/pgsql/12/data/,我們將其升級(jí)為 PostgreSQL 13。

確定沒有客戶端訪問之后備份數(shù)據(jù)庫,然后停止舊版本的后臺(tái)服務(wù)。例如 CentOS 可以執(zhí)行以下命令:

sudo systemctl stop postgresql-12
sudo systemctl disable postgresql-12

安裝新版本的 PostgreSQL 軟件。例如 PostgreSQL 13.0,安裝目錄位于 /usr/pgsql-13/。

初始化新版本的數(shù)據(jù)庫集群。數(shù)據(jù)目錄設(shè)置為 /var/lib/pgsql/13/data/。

如果舊版本中安裝了擴(kuò)展模塊,在新版本中也需要安裝相應(yīng)的共享對(duì)象文件或者 DLL 文件。但是不要執(zhí)行CREATE EXTENSION命令,因?yàn)闀?huì)從舊數(shù)據(jù)庫中進(jìn)行升級(jí)。另外,如果使用了任何自定義的全文搜索文件(字典、同義詞、詞庫、停用詞),也需要復(fù)制到新的數(shù)據(jù)庫集群目錄中。

停止新版本的后臺(tái)服務(wù)。例如 CentOS 可以執(zhí)行以下命令:

sudo systemctl stop postgresql-13

通過 pg_upgrade 執(zhí)行升級(jí)操作,使用數(shù)據(jù)庫專用用戶(通常是 postgres)執(zhí)行以下操作:

/usr/pgsql-13/bin/pg_upgrade \

 --old-datadir /var/lib/pgsql/12/data/ \

 --new-datadir /var/lib/pgsql/13/data/ \

 --old-bindir /usr/pgsql-12/bin/ \

 --new-bindir /usr/pgsql-13/bin/ \

 --check

其中 --check 表示執(zhí)行升級(jí)檢查,而不會(huì)真的執(zhí)行升級(jí)操作。通過檢查之后,可以去掉該參數(shù)執(zhí)行升級(jí):

/usr/pgsql-13/bin/pg_upgrade \

 --old-datadir /var/lib/pgsql/12/data/ \

 --new-datadir /var/lib/pgsql/13/data/ \

 --old-bindir /usr/pgsql-12/bin/ \

 --new-bindir /usr/pgsql-13/bin/ \

 --link

其中 --link 表示將新版本的數(shù)據(jù)目錄硬鏈接到舊版本的數(shù)據(jù)目錄,而不會(huì)復(fù)制一份新的數(shù)據(jù)文件,可以快速進(jìn)行升級(jí)。

將舊版本配置文件 pg_hba.conf 和 postgresql.conf 等中的改動(dòng)在對(duì)應(yīng)的新配置文件中再次進(jìn)行修改。

啟動(dòng)新版本的后臺(tái)服務(wù)。例如 CentOS 可以執(zhí)行以下命令:

sudo systemctl start postgresql-13
sudo systemctl enable postgresql-13

連接服務(wù)器查看數(shù)據(jù)庫的版本信息:

SELECT version();
version                        |
-------------------------------------------------------------------------------------------------------|
PostgreSQL 13.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit|

收集統(tǒng)計(jì)信息。pg_upgrade 不會(huì)生成新版本數(shù)據(jù)庫的統(tǒng)計(jì)信息,但是會(huì)創(chuàng)建一個(gè)腳本文件,執(zhí)行該文件:

./analyze_new_cluster.sh

如果確認(rèn)升級(jí)成功,可以選擇刪除或者保留舊的數(shù)據(jù)庫軟件和集群。pg_upgrade 同樣提供了一個(gè)刪除舊數(shù)據(jù)庫集群的腳本:

 ./delete_old_cluster.sh

然后可以刪除舊版本的 PostgreSQL 軟件,例如 CentOS 可以執(zhí)行以下命令:

yum remove postgresql12*

如果想要回退到舊版本的數(shù)據(jù)庫,可以分為不同的情況:

  • 如果只運(yùn)行了 --check 選項(xiàng)命令,表示沒有真正執(zhí)行升級(jí),重新啟動(dòng)服務(wù)即可;
  • 如果升級(jí)時(shí)沒有使用 --link 選項(xiàng),舊版本的數(shù)據(jù)庫集群沒有任何修改,重新啟動(dòng)服務(wù)即可;
  • 如果升級(jí)時(shí)使用了 --link 選項(xiàng),數(shù)據(jù)庫文件可能已經(jīng)被新版本的集群使用:
  1. 如果 pg_upgrade 在鏈接操作之前終止,舊版本的數(shù)據(jù)庫集群沒有任何修改,重新啟動(dòng)服務(wù)即可;
  2. 如果沒有啟動(dòng)過新版本的后臺(tái)服務(wù),舊版本的數(shù)據(jù)庫集群沒有修改,但是鏈接過程已經(jīng)將 $PGDATA/global/pg_control 文件重命名為 $PGDATA/global/pg_control.old;此時(shí)需要將該文件名中的 .old 后綴去掉,然后重新啟動(dòng)服務(wù)即可;
  3. 如果已經(jīng)啟動(dòng)了新版本的數(shù)據(jù)庫集群,已經(jīng)修改了數(shù)據(jù)庫文件,再啟動(dòng)舊版本的服務(wù)可能導(dǎo)致數(shù)據(jù)損壞;此時(shí)需要通過備份文件還原舊版本的數(shù)據(jù)庫。

關(guān)于 pg_upgrade 的詳細(xì)使用和升級(jí)注意事項(xiàng),例如流復(fù)制結(jié)構(gòu)和日志傳輸復(fù)制結(jié)構(gòu)中備用節(jié)點(diǎn)的升級(jí),可以參考官方文檔。

使用邏輯復(fù)制功能進(jìn)行升級(jí)

PostgreSQL 邏輯復(fù)制支持跨版本之間的數(shù)據(jù)復(fù)制,而且支持不同平臺(tái)之間的復(fù)制,因此也可以用于實(shí)現(xiàn)版本升級(jí)。我們可以安裝一個(gè)新版本的數(shù)據(jù)庫作為復(fù)制的從節(jié)點(diǎn),當(dāng)數(shù)據(jù)已經(jīng)同步時(shí)執(zhí)行一次主從切換,然后關(guān)閉舊版本的主節(jié)點(diǎn)。主從切換的升級(jí)方法通常只需要幾秒鐘就能完成,利用第三方高可用組件甚至可以實(shí)現(xiàn)零停機(jī)時(shí)間升級(jí)。

PostgreSQL 10 開始提供了內(nèi)置的邏輯復(fù)制功能,或者也可以使用 pglogical、Slony、Londiste 以及 Bucardo 等邏輯復(fù)雜工具。

關(guān)于 PostgreSQL 邏輯復(fù)制結(jié)構(gòu)的創(chuàng)建和主從切換,可以參考官方文檔。

總結(jié)

PostgreSQL 小版本升級(jí)只需要替換二進(jìn)制文件即可,跨版本升級(jí)的方案主要有 3 種:通過 pg_dump/pg_dumpall 邏輯備份與還原進(jìn)行升級(jí),利用 pg_upgrade 工具進(jìn)行升級(jí),使用邏輯復(fù)制功能進(jìn)行升級(jí)。了解它們的優(yōu)缺點(diǎn)和適用場(chǎng)景可以幫助我們選擇最佳的升級(jí)方式。

到此這篇關(guān)于PostgreSQL 數(shù)據(jù)庫跨版本升級(jí)常用方案解析的文章就介紹到這了,更多相關(guān)PostgreSQL 版本升級(jí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Docker環(huán)境下升級(jí)PostgreSQL的步驟方法詳解

標(biāo)簽:阜陽 通化 荊州 那曲 泰州 海北 齊齊哈爾 臨滄

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PostgreSQL 數(shù)據(jù)庫跨版本升級(jí)常用方案解析》,本文關(guān)鍵詞  PostgreSQL,數(shù)據(jù)庫,跨,版本,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PostgreSQL 數(shù)據(jù)庫跨版本升級(jí)常用方案解析》相關(guān)的同類信息!
  • 本頁收集關(guān)于PostgreSQL 數(shù)據(jù)庫跨版本升級(jí)常用方案解析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩精品一区二区三区蜜臀| 色综合天天综合色综合av| 欧美丰满高潮xxxx喷水动漫| 国产91在线看| 日韩中文欧美在线| 中文字幕在线观看一区| 精品女同一区二区| 欧美日韩免费电影| 91丨九色丨国产丨porny| 精久久久久久久久久久| 天堂久久久久va久久久久| 亚洲情趣在线观看| 成人免费小视频| 日本一区免费视频| 日韩一区二区免费视频| 欧美三级视频在线播放| 93久久精品日日躁夜夜躁欧美| 国产精品888| 国产高清视频一区| 成人视屏免费看| 国产很黄免费观看久久| 国产麻豆精品theporn| 国产精品一区二区视频| 国产盗摄一区二区三区| 高清国产一区二区| 成人精品免费看| 成人久久久精品乱码一区二区三区| 国产成人综合视频| heyzo一本久久综合| 99综合电影在线视频| 色综合久久中文字幕综合网| 欧美性猛交一区二区三区精品| 色综合久久综合中文综合网| 日本高清成人免费播放| 欧美在线观看一二区| 欧美一区二区三区视频在线观看| 日韩午夜在线观看视频| 久久久亚洲精品石原莉奈 | 国产在线乱码一区二区三区| 韩国三级在线一区| 99国产精品久| 91精品国产综合久久精品麻豆| 欧美va亚洲va国产综合| 国产欧美日本一区二区三区| 亚洲日本丝袜连裤袜办公室| 午夜精品久久久久久久| 精品一区二区av| 91麻豆国产自产在线观看| 欧美一区二区免费观在线| 国产精品久久久久永久免费观看| 亚洲国产精品久久不卡毛片| 美国三级日本三级久久99| 粉嫩一区二区三区在线看| 欧洲精品一区二区三区在线观看| 日韩亚洲欧美在线| 一区二区在线观看免费| 狠狠色综合日日| 欧美亚洲综合在线| 国产精品麻豆一区二区| 免费看日韩精品| 一本色道久久综合亚洲aⅴ蜜桃| 3d动漫精品啪啪1区2区免费| 国产午夜精品久久久久久免费视| 亚洲成a人片在线观看中文| 国产剧情一区在线| 欧美日高清视频| 18欧美亚洲精品| 国产一二三精品| 91麻豆精品国产自产在线观看一区| 国产亚洲精品aa午夜观看| 日韩国产欧美一区二区三区| 99国产精品国产精品毛片| 久久亚洲欧美国产精品乐播| 日本一区中文字幕 | 色妹子一区二区| 亚洲精品一区二区三区影院| 午夜a成v人精品| 色综合久久久久久久久久久| 国产精品污网站| 国产一区二区三区四区在线观看| 在线播放视频一区| 亚洲精品视频观看| 99re这里只有精品首页| 国产天堂亚洲国产碰碰| 狠狠色丁香久久婷婷综| 9191久久久久久久久久久| 偷偷要91色婷婷| 欧美日韩国产在线播放网站| 一区二区三区免费网站| 国产成人精品免费| 久久综合九色综合久久久精品综合 | 亚洲欧洲一区二区在线播放| 国产成人av福利| 欧美激情资源网| 国产精品一二三| 精品久久人人做人人爱| 精品一区二区在线观看| 精品国产1区二区| 韩国av一区二区三区在线观看| 欧美一区二区三区影视| 蜜桃av噜噜一区二区三区小说| 5月丁香婷婷综合| 丝瓜av网站精品一区二区| 欧美美女bb生活片| 人禽交欧美网站| 精品久久国产97色综合| 国产精品一区专区| 国产精品久久久久婷婷二区次| 99re在线视频这里只有精品| 伊人色综合久久天天人手人婷| 欧美日韩极品在线观看一区| 日韩精品午夜视频| 精品久久久久一区二区国产| 春色校园综合激情亚洲| 国产精品第四页| 欧美日韩三级一区| 九九视频精品免费| 国产精品福利影院| 欧美日韩一卡二卡三卡 | 成人少妇影院yyyy| 亚洲情趣在线观看| 欧美一级精品在线| 成人美女视频在线观看18| 亚洲另类在线制服丝袜| 91精品国产麻豆| 国产成人在线观看| 亚洲日本欧美天堂| 欧美一级日韩免费不卡| 懂色av中文字幕一区二区三区| 亚洲一级二级三级在线免费观看| 91精品国产综合久久久蜜臀粉嫩| 国产精品中文字幕一区二区三区| 亚洲精品美国一| 精品久久久久久久人人人人传媒| www.性欧美| 九九久久精品视频| 亚洲影院久久精品| 国产精品免费看片| 91精品国产综合久久久蜜臀图片| 成a人片国产精品| 麻豆成人免费电影| 椎名由奈av一区二区三区| 日韩视频永久免费| 色综合久久88色综合天天| 精品在线观看视频| 性做久久久久久免费观看欧美| 久久女同精品一区二区| 欧美一区二区三区在线观看| 97aⅴ精品视频一二三区| 久久99精品久久只有精品| 亚洲一区二区三区四区五区中文 | 无吗不卡中文字幕| 综合中文字幕亚洲| 欧美韩日一区二区三区四区| 日韩欧美国产小视频| 欧美亚洲国产怡红院影院| 国产99久久久国产精品免费看| 男人操女人的视频在线观看欧美| 亚洲人成精品久久久久| 精品福利一区二区三区免费视频| 欧美三级三级三级| 色综合咪咪久久| 国产精品亚洲人在线观看| 久久国产麻豆精品| 日本美女一区二区三区| 亚洲动漫第一页| 亚洲一区二区免费视频| 亚洲色图欧美激情| 国产亚洲综合在线| 久久久国际精品| 欧美成人一区二区三区| 欧美高清性hdvideosex| 欧美乱妇一区二区三区不卡视频| 在线观看成人小视频| 91福利精品第一导航| 91久久香蕉国产日韩欧美9色| 不卡av免费在线观看| 99久久精品费精品国产一区二区| 成人国产精品免费网站| 成人av电影在线播放| 不卡的看片网站| 色综合天天综合狠狠| 在线观看网站黄不卡| 欧洲av一区二区嗯嗯嗯啊| 欧美人体做爰大胆视频| 91精品久久久久久久91蜜桃| 欧美成人猛片aaaaaaa| 亚洲精品一区二区三区精华液 | 91黄色小视频| 欧美麻豆精品久久久久久| 欧美理论片在线| 欧美一区二区三区视频免费播放| 日韩精品一区二区三区四区| 精品国内二区三区| 国产视频一区在线观看 | 久久99国产精品免费| 国产高清精品网站| 91在线porny国产在线看| 欧美性大战久久久久久久蜜臀| 7777精品伊人久久久大香线蕉完整版|