Làm cách nào để nâng cấp PostgreSQL từ phiên bản 9.6 lên phiên bản 10.1 mà không mất dữ liệu?


207

Tôi đang sử dụng cơ sở dữ liệu PostgreSQL cho ứng dụng Ruby on Rails của tôi (trên Mac OS X 10.9).

Có hướng dẫn chi tiết nào về cách nâng cấp cơ sở dữ liệu PostgreSQL không?

Tôi sợ rằng tôi sẽ phá hủy dữ liệu trong cơ sở dữ liệu hoặc làm hỏng nó.


7
Làm sao lưu trong mọi trường hợp.
Patrick Oscarity

Câu trả lời:


401

Giả sử bạn đã sử dụng pha chế tại nhà để cài đặt và nâng cấp Postgres, bạn có thể thực hiện các bước sau.

  1. Dừng máy chủ Postgres hiện tại:

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  2. Khởi tạo cơ sở dữ liệu 10.1 mới:

    initdb /usr/local/var/postgres10.1 -E utf8

  3. chạy pg_upgrade (lưu ý: thay đổi phiên bản bin nếu bạn đang nâng cấp từ thứ gì đó khác bên dưới) :

    pg_upgrade -v \
        -d /usr/local/var/postgres \
        -D /usr/local/var/postgres10.1 \
        -b /usr/local/Cellar/postgresql/9.6.5/bin/ \
        -B /usr/local/Cellar/postgresql/10.1/bin/

    -v để kích hoạt đăng nhập nội bộ dài dòng

    -d thư mục cấu hình cụm cơ sở dữ liệu cũ

    -D thư mục cấu hình cụm cơ sở dữ liệu mới

    -b thư mục thực thi PostgreSQL cũ

    -B thư mục thực thi PostgreSQL mới

  4. Di chuyển dữ liệu mới vào vị trí:

    cd /usr/local/var
    mv postgres postgres9.6
    mv postgres10.1 postgres
  5. Khởi động lại Postgres:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  6. Kiểm tra /usr/local/var/postgres/server.logchi tiết và đảm bảo máy chủ mới khởi động đúng cách.

  7. Cuối cùng, cài đặt lại pgđá quý rails

    gem uninstall pg
    gem install pg

Tôi khuyên bạn nên dành chút thời gian để đọc tài liệu PostgreSQL để hiểu chính xác những gì bạn đang làm trong các bước trên để giảm thiểu sự thất vọng.


8
Tôi đã sử dụng lệnh sau để khởi tạo cơ sở dữ liệu:initdb /usr/local/var/postgres9.4 -E utf8 --lc-collate=C --lc-ctype=utf-8 --lc-monetary=C --lc-numeric=C
sunsations 28/12/14

Nó làm theo hướng dẫn của bạn từng bước. Và mọi thứ đã làm việc! Cảm ơn bạn rất nhiều.
Trantor Liu

3
Hãy cẩn thận với delete_old_cluster.shlệnh. Lần đầu tiên tôi đã xóa các thư mục /usr/local/postgres9.3 theo cách thủ công, hơn là chạy lệnh này và dường như tôi đã mất toàn bộ thư mục / usr / local / var / postgres (tôi có thể khôi phục nó từ Time Machine)
peter_v

1
Nếu bạn đang sử dụng Bundler, bạn nên loại bỏ gem bằng cách sử dụng gem uninstall pgnhưng sau đó hãy để bundler cài đặt lại phiên bản chính xác từ Gemfile.lock bằng cách chạy đơn giản bundle.
danielricecodes

1
Cập nhật nhỏ: brewbây giờ cũng có tùy chọn để sử dụng brew services stop postgresqlbrew services start postgresqlthay vì gọi trực tiếp launchctl unloadlaunchctl load.
hoa

59

Mặc dù tất cả các câu trả lời ở trên, đây là 5 xu của tôi.

