PostgreSQL 利用pg_upgrade升級版本

來源:互聯網
上載者:User

標籤:

  參考:http://www.postgresql.org/docs/current/static/pgupgrade.html

  • 概述

從低版本升級到 新版本,有幾種可選的方案。一是使用pg_dump/pg_restore,該方法比較耗時,也即是停機時間比較長,特別是大資料量下,但是 穩定且易於操作。二是和MySQL那樣利用複製的方式,停機時間短,但操作相對複雜。第三種就是利用pg_upgrade,重建系統資料表,相對停機時間較短。

  • pg_upgrade

  1. 文法

  pg_upgrade -b oldbindir -B newbindir -d olddatadir -D newdatadir [option...]

  2. 原理

根據官方文檔介紹,PostgreSQL  每次升級主要體現在系統資料表的改變,對於資料檔案的格式基本不做改動,因此利用這個特性,只要重建所有系統資料表,複用原有資料檔案,即可完成升級。對於 8.4.X後的每一次大版本升級都適用。需要注意的是,即便如此,該方法也有一定的限制,在官方文檔的NOTE部分有詳細說明。

  • 升級步驟

  1. 編輯postgresql.conf,修改舊資料庫連接埠為5433

  2. 安裝新版PostgreSQL

  3. 停止新舊資料庫服務 

  sudo service postgresql stop

  4. 驗證相容性

/usr/lib/postgresql/9.4/bin/pg_upgrade --old-datadir=/var/lib/postgresql/9.3/main/ --new-datadir=/var/lib/postgresql/9.4/main/  --old-bindir=/usr/lib/postgresql/9.3/bin/  --new-bindir=/usr/lib/postgresql/9.4/bin -p5433 -P5432 -o"-c config_file=/etc/postgresql/9.3/main/postgresql.conf" -O"-c config_file=/etc/postgresql/9.4/main/postgresql.conf" -c

  5. 升級

/usr/lib/postgresql/9.4/bin/pg_upgrade --old-datadir=/var/lib/postgresql/9.3/main/ --new-datadir=/var/lib/postgresql/9.4/main/  --old-bindir=/usr/lib/postgresql/9.3/bin/  --new-bindir=/usr/lib/postgresql/9.4/bin -p5433 -P5432 -o"-c config_file=/etc/postgresql/9.3/main/postgresql.conf" -O"-c config_file=/etc/postgresql/9.4/main/postgresql.conf"

  6. 執行指令碼重建統計資訊,刪除舊資料庫(可選)

./analyze_new_cluster.sh./delete_old_cluster.sh

 

PostgreSQL 利用pg_upgrade升級版本

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.