จะทำการอัพเกรดเล็กน้อยของ PostgreSQL บน Windows เช่น 9.3.0 เป็น 9.3.1 ได้อย่างไร


10

อะไรคือวิธีที่แนะนำในการอัพเกรดเล็กน้อยจาก PostgreSQL เช่น 9.3.0 เป็น 9.3.1 โดยใช้โปรแกรมติดตั้ง windows ที่สร้างโดย Enterprise DB ฉันควรถอนการติดตั้งก่อนหรือเพียงแค่ติดตั้งผ่านการติดตั้งที่มีอยู่?

การติดตั้งปัจจุบันได้ดำเนินการกับ postgresql-9.3.0-1-windows-x64.exe ตอนนี้ฉันต้องการอัพเกรดโดยใช้ postgresql-9.3.1-1-windows-x64.exe


ตามเอกสารประกอบ : หยุดเซิร์ฟเวอร์ติดตั้งไบนารีใหม่และรีสตาร์ท มันเป็นความคิดที่ดีเสมอที่จะสำรองข้อมูลและโดยทั่วไปจะมีแผน B
dezso

ขอบคุณสำหรับลิงค์ @dezso ฉันได้อ่านส่วนของคู่มือ 9.3 แต่พบว่ามันค่อนข้างคลุมเครือโดยเฉพาะอย่างยิ่งเกี่ยวกับไบนารีการติดตั้ง Windows
buzz3791

@ buzz3791 คำถาม / ชื่อไม่ถูกต้องในขณะนี้เนื่องจาก 10.0 ถึง 10.1 เป็นการอัพเกรดเล็กน้อยด้วยโครงร่างการกำหนดรุ่นใหม่ ฉันคิดว่าคุณควรถอดชิ้นe.g. ...ส่วนออก
isapir

คำตอบ:


8

บน Windows เพียงหยุดบริการ postgresql จากนั้นเรียกใช้ postgresql-9.3.1-1-windows-x64.exe ที่ด้านบนของ 9.3.0 ที่มีอยู่ ไม่จำเป็นต้องถอนการติดตั้ง แน่นอนแนะนำให้สำรองข้อมูล

ไม่มีเอกสารประกอบที่ชัดเจนและชัดเจนสำหรับขั้นตอนการอัปเดตบน Windows โปรดทราบว่าลิงก์เอกสารที่จัดทำโดย @dezso ได้ถูกย้ายในคู่มือปัจจุบันไปที่: https://www.postgresql.org/docs/current/static/upgrading.html

บันทึกประจำรุ่นของ PostgreSQL โดยทั่วไปแล้วเคล็ดลับการย้ายเอกสารในภาคผนวก E ตัวอย่างเช่น

แหล่งข้อมูลที่ดีที่สุดของตัวติดตั้ง Windows คือฟอรัม Enterprise DB นี่คือการโพสต์บางส่วนที่ฉันพบว่าได้ตอบคำถามแล้ว ...

โปรดทราบว่าข้อมูลการอัพเกรดจะเลื่อนจากรุ่นหนึ่งไปยังอีกรุ่นหนึ่ง ตัวอย่างเช่น,

  • ตำแหน่งเวอร์ชัน 10: บทที่ 18 การตั้งค่าเซิร์ฟเวอร์และการใช้งานส่วน 18.6 การอัพเกรดคลัสเตอร์ PostgreSQL https://www.postgresql.org/docs/10/static/upgrading.html
  • ตำแหน่งเวอร์ชัน 9.3: บทที่ 17 การตั้งค่าเซิร์ฟเวอร์และการทำงานส่วนที่ 17.6 การอัพเกรดคลัสเตอร์ PostgreSQL http://www.postgresql.org/docs/9.3/static/upgrading.html
  • ตำแหน่งเวอร์ชัน 9.0: บทที่ 24 การสำรองและกู้คืนส่วน 24.4 การย้ายข้อมูลระหว่างรีลีส http://www.postgresql.org/docs/9.0/static/migration.html

โปรดทราบว่า ณ วันที่ 2017 มิถุนายน EnterpriseDB แทนที่ฟอรัมสนทนาชุมชนที่มีผลต่อลิงก์ในคำตอบนี้ ( https://web.archive.org/web/20171021012954/https://www.enterprisedb.com/news/enterprisedb-announces- ใหม่ postgres- หินออนไลน์ผู้ใช้ฟอรั่ม ) ฉันสามารถตามโพสต์ต้นฉบับบน Wayback Machine หนึ่งในการเชื่อมโยงที่ตายแล้วที่ผมไม่สามารถที่จะซ่อมแซม: "2010 ม.ค. - อัพเกรดเป็น 8.4.2 จาก 8.4.1" http://forums.enterprisedb.com/posts/list/2115.page#7888


4

สำหรับระเบียนให้เรียกใช้โปรแกรมติดตั้งสำหรับ Windows จาก Enterprise DB (ค่าเริ่มต้นเชื่อมโยงจากไซต์ Postgres ) อย่างน้อยตั้งแต่รุ่นปัจจุบัน Postgres 9.4 คุณไม่ต้องหยุดpostgresqlบริการ ตัวติดตั้งทำเพื่อคุณ คุณยังคงต้องสร้างการเชื่อมต่อใหม่หากมี (ลูกค้าส่วนใหญ่ทำสิ่งนี้โดยอัตโนมัติ)

โปรดดูคู่มือปัจจุบัน (ใช้Postgres เวอร์ชันปัจจุบัน ):

http://www.postgresql.org/docs/current/interactive/upgrading.html


3

ฉันเพิ่งอัพเกรด 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หรือวิธีอื่น แต่สำหรับการอัพเกรดเล็กน้อยวิธีนี้ใช้งานได้ดี


1
สิ่งที่ดีที่ฉันโพสต์ไว้ที่นี่ ฉันเพิ่งทำตามคำแนะนำเพื่ออัปเกรดจาก10.1เป็น10.2และใช้งานได้ดี
isapir
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.