亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > PostgreSQL 數據庫跨版本升級常用方案解析

PostgreSQL 數據庫跨版本升級常用方案解析

熱門標簽:高德地圖標注電話怎么沒了 中國地圖標注省份用什么符號 奧維地圖標注字體大小修改 孝感銷售電銷機器人廠家 無錫梁溪公司怎樣申請400電話 電話機器人錄音師薪資 江西穩定外呼系統供應商 智能電銷機器人教育 北京智能外呼系統供應商家

大家好,我是只談技術不剪發的 Tony 老師。對于企業而言,將數據庫系統升級到新版本通常可以獲得更好的性能、更多的功能、最新的安全補丁和錯誤修復等。因此,本文就來介紹一下 PostgreSQL 數據庫版本升級的 3 種常用方案。

升級方案概述

PostgreSQL 版本號由主要版本和次要版本組成。例如,PostgreSQL 12.4 中的 12 是主要版本,4 是次要版本;PostgreSQL 10.0 之前的版本由 3 個數字組成,例如 9.6.19,其中 9.6 是主要版本,19 是次要版本。

發布次要版本是不會改變內存的存儲格式,因此總是和相同的主要版本兼容。例如,PostgreSQL 12.4 和 PostgreSQL 12.0 以及后續的 PostgreSQL 12.x 兼容。對于這些兼容版本的升級非常簡單,只需要關閉數據庫服務,安裝替換二進制的可執行文件,重新啟動服務即可。

接下來,我們主要討論 PostgreSQL 的跨版本升級問題,例如從 PostgreSQL 12.x 升級到 PostgreSQL 13.y。主要版本的升級可能會修改內部數據的存儲格式,因此需要執行額外的操作。常用的跨版本升級方法和適用場景如下:

升級方法 適用場景 停機時間
邏輯備份與還原 中小型數據庫,例如小于 100 GB
支持跨平臺數據遷移
取決于數據庫的大小
pg_upgrade 工具 大中型數據庫,例如大于 100 GB
本機就地升級
幾分鐘
邏輯復制 大中型數據庫,例如大于 100 GB
跨平臺支持
幾秒鐘

 是的

📝如果使用廠商提供的 PostgreSQL 定制版本,也可能通過他們提供的工具實現版本升級,具體參考相關文檔。

注意事項:升級主要版本通過會導致用戶可見的不兼容性,因此應用程序可能需要進行相應的修改。具體的變化可以參考發行說明,尤其是“Migration”部分的內容;如果跨多個主要版本進行升級,需要閱讀每個中間版本的發行說明。

通過邏輯備份與還原進行升級

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

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

下面我們介紹這種升級方法的具體操作,假如當前 PostgreSQL 軟件的安裝目錄位于 /usr/local/pgsql,同時數據目錄位于 /usr/local/pgsql/data,我們在同一臺服務器上進行升級。

執行邏輯備份之前停止應用程序,確保沒有數據更新,因為備份開始后的更新不會被導出。如有必要,可以修改 /usr/local/pgsql/data/pg_hba.conf 文件禁止其他人訪問數據庫。

然后備份數據庫:

pg_dumpall > outputfile

如果已經安裝了新版本的 PostgreSQL,可以使用新版本的 pg_dumpall 命令備份舊版本數據庫。

停止舊版本的后臺服務:

pg_ctl stop

或者通過其他方式停止后臺服務。

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

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

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

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

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

將舊版本配置文件 pg_hba.conf 和 postgresql.conf 等中的改動在對應的新配置文件中再次進行修改。

使用數據庫專用用戶啟動新版本的后臺服務:

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

最后,利用新版本的 psql 命令還原數據:

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

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

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

執行以上操作時,新舊版本的后臺服務同時運行,新版本使用 5433 端口,舊版本使用 5432 端口。

利用 pg_upgrade 工具進行升級

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

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

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

確定沒有客戶端訪問之后備份數據庫,然后停止舊版本的后臺服務。例如 CentOS 可以執行以下命令:

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

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

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

如果舊版本中安裝了擴展模塊,在新版本中也需要安裝相應的共享對象文件或者 DLL 文件。但是不要執行CREATE EXTENSION命令,因為會從舊數據庫中進行升級。另外,如果使用了任何自定義的全文搜索文件(字典、同義詞、詞庫、停用詞),也需要復制到新的數據庫集群目錄中。

