PostgreSQL là một trong những hệ thống quản lý cơ sở dữ liệu phổ biến nhất hiện nay. Bài viết này của Vietnix sẽ hướng dẫn chi tiết cách đổi vị trí thư mục PostgreSQL trên Ubuntu 20.04, bởi vì các cơ sở dữ liệu mà chúng ta quản lý có thể tăng rất nhanh về mặt kích thước theo thời gian. Đôi khi ta cần tăng thêm dung lượng, bổ sung tính năng, thử nghiệm các phương pháp tối ưu, giảm thiểu tranh chấp các thao tác I/O,… khi đó chuyển đổi vị trí của cơ sở dữ liệu là một việc làm cần thiết.
Yêu cầu để chuẩn bị cách đổi vị trí thư mục PostgreSQL trên Ubuntu 20.04
Trước tiên bạn đọc cần có server chạy Ubuntu 20.04, user non-root với quyền sudo. Đồng thời PostgreSQL cũng cần được cài đặt sẵn trên server.
Trong hướng dẫn này, Vietnix sẽ chuyển dữ liệu đến một thiết bị lưu trữ block ở vị trí /mnt/volume_nyc01. Các bộ nhớ hay thiết bị lưu trữ khác cũng có thể thực hiện các bước tương tự.
Vietnix hiện đang cung cấp các gói dịch vụ VPS tốc độ cao với chi phí hợp lý, cấu hình đa dạng, cho phép bạn dễ dàng chạy hệ điều hành Ubuntu và cài đặt PostgreSQL mà không giới hạn quyền. Hãy liên hệ với đội ngũ Vietnix để được tư vấn lựa chọn gói dịch vụ phù hợp cho nhu cầu của bạn.
Cách đổi vị trí thư mục PostgreSQL trên Ubuntu
Bước 1: Chuyển thư mục dữ liệu của PostgreSQL
Trước khi bắt đầu, hãy khởi động một phiên PostgreSQL để tương tác bằng lệnh postgres psql với quyền sudo:
sudo -u postgres psql
Sau đó dùng lệnh sau để kiểm tra vị trí thư mục dữ liệu:
SHOW data_directory;
Output:
Output
data_directory
-----------------------------
/var/lib/postgresql/12/main
(1 row)
Từ đó ta có thể thấy PostgreSQL được cấu hình sử dụng thư mục dữ liệu mặc định (/var/lib/postgresql/12/main), đây cũng chính là thư mục mà ta cần di chuyển. Bây giờ đóng cửa sổ prompt lại bằng lệnh \q:
\q
Dừng dịch vụ PostgreSQL trước khi thực hiện bất kỳ thay đổi nào trên thư mục dữ liệu để đảm bảo dữ liệu không bị ảnh hưởng:
sudo systemctl stop postgresql
Để kiểm tra xem dịch vụ đã được dừng hẳn chưa, chạy lệnh sau:
sudo systemctl status postgresql
Nếu output hiển thị trạng thái của PostgreSQL là inactive (dead) thì ta có thể tiếp tục đến với các bước tiếp theo:
Output
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor pr>
Active: inactive (dead) since Thu 2022-06-30 16:55:53 UTC; 12s ago
Process: 13058 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 13058 (code=exited, status=0/SUCCESS)
Bây giờ, copy thư mục database hiện tại sang vị trí mới bằng lệnh rsync với flag -a để bảo toàn các quyền và thuộc tính của thư mục, flag -v cho phép hiển thị tiến độ khi thực hiện lệnh. Ta sẽ chạy lệnh rsync từ thư mục postgresql để vị trí mới có cấu trúc thư mục giống với thư mục gốc. Khi đó, các quyền sở hữu của user sẽ được giữ lại, giúp tránh rắc rối khi truy cập sau này.
Lưu ý: Tên thư mục không được có dấu gạch chéo (/) ở cuối, nếu không lệnh rsync sẽ thực hiện thao tác trên mọi nội dung có trong thư mục, thay vì copy chính thư mục đó.
Bên cạnh đó, ta không cần phải chỉ định phiên bản thư mục (12) vì nó đã được định nghĩa trong file postgresql.conf.
sudo rsync -av /var/lib/postgresql /mnt/volume_nyc1_01
Sau khi copy xong, đổi tên thư mục hiện tại thành định dạng .bak, giữ lại cho đến khi quá trình di chuyển thư mục PostgreSQL trên Ubuntu 20.04 hoàn tất.
Chạy lệnh sau để di chuyển:
sudo mv /var/lib/postgresql/12/main /var/lib/postgresql/12/main.bak
Sau khi hoàn tất, ta sẽ cấu hình để cho phép PostgreSQL truy cập thư mục dữ liệu ở vị trí mới.
Bước 2: Trỏ đến vị trí thư mục mới
Theo mặc định, directive cấu hình data_directory được thiết lập trong /var/lib/postgresql/12/main, của file /etc/postgresql/12/main/postgresql.conf. Bây giờ hãy mở file để edit:
sudo nano /etc/postgresql/12/main/postgresql.conf
Tìm dòng bắt đầu bằng data_directory rồi đổi đường dẫn đến vị trí mới:
. . .
data_directory = '/mnt/volume_nyc1_01/postgresql/12/main'
. . .
Sau đó lưu rồi đóng file lại để hoàn tất. Ở bước cuối cùng, ta sẽ thử khởi động lại dịch vụ PostgreSQL để kiểm tra kết quả.
Bước 3: Restart PostgreSQL
Khởi động lại PostgreSQL bằng lệnh systemctl:
sudo systemctl start postgresql
Kiểm tra trạng thái để xem PostgreSQL đang chạy chưa:
sudo systemctl status postgresql
Nếu output hiển thị active (exited) thì dịch vụ đã khởi động thành công:
Output● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor pr>
Active: <mark>active (exited) since Thu 2022-06-30 16:58:17 UTC; 2s ago</mark>
Process: 13143 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 13143 (code=exited, status=0/SUCCESS)
Mở command prompt của PostgreSQL:
sudo -u postgres psql
Kiểm tra giá trị của thư mục:
SHOW data_directory;
Output:
Output
data_directory
-----------------------------------------
/mnt/volume_nyc1_01/postgresql/12/main
(1 row)
Với output như trên, có thể thấy rằng thư mục dữ liệu đã được chuyển sang vị trí mới thành công. Cuối cùng, hãy đảm bảo rằng ta đã có quyền truy cập và tương tác với database. Sau khi xác nhận quá trình không có lỗi gì, ta có thể xóa thư mục backup đã tạo trước đó:
sudo rm -Rf /var/lib/postgresql/12/main.bak
Ngoài ra, bạn cũng có thể tìm hiểu cách cài đặt R trên Ubuntu 20.04, ngôn ngữ lập trình và môi trường tính toán thống kê phổ biến, trên hệ điều hành Ubuntu 20.04. Cũng như cách sử dụng PostgreSQL với ứng dụng Django trên Ubuntu 20.04 để có thể bổ sung thêm tùy chọn kiến thức cho bản thân.
Lời kết
Hy vọng rằng bài viết về cách đổi vị trí thư mục PostgreSQL trên Ubuntu 20.04 đã cung cấp cho bạn những hướng dẫn chi tiết và dễ hiểu để thực hiện thay đổi này một cách thành công. Việc tối ưu hóa vị trí lưu trữ dữ liệu của PostgreSQL có thể giúp nâng cao hiệu suất của hệ thống cơ sở dữ liệu của bạn trên Ubuntu 20.04.. Nếu có bất kỳ thắc mắc nào khác, hãy để lại ở phần comment bên dưới để được Vietnix hỗ trợ nhanh nhất nhé.