Thứ sáu, 13/07/2018 | 00:00 GMT+7

Cách di chuyển thư mục dữ liệu PostgreSQL đến vị trí mới trên Ubuntu 18.04

Database phát triển theo thời gian, đôi khi tăng thêm dung lượng trên hệ thống file root của chúng. Khi chúng nằm trên cùng một phân vùng với phần còn lại của hệ điều hành, điều này cũng có thể dẫn đến tranh chấp I / O.

RAID, lưu trữ khối mạng và các thiết bị khác có thể cung cấp khả năng dự phòng và cải thiện khả năng mở rộng, cùng với các tính năng mong muốn khác. Cho dù bạn đang bổ sung thêm dung lượng, đánh giá các cách để tối ưu hóa hiệu suất hoặc tìm cách tận dụng các tính năng lưu trữ khác, hướng dẫn này sẽ hướng dẫn bạn cách di chuyển lại folder dữ liệu của PostgreSQL.

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần :

Trong ví dụ này, ta đang di chuyển dữ liệu sang block storage device được gắn tại /mnt/volume_nyc1_01 . Nếu bạn đang sử dụng Lưu trữ khối trên DigitalOcean,hướng dẫn này có thể giúp bạn mount dung lượng của bạn trước khi tiếp tục với hướng dẫn này.

Tuy nhiên, dù bộ nhớ cơ bản bạn sử dụng là gì, các bước sau có thể giúp bạn di chuyển folder dữ liệu đến vị trí mới.

Bước 1 - Di chuyển Thư mục Dữ liệu PostgreSQL

Trước khi bắt đầu di chuyển folder dữ liệu của PostgreSQL, hãy xác minh vị trí hiện tại bằng cách bắt đầu một phiên PostgreSQL tương tác. Trong lệnh sau, psql là lệnh để vào màn hình tương tác và -u postgres yêu cầu sudo thực thi psql với quyền là user postgres của hệ thống:

  • sudo -u postgres psql

Khi bạn đã mở dấu nhắc PostgreSQL, hãy sử dụng lệnh sau để hiển thị folder dữ liệu hiện tại:

  • SHOW data_directory;
Output
data_directory ------------------------------ /var/lib/postgresql/10/main (1 row)

Đầu ra này xác nhận PostgreSQL được cấu hình để sử dụng folder dữ liệu mặc định, /var/lib/postgresql/10/main , vì vậy đó là folder ta cần di chuyển. Khi bạn đã xác nhận folder trên hệ thống của bạn , hãy nhập \q và nhấn ENTER để đóng dấu nhắc PostgreSQL.

Để đảm bảo tính toàn vẹn của dữ liệu, hãy dừng PostgreSQL trước khi bạn thực sự thay đổi folder dữ liệu:

  • sudo systemctl stop postgresql

systemctl không hiển thị kết quả của tất cả các lệnh quản lý dịch vụ. Để xác minh bạn đã dừng dịch vụ thành công, hãy sử dụng lệnh sau:

  • sudo systemctl status postgresql

Dòng cuối cùng của kết quả sẽ cho bạn biết rằng PostgreSQL đã bị dừng:

Output
. . . Jul 12 15:22:44 ubuntu-512mb-nyc1-01 systemd[1]: Stopped PostgreSQL RDBMS.

Bây giờ server PostgreSQL đã ngừng hoạt động, ta sẽ sao chép folder database hiện có sang vị trí mới bằng rsync . Sử dụng cờ -a bảo toàn các quyền và các thuộc tính folder khác, trong khi -v cung cấp kết quả dài dòng để bạn có thể theo dõi tiến trình. Ta sẽ bắt đầu rsync từ folder postgresql để bắt chước cấu trúc folder root ở vị trí mới. Bằng cách tạo folder postgresql đó trong folder mount-point và giữ quyền sở hữu bởi user PostgreSQL, ta có thể tránh các vấn đề về quyền cho các bản nâng cấp trong tương lai.

Lưu ý: Hãy chắc chắn rằng không có dấu gạch chéo trên folder , có thể được thêm vào nếu bạn sử dụng tính năng hoàn thành tab. Nếu bạn bao gồm một dấu gạch chéo ở cuối, rsync sẽ kết xuất nội dung của folder vào điểm mount thay vì sao chép qua chính folder đó.

Thư mục version , 10 , không hoàn toàn cần thiết vì ta đã xác định vị trí rõ ràng trong file postgresql.conf , nhưng việc tuân theo quy ước dự án chắc chắn sẽ không ảnh hưởng gì, đặc biệt nếu trong tương lai có nhu cầu chạy nhiều version của PostgreSQL:

  • sudo rsync -av /var/lib/postgresql /mnt/volume_nyc1_01