Nó hoạt động trên mọi hệ điều hành và từ bất kỳ phiên bản postgres nào.

  • Dừng bất kỳ ví dụ postgres đang chạy;
  • Cài đặt phiên bản mới và khởi động nó; Kiểm tra xem bạn có thể kết nối với phiên bản mới không;
  • Thay đổi phiên bản cũ postgresql.conf-> porttừ 5432thành 5433;
  • Bắt đầu phiên bản postgres phiên bản cũ;
  • Mở một thiết bị đầu cuối và cdvào binthư mục phiên bản mới ;
  • Chạy pg_dumpall -p 5433 -U <username> | psql -p 5432 -U <username>
  • Dừng các postgres cũ đang chạy;

4
Cảm ơn Christian, đây chắc chắn là một giải pháp tuyệt vời và dễ dàng, tôi đã thành công từ 9,3 đến 9,5 như thế này
fnicollet

3
Hoạt động tốt để nâng cấp từ 9.1 lên 9.5 trên máy chủ Windows 2012.
Rolf

4
Một vấn đề của giải pháp này là nếu bạn đã thay đổi một số tệp cấu hình Postgres (ví dụ: postgresql.confhoặc pg_hba.conf), bạn sẽ cần sao chép thủ công những thay đổi đó trong cài đặt mới. Thay vào đó, nếu bạn sử dụng pg_upgradecluster, các tệp cấu hình sẽ được sao chép vào cụm mới: manpages.ubfox.com/manpages/precise/man8/
Kẻ

1
Lưu ý rằng ngay sau khi bạn bắt đầu lệnh, bạn sẽ nhận được một dấu nhắc mật khẩu, nhưng bạn phải nhập 2 mật khẩu lần lượt xác nhận từng mật khẩu bằng cách nhập. Hoặc bạn sẽ nhận đượcpg_dumpall: could not connect to database "XXX": fe_sendauth: no password supplied
Lu55

2
Về mặt kỹ thuật, điều này sẽ không hoạt động cho bất kỳ phiên bản nào, chỉ dành cho các phiên bản nguồn ở mức hoặc trên 7.0, như hướng dẫn sử dụng:Current releases of the dump programs can read data from any server version back to 7.0.
Mark Tielemans

56

Đây là giải pháp cho người dùng Ubuntu

Đầu tiên chúng ta phải dừng postgresql

sudo /etc/init.d/postgresql stop

Tạo một tệp mới có tên /etc/apt/source.list.d/pgdg.list và thêm dòng dưới đây

deb http://apt.postgresql.org/pub/repos/apt/ utopic-pgdg main

Thực hiện theo các lệnh dưới đây

wget -q -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.4
sudo pg_dropcluster --stop 9.4 main 
sudo /etc/init.d/postgresql start

Bây giờ chúng ta có mọi thứ, chỉ cần nâng cấp nó như dưới đây

sudo pg_upgradecluster 9.3 main
sudo pg_dropcluster 9.3 main

Đó là nó. Hầu hết các cụm được nâng cấp sẽ chạy trên số cổng 5433. Kiểm tra nó bằng lệnh bên dưới

sudo pg_lsclusters

2
Câu thứ hai đến câu cuối cùng mà bạn nói "Hầu hết cụm được nâng cấp sẽ chạy trên cổng số 5433" có lẽ nên nói "Cụm 9.3 sẽ chạy trên cổng số 5433 để bạn có thể hoàn nguyên nếu cần".
Andrew Thaddeus Martin

3
Lưu ý: Đối với Ubuntu 14.04, hãy sử dụng "trusty-pgdb" thay vì utopic-pgdb
Johnny

3
Lưu ý rằng điều này KHÔNG thực hiện nâng cấp tại chỗ. do đó, nó hoàn toàn vô dụng đối với DB 700 GB của tôi với dung lượng 1TB.
Tên giả

16

Cập nhật : Quá trình này tương tự để nâng cấp 9,5 đến ít nhất 11,5; chỉ cần sửa đổi các lệnh để phản ánh các phiên bản 9.610, đâu 9.6là phiên bản 10là phiên bản mới . Hãy chắc chắn điều chỉnh các thư mục "cũ" và "mới" tương ứng.


