Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Cách Backup và Restore PostgreSQL Database trên Linux

Trong bài này mình sẽ hướng dẫn cách backup và restore PostgreSQL Database trên VPS / Server Linux. Đây là hai thao tác cần thiết khi bạn quản trị dữ liệu của website.

Mọi thao tác mà mình hướng dẫn dưới đây đều thông qua command line, vì vậy bạn phải có kiến thức về quản trị VPS, cũng như biết cách đăng nhập vào VPS. Bạn có thể tham khảo một số bài viết dưới đây.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Ok, ta bắt đầu bằng thao tác backup trước nhé.

1. Cách Backup PostgreSQL Database

PostgreSQL cung cấp công cụ pg_dump để giúp bạn backup database. Nó tạo ra một file database ở định dạng SQL nên dễ dàng khôi phục bằng các công cụ restore sql như PHPMyAdmin.

Backup thành file txt thuần SQL

Để backup PostgreSQL Database thì trước tiên hãy đăng nhập bằng tài khoản có quyền truy cập server, sau đó chuyển sang dùng tài khoản Postgres và chạy lệnh pg_dump như sau (thay thế freetutsdb bằng tên của cơ sở dữ liệu bạn muốn backup).

$ pg_dump freetutsdb > freetutsdb.sql

Kết quả backup là một file sql chứa những câu lệnh T-SQL.

Backup thành file tùy chỉnh

Lệnh pg_dump cho phép bạn tùy chọn kiểu định dạng cho file database backup.

$ pg_dump -F c freetutsdb > freetutsdb.dump
OR
$ pg_dump -F t freetutsdb > freetutsdb.tar

Tùy chọn -F dùng để khai báo sử dụng tùy chọn định dạng trả về, c là file sẽ lưu trữ ở dạng tùy theo ý bạn, t là lưu trữ ở dạng tar. Tất cả các định dạng này đều có thể sử dụng để phục hồi với lệnh pg_restore.

Để tùy chỉnh định dạng file backup ở dạng thư mục thì bạn thêm cờ -f.

$ pg_dump -F d freetutsdb -f tecmintdumpdir

Backup tất cả database

Để backup tất cả PostgreSQL databases thì dùng lệnh pg_dumpall.

$ pg_dumpall > all_pg_dbs.sql

Backup database lớn

Nếu database của bạn cực lớn thì nên backup kết hợp với công cụ nén gzip hoặc một công cụ nén nào đó mà bạn thích. Dưới đây là ví dụ mình sử dụng công cụ gzip.

$ pg_dump freetutsdb | gzip > freetutsdb.gz

2. Cách Restore PostgreSQL Database

Để restore PostgreSQL Database thì bạn có thể sử dụng lệnh psql hoặc pg_restore.

  • Lệnh psql được sử dụng để khôi phục các file text được tạo bởi pg_dump, tức là file backup SQL thuần.
  • Lệnh pg_restore được sử dụng để khôi phục cơ sở dữ liệu PostgreSQL do pg_dump tạo ra ở định dạng tùy chỉnh.

Dưới đây là một ví dụ về cách restore file văn bản thuần túy:

$ psql freetutsdb < freetutsdb.sql

Còn đối với định dạng tùy chỉnh thì ta sử dụng lệnh pg_restore.

$ pg_restore -d freetutsdb freetutsdb.dump
OR
$ pg_restore -d freetutsdb freetutsdb.tar
OR
$ pg_restore -d freetutsdb tecmintdumpdir

3. Backup bằng cách remote vào PostgreSQL Database

pg_dump là một công cụ backup chạy ở client, và nó có hỗ trợ cho việc backup từ xa thông qua remote địa chỉ IP. Xem ví dụ dưới đây.

$ pg_dump -U tecmint -h 10.10.20.10 -p 5432 freetutsdb > freetutsdb.sql
  • Tham số -h chỉ định địa chỉ của máy chủ
  • Tham số -p chỉ định port kết nối
  • Tham số -U chỉ định tên user quản trị database

Bạn phải đảm bảo rằng người dùng remote có đủ các quyền để truy cập vào database đó, nếu không bạn sẽ nhận được lỗi như sau:

database connection error png

Ngoài ra, bạn cũng có thể dumb một database từ máy chủ này sang máy chủ khác bằng cách sử dụng cú pháp sau.

$ pg_dump -U tecmint -h 10.10.20.10 freetutsdb | pqsl -U tecmint -h 10.10.20.30 freetutsdb