Sau khi sao chép xong, ta sẽ đổi tên folder hiện tại bằng phần mở rộng .bak và giữ nó cho đến khi ta xác nhận việc di chuyển thành công. Điều này sẽ giúp tránh nhầm lẫn có thể phát sinh khi có các folder có tên giống nhau ở cả vị trí mới và cũ:

  • sudo mv /var/lib/postgresql/10/main /var/lib/postgresql/10/main.bak

Bây giờ ta đã sẵn sàng cấu hình PostgreSQL để truy cập folder dữ liệu ở vị trí mới của nó.

Bước 2 - Trỏ đến Vị trí Dữ liệu Mới

Theo mặc định, data_directory được đặt thành /var/lib/postgresql/10/main trong file /etc/postgresql/10/main/postgresql.conf . Chỉnh sửa file này để phản ánh folder dữ liệu mới:

  • sudo nano /etc/postgresql/10/main/postgresql.conf

Tìm dòng bắt đầu bằng data_directory và thay đổi đường dẫn theo sau để phản ánh vị trí mới. Trong ngữ cảnh của hướng dẫn này, chỉ thị được cập nhật sẽ giống như sau:

/etc/postgresql/10/main/postgresql.conf
. . . data_directory = '/mnt/volume_nyc1_01/postgresql/10/main' . . . 

Lưu file bằng cách nhấn CTRL + X , Y , sau đó ENTER . Đây là tất cả những gì bạn cần làm để cấu hình PostgreSQL sử dụng vị trí folder dữ liệu mới. Tất cả những gì còn lại tại thời điểm này là khởi động lại dịch vụ PostgreSQL và kiểm tra xem nó có thực sự trỏ đến đúng folder dữ liệu hay không.

Bước 3 - Khởi động lại PostgreSQL

Sau khi thay đổi chỉ thị data-directory mục data-directory trong file postgresql.conf , hãy tiếp tục và khởi động server PostgreSQL bằng systemctl :

  • sudo systemctl start postgresql

Để xác nhận server PostgreSQL đã khởi động thành công, hãy kiểm tra lại trạng thái của nó bằng cách sử dụng systemctl :

  • sudo systemctl status postgresql

Nếu dịch vụ bắt đầu đúng , bạn sẽ thấy dòng sau ở cuối kết quả của lệnh này:

Output
. . . Jul 12 15:45:01 ubuntu-512mb-nyc1-01[1]: Started PostgreSQL RDBMS. . . .

Cuối cùng, đảm bảo rằng folder dữ liệu mới đang thực sự được sử dụng, hãy mở dấu nhắc lệnh PostgreSQL.

  • sudo -u postgres psql

Kiểm tra lại giá trị cho folder dữ liệu:

  • SHOW data_directory;
Output
data_directory ----------------------------------------- /mnt/volume_nyc1_01/postgresql/10/main (1 row)

Điều này xác nhận PostgreSQL đang sử dụng vị trí folder dữ liệu mới. Sau đây, hãy dành một chút thời gian đảm bảo rằng bạn có thể truy cập database của bạn cũng như tương tác với dữ liệu bên trong. Khi bạn đã xác minh tính toàn vẹn của bất kỳ dữ liệu hiện có nào, bạn có thể xóa folder dữ liệu backup :

  • sudo rm -Rf /var/lib/postgresql/10/main.bak

Như vậy, bạn đã di chuyển thành công folder dữ liệu PostgreSQL của bạn sang một vị trí mới.

Kết luận :

Nếu bạn đã theo dõi, database của bạn sẽ chạy với folder dữ liệu của nó ở vị trí mới và bạn đã hoàn thành một bước quan trọng để có thể mở rộng bộ nhớ của bạn . Bạn cũng có thể cần xem qua 5 Cài đặt Server Chung cho Ứng dụng Web của Bạn để biết ý tưởng về cách tạo cơ sở hạ tầng server để giúp bạn mở rộng và tối ưu hóa các ứng dụng web.


Tags:

Các tin liên quan

Cách cài đặt và sử dụng PostgreSQL trên Ubuntu 18.04
2018-05-04
Cách sử dụng tìm kiếm toàn văn bản trong PostgreSQL trên Ubuntu 16.04
2017-06-15
Cách bảo mật PostgreSQL chống lại các cuộc tấn công tự động
2017-01-24
Cách sử dụng Postgresql với Ứng dụng Django của bạn trên Debian 8
2016-12-22
Cách di chuyển thư mục dữ liệu PostgreSQL đến vị trí mới trên Ubuntu 16.04
2016-07-27
Cách sử dụng PostgreSQL với Ứng dụng Django của bạn trên Ubuntu 16.04
2016-05-18
Cách cài đặt và sử dụng PostgreSQL trên Ubuntu 16.04
2016-05-04
Cách backup, khôi phục và di chuyển database PostgreSQL với Barman trên CentOS 7
2016-01-20
Cài đặt postgresql 9.4 trên Debian 8
2015-06-11
Cách sử dụng PostgreSQL với Ứng dụng Django của bạn trên Ubuntu 14.04
2015-03-25