停止新版本的后臺服務。例如 CentOS 可以執行以下命令:

sudo systemctl stop postgresql-13

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

/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 表示執行升級檢查,而不會真的執行升級操作。通過檢查之后,可以去掉該參數執行升級:

/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 表示將新版本的數據目錄硬鏈接到舊版本的數據目錄,而不會復制一份新的數據文件,可以快速進行升級。

將舊版本配置文件 pg_hba.conf 和 postgresql.conf 等中的改動在對應的新配置文件中再次進行修改。

啟動新版本的后臺服務。例如 CentOS 可以執行以下命令:

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

連接服務器查看數據庫的版本信息:

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|

收集統計信息。pg_upgrade 不會生成新版本數據庫的統計信息,但是會創建一個腳本文件,執行該文件:

./analyze_new_cluster.sh

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

 ./delete_old_cluster.sh

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

yum remove postgresql12*

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

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

關于 pg_upgrade 的詳細使用和升級注意事項,例如流復制結構和日志傳輸復制結構中備用節點的升級,可以參考官方文檔。

使用邏輯復制功能進行升級

PostgreSQL 邏輯復制支持跨版本之間的數據復制,而且支持不同平臺之間的復制,因此也可以用于實現版本升級。我們可以安裝一個新版本的數據庫作為復制的從節點,當數據已經同步時執行一次主從切換,然后關閉舊版本的主節點。主從切換的升級方法通常只需要幾秒鐘就能完成,利用第三方高可用組件甚至可以實現零停機時間升級。

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

關于 PostgreSQL 邏輯復制結構的創建和主從切換,可以參考官方文檔。

總結

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

到此這篇關于PostgreSQL 數據庫跨版本升級常用方案解析的文章就介紹到這了,更多相關PostgreSQL 版本升級內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Docker環境下升級PostgreSQL的步驟方法詳解

標簽:阜陽 通化 荊州 那曲 泰州 海北 齊齊哈爾 臨滄