Tôi vừa nâng cấp PostgreQuery 9.5 lên 9.6 trên Ubuntu và nghĩ rằng tôi sẽ chia sẻ những phát hiện của mình, vì có một số sắc thái dành riêng cho hệ điều hành / gói cần phải biết.

( Tôi không muốn phải kết xuất và khôi phục dữ liệu theo cách thủ công , vì vậy một số câu trả lời khác ở đây không khả thi.)

Nói tóm lại, quá trình này bao gồm cài đặt phiên bản mới của PostgreSQL cùng với phiên bản cũ (ví dụ: 9.5 và 9.6), sau đó chạy pg_upgradenhị phân, được giải thích chi tiết (một số) tại https://www.postgresql.org/ docs / 9.6 / static / pgupTHER.html .

Khía cạnh "khó khăn" duy nhất của pg_upgradeviệc không vượt qua giá trị chính xác cho một đối số hoặc không đăng nhập như người dùng chính xác hoặc cdđến đúng vị trí trước khi thực hiện lệnh, có thể dẫn đến các thông báo lỗi khó hiểu.

Trên Ubuntu (và có lẽ là Debian), miễn là bạn đang sử dụng repo "chính thức", deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main và với điều kiện bạn chưa thay đổi đường dẫn hệ thống tệp mặc định hoặc tùy chọn thời gian chạy, quy trình sau sẽ thực hiện công việc.

Cài đặt phiên bản mới (lưu ý rằng chúng tôi chỉ định 9.6rõ ràng):

sudo apt install postgresql-9.6

Sau khi cài đặt thành công, cả hai phiên bản sẽ chạy song song, nhưng trên các cổng khác nhau. Đầu ra cài đặt đề cập đến điều này, ở phía dưới, nhưng thật dễ dàng bỏ qua:

Creating new cluster 9.6/main ...
  config /etc/postgresql/9.6/main
  data   /var/lib/postgresql/9.6/main
  locale en_US.UTF-8
  socket /var/run/postgresql
  port   5433

Dừng cả hai trường hợp máy chủ (điều này sẽ dừng cả hai cùng một lúc):

sudo systemctl stop postgresql

Chuyển sang người dùng hệ thống PostgreSQL chuyên dụng:

su postgres

Di chuyển vào thư mục nhà của anh ấy (không làm điều này sẽ gây ra lỗi):

cd ~

pg_upgrade yêu cầu các đầu vào sau ( pg_upgrade --helpcho chúng tôi biết điều này):

When you run pg_upgrade, you must provide the following information:
  the data directory for the old cluster  (-d DATADIR)
  the data directory for the new cluster  (-D DATADIR)
  the "bin" directory for the old version (-b BINDIR)
  the "bin" directory for the new version (-B BINDIR)

Những đầu vào này có thể được chỉ định bằng "tên dài", để dễ hình dung hơn:

  -b, --old-bindir=BINDIR       old cluster executable directory
  -B, --new-bindir=BINDIR       new cluster executable directory
  -d, --old-datadir=DATADIR     old cluster data directory
  -D, --new-datadir=DATADIR     new cluster data directory

Chúng tôi cũng phải vượt qua --new-optionschuyển đổi, vì không thực hiện được kết quả như sau:

connection to database failed: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/lib/postgresql/.s.PGSQL.50432"?

Điều này xảy ra bởi vì các tùy chọn cấu hình mặc định được áp dụng trong trường hợp không có công tắc này, dẫn đến các tùy chọn kết nối không chính xác được sử dụng, do đó xảy ra lỗi ổ cắm.

Thực hiện pg_upgradelệnh từ mới phiên bản PostgreSQL:

/usr/lib/postgresql/9.6/bin/pg_upgrade --old-bindir=/usr/lib/postgresql/9.5/bin --new-bindir=/usr/lib/postgresql/9.6/bin --old-datadir=/var/lib/postgresql/9.5/main --new-datadir=/var/lib/postgresql/9.6/main --old-options=-cconfig_file=/etc/postgresql/9.5/main/postgresql.conf --new-options=-cconfig_file=/etc/postgresql/9.6/main/postgresql.conf

Thoát khỏi tài khoản người dùng hệ thống chuyên dụng:

exit

