Đã giải quyết ... một phần.
Rõ ràng, việc cài đặt phiên bản OS X mới nhất (ví dụ:Yosemite hoặc El Capitan) sẽ xóa một số thư mục trong /usr/local/var/postgres
.
Để khắc phục điều này, bạn chỉ cần tạo lại các thư mục bị thiếu:
mkdir -p /usr/local/var/postgres/pg_commit_ts
mkdir -p /usr/local/var/postgres/pg_dynshmem
mkdir -p /usr/local/var/postgres/pg_logical/mappings
mkdir -p /usr/local/var/postgres/pg_logical/snapshots
mkdir -p /usr/local/var/postgres/pg_replslot
mkdir -p /usr/local/var/postgres/pg_serial
mkdir -p /usr/local/var/postgres/pg_snapshots
mkdir -p /usr/local/var/postgres/pg_stat
mkdir -p /usr/local/var/postgres/pg_stat_tmp
mkdir -p /usr/local/var/postgres/pg_tblspc
mkdir -p /usr/local/var/postgres/pg_twophase
Hay, ngắn gọn hơn ( cảm ơn Nate ):
mkdir -p /usr/local/var/postgres/{{pg_commit_ts,pg_dynshmem,pg_replslot,pg_serial,pg_snapshots,pg_stat,pg_stat_tmp,pg_tblspc,pg_twophase},pg_logical/{mappings,snapshots}}
Chạy lại pg_ctl start -D /usr/local/var/postgres
bây giờ máy chủ khởi động bình thường và, ít nhất là đối với tôi, không có bất kỳ mất mát dữ liệu nào.
CẬP NHẬT
Trên hệ thống của tôi, một số thư mục trống ngay cả khi Postgres đang chạy. Có thể, như một phần của hoạt động "dọn dẹp" nào đó, Yosemite loại bỏ bất kỳ thư mục trống nào? Trong mọi trường hợp, tôi đã tiếp tục và tạo tệp '.keep' trong mỗi thư mục để ngăn việc xóa trong tương lai.
touch /usr/local/var/postgres/{{pg_commit_ts,pg_dynshmem,pg_replslot,pg_serial,pg_snapshots,pg_stat,pg_stat_tmp,pg_tblspc,pg_twophase},pg_logical/{mappings,snapshots}}/.keep
Lưu ý :Tạo .keep
tệp trong các thư mục đó sẽ tạo ra một số nhiễu trong tệp nhật ký của bạn, nhưng dường như không ảnh hưởng tiêu cực đến bất kỳ điều gì khác.