Làm cách nào để đổi tên cụm PostgreSQL?


8

Tôi googled và tìm thấy trang web cũ này , cho biết chỉ để thay đổi tên của thư mục. Tôi đã thử nó nhưng nó không hoạt động:

$ pg_lsclusters 
Version Cluster   Port Status Owner    Data directory                     Log file
8.4     main      5432 down   postgres /var/lib/postgresql/8.4/main       /var/log/postgresql/postgresql-8.4-main.log
9.1     main      50420 online postgres /var/lib/postgresql/9.1/main       /var/log/postgresql/postgresql-9.1-main.log$ pg_ctlcluster 9.1 main stop

$ pwd
/var/lib/postgresql/9.1

$ ls
main

$ mv main oldmain

$ pg_ctlcluster 9.1 oldmain start
Error: specified cluster does not exist

PostgreQuery 9.1.4, Ubuntu 11.10


Tôi bối rối. Một cụm PostgreSQL không có tên.
a_horse_with_no_name

@a_horse_with_no_name, tôi đã thêm đầu ra pg_lscl cluster ở trên. Tôi chưa quen với điều này, nhưng tôi tin rằng bạn có thể có nhiều cụm và bạn phải xác định cụm nào bạn đang nói chuyện với tên của nó (hoặc có thể là tên thư mục, tôi không chắc chắn).
Rob Bednark

@a_horse_with_no_name: Tên cụm là đặc trưng cho kiến ​​trúc đa phiên bản / đa cụm trong Debian, Ubuntu và bạn bè. Tôi hy vọng câu trả lời của tôi có thể làm sáng tỏ điều này.
Erwin Brandstetter

@ErwinBrandstetter: cảm ơn tôi không biết điều đó. Bạn sống và học hỏi;)
a_horse_with_no_name

Câu trả lời:


9

Cập nhật: phiên bản 166 của postgresl-commongói được thêm vào pg_renamecluster. Xem câu trả lời mới của Ilya về điều đó.


Trong các phiên bản cũ hơn (bao gồm Postgres 9.1.4 trên Ubuntu 11.10), tên của cụm được gắn với tên của thư mục dữ liệu trong "Kiến trúc PostgreQuery đa phiên bản / đa cụm" do Martin Pitt giới thiệu. Điều này được cung cấp với các gói Debian (Debian, Ubuntu và các bản phân phối có liên quan). Để biết mô tả chi tiết về kiến ​​trúc, xem:

/usr/share/doc/postgresql-common/README.Debian.gz

Hoặc duyệt tập tin trực tuyến tại đây.

Các cài đặt khác không có tất cả các tính năng này, vì vậy một số người có thể bị nhầm lẫn khi bạn nói về tên cụm.

Chỉ đổi tên thư mục dữ liệu không hoạt động, bởi vì bạn phải thay đổi thư mục /etc/postgresql/<version>/<cluster>tương ứng.

Và có một vài cài đặt trong bạn postgresql.conf, cũng phải được điều chỉnh. Chạy một grep trong thư mục để xem:

postgres@db:/etc/postgresql/9.1/main$ grep 'main' ./*

Cảm ơn @Erwin_Brandstetter! Câu trả lời chi tiết đẹp với liên kết hữu ích đến kiến ​​trúc của Martin Pitt. Tôi sẽ cho câu trả lời của bạn một thử.
Rob Bednark

Liên kết đến people.debian.org/~mpitt/arch architecture.html không còn hoạt động nữa
a_horse_with_no_name

@a_horse_with_no_name: Cảm ơn, tôi đã cập nhật tương ứng.
Erwin Brandstetter

6

Debian / Ubuntu có một pg_renameclusterlệnh (có sẵn trong gói "postgresql-common") thực hiện đúng những gì bạn cần:

  • đổi tên cấu hình và thư mục dữ liệu,
  • đổi tên các tệp nhật ký hiện có,
  • thay đổi một số cài đặt trong postgresql.conf.

Trang nam .

Lưu ý cho người dùng Systemd: trình tạo được sử dụng để tạo tệp đơn vị (nghĩa là dịch vụ) cho mỗi cụm PostgreQuery. Vì vậy, sau khi pg_renameclustertải lại cấu hình Systemd, hãy bật và bắt đầu dịch vụ mới: sudo systemctl daemon-reload sudo systemctl enable postgresql@<version>-<new cluster name>.service sudo systemctl start postgresql


2
Cần phải đề cập rằng pg_renameclusterchỉ được thêm vào bản phát hành không ổn định với postgresql-common (166) vào tháng 2 năm 2015 . IOW: không có sẵn trong Debian trước jessie-backports. Đó là những năm sau khi câu hỏi được hỏi và hầu như không thể áp dụng cho Postgres 9.1 (mặc dù bạn có thể chạy một cụm pg 9.1 lỗi thời trong cơ sở hạ tầng được cập nhật).
Erwin Brandstetter
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.