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.

Đọc thêm  Khởi động PostgreSQL server

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:

Đọc thêm  Cấu hình tham số trong PostgreSQL

 

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ẻ.

Đọc thêm  Cấu hình tham số trong PostgreSQL

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.

Đọc thêm  Các tham số cấu hình Memory trong PostgreSQL

 

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.

Đọc thêm  Semaphore trong Linux là gì

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 2: ADMIN 1 + DATA GUARD

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é.

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x