Không thể tắt bưu điện cũ khi nâng cấp lên Postgres 9.2


13

Tôi đang nâng cấp lên Postgres 9.2.2 (từ 9.1.4). Khi tôi cố gắng nâng cấp DB bằng cách sử dụng:

pg_upgrade -b /usr/local/Cellar/postgresql/9.1.4/bin -B /usr/local/Cellar/postgresql/9.2.2/bin -d /usr/local/var/postgres91 -D /usr/local/var/postgres

Tôi nhận được thông báo lỗi sau:

Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories                 ok

There seems to be a postmaster servicing the old cluster.
Please shutdown that postmaster and try again.
Failure, exiting

Tôi đã cố gắng dừng máy chủ, nhưng không thể làm cho lệnh nâng cấp hoạt động. Làm thế nào để tôi tắt máy bưu điện cũ?

Câu trả lời:


11

Các postmaster.pidnên bên trong các phiên bản trước của usr/local/varthư mục. Đơn giản chỉ cần đổi tên tập tin này sẽ giải quyết vấn đề.


Tôi đã gặp vấn đề này một vài lần và đây là một câu trả lời tốt. Dừng tất cả các trường hợp của postgres trước khi nâng cấp cũng phải phù hợp
Jerome

4

Trong OS X Yosemite, sau khi đã cài đặt PostgreSQL qua Homebrew:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

1
Điều này không khắc phục vấn đề. Nếu pg_ctl -D /usr/local/var/postgres/ stoptrở về No such process, thì bạn nên rm /usr/local/var/postgres/postmaster.pid.
Andrew

1

Trên hầu hết các hệ thống unix, bạn sẽ tìm thấy một tập lệnh init /etc/init.dmà bạn có thể sử dụng để bắt đầu, khởi động lại, tải lại hoặc dừng các dịch vụ unix.

ví dụ

sudo /etc/init.d/postgresql stop

Nếu không có sẵn, bạn có thể sử dụng pg_ctl stop

ví dụ

su - postgres
bash-3.1$ pg_ctl stop  # normal stop
bash-3.1$ pg_ctl stop -m s # smart stop
bash-3.1$ pg_ctl stop -m f # fast stop
bash-3.1$ pg_ctl stop -m i # immediate stop

Thêm về pg_ctl

http://www.postgresql.org/docs/9.1/static/app-pg-ctl.html

EDIT Nếu bạn vẫn gặp lỗi và bạn chắc chắn rằng người quản lý bưu điện không còn chạy nữa (hãy kiểm tra sudo ps aux | grep "postmaster"- chỉ nên trả lại một dòng), bạn vẫn có tệp pid sau khi tắt máy không sạch

Loại bỏ pidfile, vd

> sudo -u postgres mv /var/lib/postgres/data-9.1/postmaster.pid /tmp

1
Khi tôi cố gắng pg_ctl stop, tôi nhận được : pg_ctl: no database directory specified and environment variable PGDATA unset. BTW, dường như không có máy chủ nào đang chạy : luciano$ ps auxwww | grep postgresluciano 995 0.0 0.0 2434892 548 s000 R+ 10:42PM 0:00.00 grep postgres.
Luciano

grep cho bưu điện

Câu trả lời được cập nhật với thông tin thêm

Không may mắn:sudo ps aux | grep "postmaster" luciano 3101 0.0 0.0 2434892 548 s002 S+ 9:12PM 0:00.00 grep postmaster
Luciano

Vấn đề được giải quyết. Xem câu trả lời của tôi.
Luciano

0

Trên Ubuntu, dừng dịch vụ PostgreSQL trước khi thực hiện nâng cấp. Điều này sẽ dừng tất cả các phiên bản của postgres bất kể các phiên bản được cài đặt.

service postgresql stop

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.