ฉันเพิ่งอัพเกรด Postgres 10.0 เป็น 10.1 และเป็นการอัพเกรดที่ง่ายและรวดเร็วมาก
ฉันดาวน์โหลดไบนารีจากhttps://www.enterprisedb.com/download-postgresql-binariesและคลายซิปเป็นC:\postgres
แล้วเปลี่ยนชื่อไดเรกทอรีpgsql
เป็นpgsql-10.1
เพื่อให้ฉันสามารถเก็บรุ่นเก่าไว้จนกว่าจะไม่จำเป็น
ผมคัดลอก DLL ไฟล์msvcp120.dll
และmsvcr120.dll
จะC:\postgres\pgsql-10.1\bin
เพราะผมต้องการให้ติดตั้งง่ายกว่า "การติดตั้ง" ซึ่งอาจจะเพิ่มการขยายตัวมากขึ้นกว่าที่จำเป็น
จากนั้นฉันใช้สคริปต์แบทช์ง่าย ๆ ที่ฉันเคยเขียนในอดีต:
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%
ฉันใช้SELECT version();
psql เพื่อยืนยันเวอร์ชั่นเก่า:
postgres=# select version();
-[ RECORD 1 ]-------------------------------------------------------
version | PostgreSQL 10.0, compiled by Visual C++ build 1800, 64-bit
postgres-10.1
จากนั้นผมก็วิ่งสคริปต์ชุดดังกล่าวข้างต้นซึ่งติดตั้งบริการที่ชื่อว่า
ฉันหยุดบริการเก่าและการตั้งค่าของมันStartup Type
ไปDisabled
และเริ่มบริการใหม่
ทำงานSELECT version();
อีกครั้งใน psql ยืนยันการอัพเกรด (ต้องรันสองครั้งเนื่องจากการเชื่อมต่อถูกยกเลิกเมื่อฉันหยุดเซิร์ฟเวอร์เก่า):
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
โปรดทราบว่าการอัพเกรดรุ่นใหญ่ต้องอัปเดตไดเรกทอรีข้อมูลด้วยpg_upgrade
หรือวิธีอื่น แต่สำหรับการอัพเกรดเล็กน้อยวิธีนี้ใช้งานได้ดี