Việc nâng cấp đã hoàn tất, nhưng , phiên bản mới sẽ liên kết với cổng 5433(mặc định là tiêu chuẩn 5432), vì vậy hãy ghi nhớ điều này nếu cố gắng kiểm tra phiên bản mới trước khi "cắt" nó.

Khởi động máy chủ như bình thường (một lần nữa, điều này sẽ bắt đầu cả phiên bản cũ và mới):

systemctl start postgresql

Nếu bạn muốn biến phiên bản mới thành mặc định, bạn sẽ cần chỉnh sửa tệp cấu hình hiệu quả, ví dụ: /etc/postgresql/9.6/main/postgresql.confvà đảm bảo rằng cổng được xác định như sau:

port = 5432

Nếu bạn làm điều này, hãy thay đổi số cổng của phiên bản cũ 5433thành cùng một lúc (trước khi bắt đầu dịch vụ) hoặc chỉ cần xóa phiên bản cũ (điều này sẽ không xóa nội dung cơ sở dữ liệu thực tế của bạn; bạn sẽ cần sử dụng apt --purge remove postgresql-9.5để điều đó xảy ra. ):

apt remove postgresql-9.5

Lệnh trên sẽ dừng tất cả các phiên bản, vì vậy bạn sẽ cần bắt đầu phiên bản mới lần cuối cùng với:

systemctl start postgresql

Là một điểm lưu ý cuối cùng, đừng quên xem xét pg_upgradelời khuyên tốt:

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
    ./analyze_new_cluster.sh

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh

1
Đối với tôi trong Mac Yosemite, PostgreSQL 9.2 -> 9.5: sudo su postgres, thay đổi tất cả PHƯƠNG trong pg_hba.conf cả của cài đặt để niềm tin trước khi pg_upgrade, chạy pg_upgrade trong / / tmp tin không ~ đã không làm việc để sudo mkdir /foobarchmod 777 /foobarvà chạy nó ở đó. Cuối cùng, lệnh pg_upTHER:/Library/PostgreSQL/9.5/bin/pg_upgrade -b /Library/PostgreSQL/9.2/bin -B /Library/PostgreSQL/9.5/bin -d /Library/PostgreSQL/9.2/data -D /Library/PostgreSQL/9.5/data -o -cconfig_file=/Library/PostgreSQL/9.2/data/postgresql.conf -O -cconfig_file=/Library/PostgreSQL/9.5/data/postgresql.conf
Jarno Argillander

1
tôi đã có thể nâng cấp thành công từ 9,5 lên 11,5 phải thêm kho lưu trữ apt postgres vào ubfox. và sau đó chỉ cần làm theo các bước sau: tecadmin.net/install-postgresql-server-on-ubfox
Shakee93

14

Nếu bạn đang sử dụng dịch vụ homebrew và homebrew, bạn có thể chỉ cần làm:

brew services stop postgresql
brew upgrade postgresql
brew postgresql-upgrade-database
brew services start postgresql

Tôi nghĩ rằng điều này có thể không hoạt động hoàn toàn nếu bạn đang sử dụng các tính năng postgres nâng cao, nhưng nó hoạt động hoàn hảo với tôi.


1
Hoạt động hoàn hảo cho macOS Mojave 10.14.2 - Cảm ơn!
8bithero

13

Các hướng dẫn sử dụng bao gồm chủ đề này trong chiều sâu. Bạn có thể:

  • pg_upgradetại chỗ; hoặc là

  • pg_dumppg_restore.

Nếu nghi ngờ, hãy làm điều đó với bãi rác. Đừng xóa thư mục dữ liệu cũ, chỉ giữ nó trong trường hợp có lỗi xảy ra / bạn mắc lỗi; bằng cách đó bạn có thể quay lại cài đặt 9.3 không thay đổi của mình.

Để biết chi tiết, xem hướng dẫn.

Nếu bạn bị mắc kẹt, hãy đăng câu hỏi chi tiết giải thích cách bạn bị mắc kẹt, ở đâu và những gì bạn đã thử trước tiên. Nó cũng phụ thuộc một chút vào cách bạn cài đặt PostgreSQL, vì có một số "bản phân phối" khác nhau của PostgreQuery cho OS X (không may). Vì vậy, bạn cần cung cấp thông tin đó.


