khoi-dong-postgres
Đọc thêm  Database Cluster trong PostgreSQL là gì

Trước khi bất kỳ ai có thể truy cập database, bạn phải khởi động nó lên trước đã. Ở trong PostgreSQL, lệnh gốc để khởi động PostgreSQL là postgres

Trên thực tế, nếu bạn đang sử dụng phiên bản PostgreSQL đã đóng gói sẵn (cài bằng yum, rpm hoặc apt-get) nó đã bao gồm các câu lệnh để start database instance. Sử dụng các câu lệnh này sẽ ngắn gọn và nhàn hơn nhiều so với việc tự tìm các option của lệnh postgres.

Đọc thêm  Hướng dẫn cài đặt PostgreSQL trên CentOS 7

Tuy nhiên, nếu bạn muốn tìm hiểu sâu hơn về bản chất mà chương trình PostgreSQL hoạt động, bạn có thể tìm cách khởi động PostgreSQL theo cách thủ công, tức là gọi trực tiếp lệnh postgres, chỉ định vị trí của thư mục dữ liệu với tùy chọn -D.

postgres -D /usr/local/pgsql/data

Nếu không có option -D, PostgreSQL sẽ cố gắng sử dụng thư mục được chỉ định bởi biến môi trường PGDATA. Nếu biến đó không được gán giá trị, câu lệnh sẽ không thành công.

Câu lệnh này sẽ chạy ở chế độ foreground. Tức là nó sẽ cứ đứng ở đó mãi mà không thoát ra để bạn chạy câu lệnh tiếp theo, nếu bạn thoát ra bằng tổ hợp phím Ctrl +C thì PostgreSQL cũng shutdown luôn. .

Thông thường, tốt hơn là start postgres ở chế độ background. Chúng ta sử dụng lệnh sau:

postgres -D /usr/local/pgsql/data >logfile 2>&1 &

Điều quan trọng là phải lưu trữ thông tin log của process postgres ở đâu đó. Ở ví dụ trên, tôi đã sử dụng mệnh đề >logfile 2>&1 để thực hiện việc đó. Nó sẽ giúp ích cho mục đích theo dõi và chẩn đoán các vấn đề.

Câu lệnh postgres cũng có một số option khác, khá là phức tạp. Do đó, các câu lệnh đơn giản hơn, như pg_ctl, được cung cấp để đơn giản hóa một số tác vụ. Ví dụ

pg_ctl start -l logfile

hoặc bạn cũng có thể sử dụng systemctl để startup PostgreSQL như một service của hệ điều hành

systemctl start postgresql-13

Tên service postgresql-13 có thể thay đổi tùy thuộc vào phiên bản của PostgreSQL.

Để tìm tên service chính xác của PostgreSQL bạn sử dụng lệnh sau:

systemctl list-units --type=service --all | grep postgres

Kết quả như sau:

postgresql-13.service                                 loaded    inactive dead    PostgreSQL 13 database server

Sau khi chaỵ các lệnh này, bản chất nó cũng sẽ gọi đến lệnh postgres thôi. Bạn có thể kiểm chứng điều này bằng lệnh ps -ef để xem

 ps -ef | grep postgres

root      5790  5777  0 11:34 pts/0    00:00:00 su - postgres
postgres  6350     1  0 Apr29 ?        00:00:41 /usr/lib/postgresql/13/bin/postgres -D /var/lib/postgresql/13/main -c config_file=/etc/postgresql/13/main/postgresql.conf

Bạn có thấy dòng này không

postgres 6350 1 0 Apr29 ? 00:00:41 /usr/lib/postgresql/13/bin/postgres -D /var/lib/postgresql/13/main -c config_file=/etc/postgresql/13/main/postgresql.conf

Đó chính là câu lệnh gốc với các option đó

Nguồn: https://dangxuanduy.com/

Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

    Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
    5 1 vote
    Article Rating
    Subscribe
    Notify of
    guest
    0 Comments
    Inline Feedbacks
    View all comments