Thứ tư, 27/07/2016 | 00:00 GMT+7

Cách di chuyển thư mục dữ liệu PostgreSQL đến vị trí mới trên Ubuntu 16.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. Bạn cũng có thể xảy ra tranh chấp I / O 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. 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á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.

Dù bạn sử dụng bộ nhớ cơ bản nào, các bước sau đây có thể giúp bạn di chuyển folder dữ liệu đến một vị trí mới.

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

Để chuẩn bị cho việc 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 dòng bên dưới, 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 đã vào màn hình, hãy chọn folder dữ liệu:

  • SHOW data_directory;
Output
data_directory ------------------------------ /var/lib/postgresql/9.5/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/9.5/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 để thoát.

Để đảm bảo tính toàn vẹn của dữ liệu, ta sẽ tắt PostgreSQL trước khi ta 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 đã thành công, hãy sử dụng lệnh sau:

  • sudo systemctl status postgresql

Bạn có thể xác nhận nó đã tắt nếu dòng cuối cùng của kết quả cho bạn biết server đã dừng:

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

Bây giờ server đã tắt, 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 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.

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. Khi có dấu gạch chéo, rsync sẽ kết xuất nội dung của folder vào điểm mount thay vì chuyển nó vào folder PostgreSQL có chứa:

Ta sẽ bắt đầu rsync từ folder postgresql để bắt chước cấu trúc folder root ở vị trí mới của ta . 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. Thư mục version 9.5 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 PostgreSQL .

  • sudo rsync -av /var/lib/postgresql /mnt/volume-nyc1-01

Khi quá trình sao chép hoàn tất, 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. Bằng cách đặt lại tên cho nó, ta sẽ tránh nhầm lẫn có thể phát sinh từ các file ở cả vị trí mới và cũ:

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

Bây giờ ta đã sẵn sàng chuyển sự chú ý của bạn đến cấu hình.

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

PostgreSQL có một số cách để overrides các giá trị cấu hình. Theo mặc định, data_directory được đặt thành /var/lib/postgresql/9.5/main trong file /etc/postgresql/9.5/main/postgresql.conf . Chỉnh sửa file này để phản ánh folder dữ liệu mới:

  • sudo nano /etc/postgresql/9.5/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 trường hợp của ta , file cập nhật trông giống như kết quả bên dưới:

/etc/postgresql/9.5/main/postgresql.conf
. . . data_directory = '/mnt/volume-nyc1-01/postgresql/9.5/main' . . . 

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

Ta đã sẵn sàng để bắt đầu PostgreSQL.

  • sudo systemctl start postgresql
  • sudo systemctl status postgresql

Để đảm bảo folder dữ liệu mới đang thực sự được sử dụng, hãy khởi động trình theo dõi PostgreSQL.

  • sudo -u postgres psql

Xem lại giá trị cho folder dữ liệu:

  • SHOW data_directory;
Output
data_directory ----------------------------------------- /mnt/volume-nyc1-01/postgresql/9.5/main (1 row)

Đến đây bạn đã khởi động lại PostgreSQL và xác nhận nó đang sử dụng vị trí mới, hãy tận dụng cơ hội đảm bảo rằng database của bạn hoạt động đầy đủ. 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/9.5/main.bak

Khởi động lại PostgreSQL lần cuối đảm bảo rằng nó hoạt động như mong đợi:

  • sudo systemctl restart postgresql
  • sudo systemctl status postgresql

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 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
Cách sử dụng PostgreSQL với Ứng dụng Django của bạn trên CentOS 7
2015-03-25
Cách sử dụng PostgreSQL với ứng dụng Ruby on Rails của bạn trên Ubuntu 14.04
2015-03-18
Cách sử dụng PostgreSQL với ứng dụng Ruby on Rails của bạn trên CentOS 7
2015-03-18
Cách cài đặt và sử dụng PostgreSQL trên Ubuntu 14.04
2014-04-28
Cách cài đặt và sử dụng Zope 2 và PostgreSQL trên Ubuntu 13.10
2014-03-25