巨人網絡通訊聲明:本文標題《PostgreSQL 數據庫跨版本升級常用方案解析》,本文關鍵詞  PostgreSQL,數據庫,跨,版本,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PostgreSQL 數據庫跨版本升級常用方案解析》相關的同類信息!
  • 本頁收集關于PostgreSQL 數據庫跨版本升級常用方案解析的相關信息資訊供網民參考!
  • 推薦文章
    国产综合91天堂亚洲国产| 久久99欧美| 日本乱中文字幕系列| 欧美电影免费看大全| 亚洲精品久久玖玖玖玖| 91麻豆国产级在线| 欧美激情一区二区三区在线播放| 四虎影视精品永久免费网站| 999精品视频在线| 久久成人综合网| 久久精品人人做人人爽97| 亚洲第一色在线| 四虎影视久久久| 亚洲精品中文字幕久久久久久| 九九干| 日本在线www| 欧美日本免费| 成人免费观看的视频黄页| 国产麻豆精品| 99色视频在线观看| 色综合久久天天综合绕观看| 久久国产精品永久免费网站| 欧美另类videosbestsex久久| 国产91精品露脸国语对白| 99久久精品国产片| 美女免费毛片| 午夜家庭影院| 久久国产精品永久免费网站| 你懂的福利视频| 日本免费看视频| 久久99中文字幕| 国产a毛片| 欧美大片aaaa一级毛片| 日韩在线观看视频黄| 免费毛片基地| 精品在线观看国产| 国产网站在线| 九九精品在线播放| 国产国语在线播放视频| 久久精品店| a级黄色毛片免费播放视频| 国产91视频网| 可以免费看污视频的网站| 成人免费高清视频| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日日日夜夜操| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 你懂的福利视频| 97视频免费在线| 91麻豆国产级在线| 久久99这里只有精品国产| 二级特黄绝大片免费视频大片| 久久精品人人做人人爽97| 成人免费观看视频| 欧美国产日韩一区二区三区| 成人免费观看视频| 国产视频网站在线观看| 国产视频一区二区在线观看| 可以免费看污视频的网站| 国产高清视频免费| 国产麻豆精品视频| 日韩专区一区| 99久久网站| 国产综合成人观看在线| 国产视频网站在线观看| 999久久久免费精品国产牛牛| 91麻豆精品国产片在线观看| 成人免费观看的视频黄页| 亚洲第一视频在线播放| 日韩专区第一页| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 韩国三级一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 免费的黄色小视频| 国产极品白嫩美女在线观看看| 精品久久久久久中文字幕一区| 国产亚洲精品aaa大片| 999精品视频在线| 国产伦理精品| 一a一级片| 九九久久国产精品| 精品视频在线看| 久久99中文字幕| 精品久久久久久影院免费| 久久成人综合网| 午夜欧美福利| 国产一级强片在线观看| 欧美激情一区二区三区中文字幕| 日韩免费在线观看视频| 国产一区二区高清视频| 成人影院久久久久久影院| 久久精品免视看国产成人2021| 国产精品自拍亚洲| 国产91精品一区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 精品国产亚一区二区三区| 久久99中文字幕| 999精品视频在线| 精品视频在线观看视频免费视频| 一级女人毛片人一女人| 欧美一级视频免费观看| 日本免费区| 精品国产三级a∨在线观看| 99久久精品国产片| 精品视频在线观看视频免费视频| 色综合久久天天综线观看| 成人免费观看网欧美片| 国产国产人免费视频成69堂| 精品久久久久久综合网| 国产精品自拍在线观看| 黄色短视频网站| 国产精品1024永久免费视频| 台湾毛片| 欧美激情一区二区三区在线 | 九九免费高清在线观看视频| 久草免费资源| 高清一级毛片一本到免费观看| 久久99中文字幕| 国产a网| 麻豆系列 在线视频| 天天做人人爱夜夜爽2020毛片| 国产麻豆精品视频| 四虎影视精品永久免费网站| a级毛片免费观看网站| 日韩免费在线观看视频| 九九精品在线播放| 国产91精品一区二区| 999精品在线| 欧美爱色| 欧美a级成人淫片免费看| 国产成人啪精品视频免费软件| 国产91丝袜在线播放0| 一级女性全黄生活片免费| 欧美一级视频免费| 精品国产亚洲一区二区三区| 国产精品1024在线永久免费| 精品视频在线观看一区二区| 国产伦久视频免费观看 视频| 精品国产香蕉在线播出| 韩国毛片免费大片| 国产成人女人在线视频观看 | 二级片在线观看| 99久久精品国产国产毛片| 日韩一级精品视频在线观看| 日韩一级黄色| 黄视频网站免费看| 高清一级做a爱过程不卡视频| 中文字幕Aⅴ资源网| 日韩一级精品视频在线观看| 国产激情一区二区三区| 黄视频网站免费| 国产伦久视频免费观看 视频| 国产一区二区精品| 成人免费一级毛片在线播放视频| 成人a大片在线观看| 成人影视在线播放| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美日本二区| 日韩专区一区| 国产网站免费观看| 欧美激情中文字幕一区二区| 999精品在线| 二级特黄绝大片免费视频大片| 日韩中文字幕在线播放| 国产91精品系列在线观看| 999久久久免费精品国产牛牛| 精品久久久久久综合网| 亚洲女初尝黑人巨高清在线观看| 99久久精品国产高清一区二区| 黄视频网站免费观看| 亚洲天堂一区二区三区四区| 亚洲精品永久一区| 欧美1卡一卡二卡三新区| 九九久久国产精品| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产美女在线观看| 超级乱淫黄漫画免费| 精品国产三级a∨在线观看| 国产成人啪精品视频免费软件| 韩国三级视频在线观看| 亚欧视频在线| 国产综合成人观看在线| 精品视频在线观看一区二区 | 精品国产一区二区三区久 | 国产91精品一区| 久久99这里只有精品国产| 久草免费在线视频| 欧美大片a一级毛片视频| 韩国三级视频网站| 国产91精品一区| 国产不卡福利| 超级乱淫伦动漫| 一级片片| 精品美女| 成人影院久久久久久影院| 亚洲 国产精品 日韩| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 四虎影视精品永久免费网站| 国产伦理精品| 成人av在线播放|