Cách backup PostgreSQL database

662
19-01-2021
Cách backup PostgreSQL database

Bằng cách thường xuyên sao lưu cơ sở dữ liệu của bạn hoặc tự động sao lưu bằng tác vụ cron, bạn sẽ có thể nhanh chóng khôi phục hệ thống của mình trong trường hợp cơ sở dữ liệu của bạn bị mất hoặc bị lỗi. May mắn thay, PostgreSQL đã bao gồm sẵn các công cụ để làm cho nhiệm vụ này trở nên đơn giản và dễ quản lý. Bizfly Cloud sẽ hướng dẫn bạn cách backup PostgreSQL database.

Backup thủ công

Cơ sở dữ liệu đơn lẻ

PostgreSQL cung cấp tiện ích pg_dump để đơn giản hóa việc sao lưu một cơ sở dữ liệu. Lệnh này phải được chạy với quyền user có quyền read đối với cơ sở dữ liệu mà bạn định sao lưu.

Truy cập với user postgres:

```

su - postgres

```

Dump nội dung của cơ sở dữ liệu vào một file bằng cách chạy lệnh sau. Thay thế dbname bằng tên của cơ sở dữ liệu sẽ được sao lưu.

```

pg_dump dbname > dbname.bak

```

File kết quả sao lưu, dbname.bak, có thể được chuyển sang một máy chủ khác qua lệnh scp hoặc được lưu trữ cục bộ để sử dụng sau này.

Để chứng minh việc khôi phục dữ liệu bị mất, có thể thử xóa cơ sở dữ liệu mẫu của bạn và tạo cơ sở dữ liệu trống ở vị trí của nó:

```

dropdb dbname

createdb dbname

```

Khôi phục lại cơ sở dữ liệu sử dụng lệnh psql

```

psql test < dbname.bak

```

Một số tùy chọn cho định dạng file backup:

*.bak: định dạng nén nhị phân

*.sql: plaintext

*.tar: tarball

Remote database

Cũng giống như psql cho phép bạn kết nối với máy chủ từ xa, pg_dump có thể được chạy từ client để sao lưu dữ liệu trên máy chủ từ xa. Sử dụng tùy chọn -h để chỉ định địa chỉ IP của remote server của bạn và -p để xác định port mà PostgreSQL đang lắng nghe:

```

pg_dump -h 198.51.100.0 -p 5432 dbname > dbname.bak

```

Tất cả các cơ sở dữ liệu

Vì pg_dump chỉ tạo một bản sao lưu của một cơ sở dữ liệu tại một thời điểm, nó không lưu trữ thông tin về các vai trò cơ sở dữ liệu hoặc cấu hình toàn cụm khác. Để lưu trữ thông tin này và sao lưu đồng thời tất cả cơ sở dữ liệu của bạn, bạn có thể sử dụng pg_dumpall.

Tạo file backup :

```

pg_dumpall > pg_backup.bak

```

Khôi phục toàn bộ các cơ sở dữ liệu từ bản backup:

```

psql -f pg_backup.bak postgres

```

Sao lưu tự động với Crontab

Bạn có thể muốn thiết lập một cronjob để cơ sở dữ liệu của bạn sẽ được sao lưu tự động theo định kỳ. Các bước trong phần này sẽ ví dụ về việc thiết lập một tác vụ cron sẽ chạy pg_dump mỗi tuần một lần.

Truy cập với user postgres:

```

su - postgres

```

Tạo một thư mục để lưu trữ các bản backup tự động:

```

mkdir -p ~/postgres/backups

```

Chỉnh sửa crontab để tạo 1 cronjob mới:

```

crontab -e

```

Thêm dòng sau vào cuối file crontab:

```

0 0 * * 0 pg_dump -U postgres dbname > ~/postgres/backups/dbname.bak

```

Lưu và thoát khỏi trình chỉnh sửa. Cơ sở dữ liệu của bạn sẽ được sao lưu vào 0h Chủ nhật hàng tuần. Để thay đổi thời gian hoặc tần suất của các bản cập nhật, có thể tìm hiểu thêm về crontab.

Theo Bizfly Cloud chia sẻ

BizFly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp, được vận hành bởi VCCorp.

BizFly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.

Độc giả quan tâm đến các giải pháp của BizFly Cloud có thể truy cập tại đây.

DÙNG THỬ MIỄN PHÍ và NHẬN ƯU ĐÃI 3 THÁNG tại: Manage.bizflycloud

SHARE