8

Đứng trên vai của những sinh vật đáng thương khác đang giẫm đạp qua cái muck này, tôi đã có thể làm theo các bước sau để trở lại và chạy sau khi nâng cấp lên Yosemite:

Giả sử bạn đã sử dụng pha chế tại nhà để cài đặt và nâng cấp Postgres, bạn có thể thực hiện các bước sau.

  1. Dừng máy chủ Postgres hiện tại:

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  2. Khởi tạo cơ sở dữ liệu 9,4 mới:

    initdb /usr/local/var/postgres9.4 -E utf8

  3. Cài đặt postgres 9.3 (vì nó không còn xuất hiện trên máy của tôi):

    brew install homebrew/versions/postgresql93

  4. Thêm thư mục bị xóa trong quá trình nâng cấp Yosemite:

    mkdir -p /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/touch /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/.keep

  5. chạy pg_upgrade:

    pg_upgrade -v -d /usr/local/var/postgres -D /usr/local/var/postgres9.4 -b /usr/local/Cellar/postgresql93/9.3.5/bin/ -B /usr/local/Cellar/postgresql/9.4.0/bin/

  6. Di chuyển dữ liệu mới vào vị trí:

    cd /usr/local/var
    mv postgres postgres9.3
    mv postgres9.4 postgres
  7. Khởi động lại Postgres:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  8. Kiểm tra /usr/local/var/postgres/server.logchi tiết và đảm bảo máy chủ mới khởi động đúng cách.

  9. Cuối cùng, cài đặt lại thư viện liên quan?

    pip install --upgrade psycopg2
    gem uninstall pg
    gem install pg

1
pg_upTHER -v -d / usr / local / var / postgres -D /usr/local/var/postgres9.4 -b /usr/local/Cellar/postgresql93/9.3.*/bin/ -B / usr / local / Cellar /postgresql/9.4.*/bin/ # Phiên bản nhỏ có thể khác nhau.
Aaron McMillin

1
Cảm ơn vì điều đó. Tôi đã vô tình chạy brew cleanuptrước khi di chuyển dữ liệu và điều đó khiến postgres9.3 bị gỡ cài đặt. Điều này đã giúp. :)
markquezada 02/11/2015

5

Có vẻ như giải pháp đã được đưa vào Homebrew ngay bây giờ:

$ brew info postgresql
...
==> Caveats
To migrate existing data from a previous major version of PostgreSQL run:
  brew postgresql-upgrade-database
....

1

Điều này đã làm điều đó cho tôi.

https://gist.github.com/dideler/60c9ce184198666e5ab4

Ngắn và đến điểm. Tôi thực sự không nhằm mục đích hiểu được sự can đảm của PostgreSQL, tôi muốn hoàn thành công việc.


1
Công cụ này sử dụng công cụ pg_upgradecluster của Ubuntu, công cụ này có thể chậm hơn nhiều so với công cụ pg_upTHER của PostgreQuery và tất nhiên chỉ có trên Ubuntu.
alfonx

@alfonx Không đúng. Tôi có nó trên Debian của tôi jessie. Có hơn 10 DB và một lượng ~ 400 MB dữ liệu cơ sở dữ liệu đã được chuyển đổi trong nháy mắt. Một lần nữa, tôi đang sử dụng Debian ảo trên SSD.
dimitarvp

Hãy để tôi tự sửa: pg_upgradecluster là một phần của "cơ sở hạ tầng Debian PostgreQuery", vì vậy chỉ có sẵn trên các bản phát hành dựa trên Debian. Về tốc độ pg_upTHER cung cấp tùy chọn "--link", liên kết không sao chép dữ liệu nếu có thể: postgresql.org/docs/9.4/static/pgupTHER.html
alfonx

