Mục lục
1. Giới thiệu
Có một số lý do phổ biến khiến PostgreSQL không thể khởi động.
Việc đầu tiên là bạn hãy kiểm tra file log khi khởi động để xem PostgreSQL báo lỗi gì.
Dưới đây tôi sẽ giải thích chi tiết hơn một số thông báo lỗi phổ biến nhất.
2. Lỗi thường gặp 1: Address already in use
LOG: could not bind IPv4 address "127.0.0.1": Address already in use HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry. FATAL: could not create any TCP/IP sockets
Nguyên nhân của lỗi này là do bạn đã cố gắng khởi động PostgreSQL trên port 5432 nhưng port này đã có 1 chương trình khác chiếm dụng rồi (có thể là 1 instance PostgreSQL khác hoặc 1 chương trình bất kỳ nào đó)
Để tìm ra chương trình nào đang chiếm dụng port, bạn có thể dùng lệnh sau:
netstat -ltnp | grep -w ':5432'
(Lệnh này áp dụng trên Linux 7, với các version hoặc distro Linux khác, bạn có thể search câu lệnh tương tự)
Kết quả có thể như sau:
tcp6 0 0 :::5432 :::* LISTEN 6386/httpd
Điều này có nghĩa là chương trình httpd đang chiếm dụng port 5342 rồi. Bây giờ bạn có thể quyết định là kill tiến trình đang chiếm dụng port 5432 đi hoặc là khởi động lại PostgreSQL ở một port khác.
Để thay đổi port, bạn cần thay đổi tham số port trong cấu hình của PostgreSQL. Bạn có thể tham khảo bài viết sau:
3. Lỗi thường gặp 2: Could not create shared memory segment
FATAL: could not create shared memory segment: Invalid argument DETAIL: Failed system call was shmget(key=5440001, size=4011376640, 03600).
có thể có nghĩa là tham số kernel limit trên hệ điều hành về kích thước share memory nhỏ hơn vùng làm việc mà PostgreSQL đang cố gắng tạo (4011376640 byte trong ví dụ này).
Trong trường hợp này, bạn điều chỉnh lại tham số shared_buffers để nhỏ hơn kernel limit, hoặc sửa kernel limit trên hệ điều hành để tăng kích thước bộ nhớ chia sẻ.
Bạn cũng có thể thấy thông báo lỗi này khi khởi động nhiều instance PostgreSQL trên cùng một máy chủ, nếu tổng dung lượng shared_buffers của chúng được yêu cầu vượt quá kernel limit.
4. Lỗi thường gặp 3: No space left on device
FATAL: could not create semaphores: No space left on device DETAIL: Failed system call was semget(5440126, 17, 03600).
Lỗi này không có nghĩa là ổ cứng của bạn đã hết. Nó có nghĩa là kernel limit về số lượng semaphores trên hệ điều hành nhỏ hơn số lượng mà PostgreSQL muốn tạo. Do đó, bạn có thể khắc phục sự cố bằng cách khởi động máy chủ và giảm số lượng connection có thể kết nối (max_connections), hoặc bạn có thể tăng kernel limit lên.
Nguồn: https://dangxuanduy.com/
Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.
KHOÁ DÀNH CHO NGƯỜI MỚI
KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)
CÁC KHOÁ NÂNG CAO:
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD
CÁC KHOÁ COMBO:
COMBO 1: ADMIN 1 + MULTITENANT 12c
COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD
LỊCH HỌC:
Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE
ĐĂNG KÝ:
https://forms.gle/MtCAoRQFenP886y79
Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.