Tôi vừa nâng cấp Postgres 10.0 lên 10.1 và đó là một bản nâng cấp rất nhanh và dễ dàng.
Tôi đã tải xuống các tệp nhị phân từ https://www.enterprisedb.com/doad-postgresql-binaries và giải nén chúng C:\postgres
, sau đó đổi tên thư mục pgsql
thành pgsql-10.1
để tôi có thể giữ các phiên bản cũ hơn cho đến khi không cần thiết.
Tôi sao chép các tập tin dll msvcp120.dll
và msvcr120.dll
đến C:\postgres\pgsql-10.1\bin
vì tôi thích rằng cài đặt đơn giản trong "Installer" mà có lẽ thêm nhiều hơn nữa sưng lên mức cần thiết.
Sau đó tôi đã sử dụng tập lệnh bó đơn giản này mà tôi đã viết trong quá khứ:
set MAJOR_VERSION=10
set MINOR_VERSION=1
set SERVICE_NAME=pgsql-%MAJOR_VERSION%.%MINOR_VERSION%
set PGHOME=C:\postgres\%SERVICE_NAME%
set PGDATA=C:\postgres\pgdata%MAJOR_VERSION%
%PGHOME%\bin\pg_ctl.exe register -N %SERVICE_NAME% -U LocalSystem -S auto --pgdata=%PGDATA%
::: to unregister old service:
::%PGHOME%\bin\pg_ctl.exe unregister -N %SERVICE_NAME%
Tôi đã chạy SELECT version();
trong psql để xác nhận phiên bản cũ:
postgres=# select version();
-[ RECORD 1 ]-------------------------------------------------------
version | PostgreSQL 10.0, compiled by Visual C++ build 1800, 64-bit
Sau đó tôi đã chạy tập lệnh bó ở trên đã cài đặt một dịch vụ có tên postgres-10.1
.
Tôi ngừng các dịch vụ cũ và thiết lập của nó Startup Type
để Disabled
, và bắt đầu các dịch vụ mới.
Chạy SELECT version();
lại trong psql đã xác nhận nâng cấp (phải chạy hai lần do kết nối bị hủy bỏ khi tôi dừng máy chủ cũ):
postgres=# select version();
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
postgres=# select version();
-[ RECORD 1 ]-------------------------------------------------------
version | PostgreSQL 10.1, compiled by Visual C++ build 1800, 64-bit
Hãy nhớ rằng việc nâng cấp một phiên bản chính đòi hỏi phải cập nhật thư mục dữ liệu bằng pg_upgrade
hoặc một số phương pháp khác, nhưng đối với một nâng cấp nhỏ, phương pháp này hoạt động như một cơ duyên.