1
Có lẽ chúng tôi nhắm đến kết quả khác nhau. Sau khi nâng cấp phần mềm phân phối toàn diện, tôi đã kết thúc với 2 phiên bản PostgreSQL và dữ liệu mà các dự án của tôi sử dụng đã bị kẹt trên phiên bản cũ hơn (9.3). Vì vậy, tôi chỉ tìm kiếm liên kết ở trên (trong câu trả lời của tôi) và nâng cấp nó, thoát khỏi "cụm" cũ và phiên bản PG cũ hơn.
dimitarvp

Tôi đã cố nâng cấp từ 9,4 lên 11 pg_upgradecluster 9.4 mainnhưng tôi gặp lỗi Lỗi: specified cluster does not exist... Tôi đoán, trước tiên tôi phải cài đặt postgresql-9.4 với hướng dẫn này: wiki.postgresql.org/wiki/Apt#Quickstart
rubo77

1

Trên Windows tôi liên tục phải đối mặt với các thông báo lỗi khác nhau khi cố gắng sử dụng pg_upgrade.

Tiết kiệm rất nhiều thời gian cho tôi chỉ:

  1. DB dự phòng
  2. Gỡ cài đặt tất cả các bản sao của PostgreSQL
  3. Cài đặt 9.5
  4. Khôi phục DB

Đã làm điều này trong 9,5 đến 9,6 và làm việc hoàn hảo là tốt. Tốt để có thể thực hiện nâng cấp chính xác dễ dàng, thay vì "mới nhất". Tôi đã sử dụng Big SQL để có được trình cài đặt phù hợp ( openscg.com/bigsql/postgresql/installers.jsp ).
Bộ giải mã

0

Giải pháp của tôi là kết hợp cả hai tài nguyên này:

https://gist.github.com/tamidel/2ea1fcdf99c819b4e07d

http://www.gab.lc/articles/migration_postgresql_9-3_to_9-4

Các thứ hai một giúp hơn sau đó là người đầu tiên. Ngoài ra, không, không làm theo các bước như một số không cần thiết. Ngoài ra, nếu bạn không thể sao lưu dữ liệu qua bảng điều khiển postgres, bạn có thể sử dụng phương pháp thay thế và sao lưu dữ liệu bằng pgAdmin 3 hoặc một số chương trình khác, như tôi đã làm trong trường hợp của mình.

Ngoài ra, liên kết: https://help.ubfox.com/urdy/serverguide/postgresql.html Đã giúp đặt mật khẩu được mã hóa và đặt md5 để xác thực người dùng postgres.

Sau khi hoàn tất, để kiểm tra serverphiên bản postgres chạy trong terminal:

sudo -u postgres psql postgres

Sau khi nhập mật khẩu, chạy trong thiết bị đầu cuối postgres:

SHOW SERVER_VERSION;

Nó sẽ xuất ra một cái gì đó như:

 server_version 
----------------
 9.4.5

Để thiết lập và bắt đầu postgres tôi đã sử dụng lệnh:

> sudo bash # root
> su postgres # postgres

> /etc/init.d/postgresql start
> /etc/init.d/postgresql stop

Và sau đó để khôi phục cơ sở dữ liệu từ một tệp:

> psql -f /home/ubuntu_username/Backup_93.sql postgres

Hoặc nếu không hoạt động, hãy thử với cái này:

> pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d name_of_database ~/your_file.dump

Và nếu bạn đang sử dụng Rails, hãy thực hiện bundle exec rake db:migratesau khi kéo mã :)


0

Dành cho Mac thông qua homebrew:

brew tap petere/postgresql,

brew install <formula>(ví dụ brew install petere/postgresql/postgresql-9.6:)

Xóa Postgres cũ:

brew unlink postgresql

brew link -f postgresql-9.6

Nếu có lỗi xảy ra, đừng quên đọc và làm theo hướng dẫn pha trong từng bước.

Kiểm tra này để biết thêm: https://github.com/petere/homebrew-postgresql


0

Trên Windows 10 kể từ khi tôi có npm, tôi đã cài đặt gói rimraf. npm install rimraf -g

Sao lưu tất cả các cơ sở dữ liệu của bạn từng cái một bằng cách sử dụng lệnh pg_dump -U $username --format=c --file=$mydatabase.sqlc $dbname

