Hướng dẫn tạo script bật, tắt, khởi động lại cho PostgreSQL trên Ubuntu

Ở bài trước, tôi đã Hướng dẫn biên dịch và cài đặt PostgreSQL 9.2 trên Ubuntu 12.04 LTS. Tuy nhiên, mỗi lẫn khởi động lại server thì PostgreSQL sẽ không tự khởi chạy và chúng ta sẽ phải khởi chạy bằng phương pháp thủ công (gọi lệnh khởi chạy instance). Thêm nữa, việc gọi lệnh khởi chạy cũng rất "lằng nhằng" do chúng ta phải nhớ đường dẫn (path) của tập tin pg_ctl (như hướng dẫn trước thì đường dẫn là /usr/local/pgsql/bin/pg_ctl).

Mục tiêu đề ra của bài này là:

  1. Khởi động Ubuntu Server thì PostgreSQL sẽ tự khởi chạy.
  2. Để khởi động PostgreSQL ta sẽ sử dụng lệnh sudo service postgresql start
  3. Để tắt PostgreSQL ta sẽ sử dụng lệnh sudo service postgresql stop
  4. Để khởi động lại PostgreSQL ta sẽ sử dụng lệnh sudo service postgresql restart

Giả sử:

  • Server của bạn chạy Hệ điều hành Ubuntu Server 12.04 LTS
  • Khi cài PostgreSQL, bạn làm như hướng dẫn trước

thì cách thực hiện mục tiêu của bài này như sau:

Bước 1: Tạo start-script (shell)

Mã nguồn PostgreSQL 9.2.3 đã bao gồm một start-script sẵn dành cho linux nói chung (gồm cả Ubuntu) có trong thư mục contrib/start-scripts/. Bạn chỉ việc copy tập tin này vào thư mục /etc/init.d/ và sửa lại nội dung (đường dẫn tới thư mục cài đặt PostgreSQL nếu bạn cài ở thư mục khác thư mục mặc định; username - nếu bạn không đặt là postges) là xong.

sudo cp contrib/start-scripts/linux /etc/init.d/postgresql

Cho phép quyền thực thi đối với tập tin này

sudo chmod +x /etc/init.d/postgresql

Có thể bạn cần sửa các dòng sau cho phù hợp với thực trạng và nhu cầu của bạn(Số thứ tự dòng chỉ đúng nếu bạn đang dùng bản PostgreSQL 9.2.0 đến bạn hiện hành 9.2.3, ở các bản trước đó tôi chưa có điều kiện kiểm tra):

  • Dòng số 32: Nếu thư mục bạn cài PostgreSQL không phải là /usr/local/pgsql (thư mục mặc định)
  • Dòng số 35: Nếu Data Directory không phải là thư mục /usr/local/pgsql/data như tôi đã hướng dẫn ở bài trước
  • Dòng số 38: Nếu PostgreSQL superuser của bạn không phải là postges
  • Dòng số 41: Nếu bạn muốn thay đổi đường dẫn của tập tin log. Ví dụ: PGLOG="/var/log/postgresql/serverlog.log"

Lúc này bạn đã có thể Khởi Động, Dừng, Khởi Động Lại, Nạp lại thông số, Xem tình trạng PostgreSQL bằng các lệnh sau:

  • Khởi động: sudo /etc/init.d/postgresql start
  • Dừng/Tắt: sudo /etc/init.d/postgresql stop
  • Khởi động lại: sudo /etc/init.d/postgresql restart
  • Nạp lại thông số: sudo /etc/init.d/postgresql reload
  • Xem tình trạng hiện tại của PostgreSQL: sudo /etc/init.d/postgresql status

Bước 2: Tự động khởi chạy PostgreSQL khi khởi động server Ubuntu

Để khởi động PostgreSQL tự động mỗi khi khởi động máy chủ Ubuntu, bạn cần chạy lệnh sau:

sudo update-rc.d postgresql defaults

Bước 3: Tạo biến môi trường cho các tiện ích client của PostgreSQL

Nếu không qua bước này, để tạo cơ sở dữ liệu, bạn phải gọi tiện ích createdb với đường dẫn đầy đủ, ví dụ: /usr/local/pgsql/bin/createdb test_database_name. Để tránh phiền phức vì phải gõ đường dẫn quá dài, ta cần nạp đường dẫn để hệ điều hành có thể gọi chính xác chương trình khi ta gõ lệnh. Cách làm như sau:

Tạo tập tin pg.sh trong thư mục /etc/profile.d để lưu thông tin đường dẫn:

sudo sh -c "echo 'PATH=/usr/local/pgsql/bin:\$PATH' > /etc/profile.d/pg.sh"
sudo sh -c "echo 'export PATH' >> /etc/profile.d/pg.sh"

Tạo run time linker

sudo ldconfig /usr/local/pgsql/lib/

Bước 4: Kiểm tra kết quả và enjoy ^_^

Giờ, hãy khởi động lại máy chủ Ubuntu của bạn và kiểm tra kết quả. Việc điều khiển Bật, Tắt, v.v. lúc này đơn giản hơn nhiều:

  • Khởi động: sudo service postgresql start
  • Dừng/Tắt: sudo service postgresql stop
  • Khởi động lại: sudo service postgresql restart
  • Nạp lại thông số: sudo service postgresql reload
  • Xem tình trạng hiện tại của PostgreSQL: sudo service postgresql status
  • Tạo một cơ sở dữ liệu có tên testdb:
    sudo su - postgres
    createdb testdb

Chúc may mắn!

Mọi bình luận & ý kiến đóng góp để làm cho bài viết này trở nên tốt hơn và hữu ích hơn đều được hoanh nghênh.