Giải thích các tham số tương tự như trên.

4. Tự động backup PostgreSQL Database bằng Cron Job

Cron job là công cụ giúp thiết lập hẹn giờ chạy một chức năng nào đó.

Đầu tiên bạn cần tạo một thư mục backup.

$ mkdir -p /srv/backups/databases

Tiếp theo, chạy lệnh dưới đây để bắt đầu tạo một cron job.

$ crontab -e

Tiếp theo chạy lệnh dưới đây để tạo một lịch trình backup vào lúc 0h sáng mỗi ngày.

0 0 * * *  pg_dump  -U postgres freetutsdb > /srv/backups/postgres/freetutsdb.sql

Cuối cùng lưu file và Exit.

Vậy là xong, qua bài này bạn đã biết cách tạo backup và restore PostgreSQL Database trên Linux Server rồi đấy. Chúc bạn thành công.

Cùng chuyên mục:

Cách dùng lệnh Users trong Linux để xem user đang online

Cách dùng lệnh Users trong Linux để xem user đang online

Nếu bạn đang là quản trị viên thì việc quản lý thông tin / xem…

Cách sử dụng lệnh Wall trong Linux

Cách sử dụng lệnh Wall trong Linux

Wall là một công cụ dòng lệnh giúp hiển thị thông báo đến tất cả…

Cách dùng lệnh Whereis trong Linux

Cách dùng lệnh Whereis trong Linux

Whereis là một tiện ích dòng lệnh command line, nó cho phép bạn tìm ..

Cách sử dụng lệnh Which trong Linux

Cách sử dụng lệnh Which trong Linux

Linux dùng lệnh which để xác định vị trí file thực thi của lệnh mà…

Cách sử dụng lệnh whoami trong Linux

Cách sử dụng lệnh whoami trong Linux

Giống như tên gọi của nó, lệnh whoami in tên người dùng đang chạy ...

Cách dùng lệnh zcat trong Linux

Cách dùng lệnh zcat trong Linux

Mặc dù tính năng nén file rất hữu ích vì nó giúp ta tiết kiệm…

Hiểu rõ hơn về chmod 777 trong Linux

Hiểu rõ hơn về chmod 777 trong Linux

Bạn đang xây dựng một website và sử dụng tính năng upload ...

Cách sử dụng lệnh tail trong Linux

Cách sử dụng lệnh tail trong Linux

Mặc định thì lệnh tail sẽ hiển thị 10 dòng cuối cùng của file, thông…

Cách sử dụng lệnh Head trong Linux

Cách sử dụng lệnh Head trong Linux

Trong quá trình quản trị dữ liệu trên Linux đôi khi bạn muốn xem nhanh…

Cách sử dụng lệnh Whatis trong Linux

Cách sử dụng lệnh Whatis trong Linux

Trong bài này chúng ta sẽ tìm hiểu lệnh whatis trong ...

Cách sử dụng lệnh kill trong Linux

Cách sử dụng lệnh kill trong Linux

Linux là một hệ điều hành rất nhanh nhưng không phải lúc nào nó không…

Cách dùng lệnh who trong Linux

Cách dùng lệnh who trong Linux

Who là một công cụ dòng lệnh command-line, được ...

Cách dùng lệnh basename trong Linux

Cách dùng lệnh basename trong Linux

basename là một tiện ích dòng lệnh (command line) dùng để lấy ...

Cách sử dụng lệnh gzip trên Linux

Cách sử dụng lệnh gzip trên Linux

Gzip là một trong những thuật toán nén file phổ biến nhất, nó cho phép…

Cách dùng lệnh wait trong Linux

Cách dùng lệnh wait trong Linux

Wait là lệnh dùng để đợi một thời gian cho tới khi công việc nào…

Cách dùng lệnh ping trong Linux

Cách dùng lệnh ping trong Linux

Lệnh ping là một trong những công cụ được sử dụng nhiều nhất để khắc…

Cách dùng lệnh sleep trong Linux

Cách dùng lệnh sleep trong Linux

sleep là một tiện ích command line cho phép lập trình viên ..

Các ví dụ học Bash Script trong Linux cơ bản nhất

Các ví dụ học Bash Script trong Linux cơ bản nhất

Bash Script đuọc xem là mã code lập trình trên Linux ...

Vòng lặp until trong Shell Script

Vòng lặp until trong Shell Script

Vòng lặp while trong Shell Script

Vòng lặp while trong Shell Script

Trong Linux script, vòng lặp while được sử dụng trong ...

Top