Sau đó đã cài đặt Phiên bản PostgreQuery mới nhất tức là 11.2, điều đó nhắc tôi sử dụng cổng 5433 lần này.

Tiếp theo là Gỡ cài đặt các phiên bản cũ hơn của tôi PostgreSQL là 10. Lưu ý trình gỡ cài đặt có thể đưa ra cảnh báo không xóa thư mục C:\PostgreSQL\10\data. Đó là lý do tại sao chúng ta có bước tiếp theo sử dụng rimraf để xóa vĩnh viễn thư mục và đó là các thư mục con.

thay đổi vào thư mục cài đặt PostgreSQL và chạy lệnh rimraf 10. 10 là một tên thư mục. Lưu ý sử dụng phiên bản cũ hơn của PostgreSQL tức là 9.5 hoặc một cái gì đó.

Bây giờ thêm C:\PostgreSQL\pg11\bin, C:\PostgreSQL\pg11\libvào các biến môi trường Windows. Lưu ý phiên bản cài đặt mới của tôi là 11 vì vậy tại sao tôi đang sử dụng pg11.

Điều hướng để C:\PostgreSQL\data\pg11sau đó mở postgresql.confchỉnh sửaport = 5433 đểport = 5432

Đó là nó. Mở cmd và gõpsql -U postgres

Bây giờ bạn có thể khôi phục tất cả các cơ sở dữ liệu được hỗ trợ của mình từng cái một bằng cách sử dụng lệnh pg_restore -U $username --dbname=$databasename $filename


0

Giải pháp của tôi để nâng cấp từ Postgresql 11 lên Postgresql 12 trên Windows 10 là như sau.

Như một nhận xét đầu tiên, bạn sẽ cần có khả năng dừng và bắt đầu dịch vụ Postgresql. Bạn có thể làm điều này bằng các lệnh sau trong Powershell.

Khởi đầu: pg_ctl start -D “d:\postgresql\11\data”

Dừng lại: pg_ctl stop -D “d:\postgresql\11\data”

Trạng thái: pg_ctl status -D “d:\postgresql\11\data”

Sẽ là khôn ngoan để tạo một bản sao lưu trước khi thực hiện nâng cấp. Ví dụ Postgresql 11 phải được chạy. Sau đó để sao chép toàn cầu

pg_dumpall -U postgres -g -f d:\bakup\postgresql\11\globals.sql

và sau đó cho mỗi cơ sở dữ liệu

pg_dump -U postgres -Fc <database> > d:\backup\postgresql\11\<database>.fc

hoặc là

pg_dump -U postgres -Fc -d <database> -f d:\backup\postgresql\11\<database>.fc

Nếu chưa cài đặt xong Postgresql 12 (vì Postgresql 11 cũng được cài đặt, nó sẽ có trên cổng 5433)

Sau đó, để thực hiện nâng cấp như sau:

1) Dừng dịch vụ Postgresql 11 (xem bên trên)

2) Chỉnh sửa postgresql.conftập tin trong d:\postgresql\12\datavà thay đổi port = 5433thànhport = 5432

3) Chỉnh sửa đường dẫn môi trường người dùng windows ( windows startsau đó nhậpenv ) để trỏ đến Postgresql 12 thay vì Postresql 11

4) Chạy nâng cấp bằng cách nhập lệnh sau.

pg_upgrade `
-b c:\program files\postgresql\11\bin `
-B c:\program files\postgresql\12\bin `
-d d:\postgresql\11\data `
-D d:\postgresql\12\data --username=postgres

(Trong powershell, sử dụng backtick (hoặc backquote) `để tiếp tục lệnh trên dòng tiếp theo)

5) và cuối cùng bắt đầu dịch vụ Postgresql 12 mới

pg_ctl start -D “d:\postgresql\12\data”


-1

Tôi nghĩ rằng đây là liên kết tốt nhất cho giải pháp của bạn để cập nhật postgres lên 9.6

https://sandymadaan.wordpress.com/2017/02/21/upgrade-postgresql9-3-9-6-in-ubuntu-retaining-the-databases/
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.