Từ bên trong bất kỳ DB nào của cụm:
Catch 22:trước tiên bạn cần kết nối với cơ sở dữ liệu. Có thể bạn có thể kết nối với tư cách là một người dùng khác? (Theo mặc định, một số kết nối được dành riêng cho superusers với superuser_reserved_connections
cài đặt.)
Để nhận thông tin chi tiết cho từng kết nối bởi người dùng này:
SELECT *
FROM pg_stat_activity
WHERE usename = 'user_name';
Với tư cách là cùng một người dùng hoặc với tư cách là siêu người dùng, bạn có thể hủy tất cả các kết nối (khác) của một người dùng:
SELECT pg_cancel_backend(pid) -- (SIGINT)
-- pg_terminate_backend(pid) -- the less patient alternative (SIGTERM)
FROM pg_stat_activity
WHERE usename = 'user_name'
AND pid <> pg_backend_pid();
Tốt hơn là hãy chắc chắn rằng bạn làm như vậy là ổn. Bạn không muốn chấm dứt các truy vấn (hoặc kết nối) quan trọng theo cách đó.
pg_cancel_backend()
và pg_terminate_backend()
trong sách hướng dẫn.
Từ trình bao Linux
Bạn có tự bắt đầu những kết nối khác không? Có thể là một kịch bản treo của bạn? Bạn sẽ có thể giết chúng (nếu bạn chắc chắn rằng làm như vậy là ổn).
Bạn có thể điều tra bằng ps
quy trình nào có thể bị lỗi:
ps -aux
ps -aux | grep psql
Nếu bạn xác định một quy trình để giết (tốt hơn là hãy chắc chắn rằng bạn không không muốn giết máy chủ):
kill 123457689 # pid of process here.
Hoặc với SIGKILL
thay vì SIGTERM
:
kill -9 123457689