Thứ Bảy, 29 tháng 7, 2023

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.

  • Cách dùng phần mềm PuTTY để quản lý VPS
  • Hướng dẫn truy cập vào VPS

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

Mục lục

  • 1. Cách Backup PostgreSQL Database
    • Backup thành file txt thuần SQL
    • Backup thành file tùy chỉnh
    • Backup tất cả database
    • Backup database lớn
  • 2. Cách Restore PostgreSQL Database
  • 3. Backup bằng cách remote vào PostgreSQL Database
  • 4. Tự động backup PostgreSQL Database bằng Cron Job

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.

Bài viết này được đăng tại tranvanbinh.vn

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).

1
$ 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.

1
2
3
$ 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.

1
$ 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.

1
$ 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.

1
$ 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:

1
$ 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.

1
2
3
4
5
$ 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.

1
$ 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.

1
$ 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.

1
$ mkdir -p /srv/backups/databases

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

1
$ 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.

1
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.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master