Tự động backup database với Supabase và GitHub Actions – Bí quyết bảo mật dữ liệu hiệu quả

06/03/2026 P T P Chung 7 phút đọc 0 bình luận

Tại sao cần tự động backup database?

Database là trái tim của mọi ứng dụng web hiện đại. Một sự cố nhỏ như xóa nhầm dữ liệu, lỗi ứng dụng hay thậm chí là tấn công ransomware có thể khiến toàn bộ dữ liệu biến mất trong tích tắc. Việc backup định kỳ không chỉ giúp phục hồi nhanh chóng mà còn mang lại sự an tâm cho cả đội ngũ phát triển lẫn người dùng.

Tuy nhiên, backup thủ công thường bị quên hoặc thực hiện không đều đặn. Đó là lý do tự động hóa quy trình này trở nên quan trọng. Với Supabase - một nền tảng database mã nguồn mở mạnh mẽ - và GitHub Actions - công cụ CI/CD miễn phí của GitHub, chúng ta hoàn toàn có thể thiết lập một hệ thống backup tự động chỉ trong vài bước đơn giản.

Chuẩn bị trước khi bắt đầu

Để bắt đầu, bạn cần có: - Một dự án Supabase với database đang hoạt động. - Một repository trên GitHub để lưu trữ workflow. - Quyền truy cập admin vào database Supabase.

Việc backup database thường được thực hiện bằng cách export dữ liệu ra file dump, sau đó lưu trữ an toàn. Supabase hỗ trợ export database dưới dạng SQL hoặc backup định dạng native của PostgreSQL, rất tiện lợi cho việc phục hồi sau này.

Tạo workflow tự động trên GitHub Actions

GitHub Actions cho phép chạy các tác vụ tự động dựa trên sự kiện (ví dụ: theo lịch trình). Để backup database tự động, chúng ta sẽ tạo một workflow chạy định kỳ và lưu file backup vào chính repository hoặc một nơi lưu trữ an toàn khác.

Đầu tiên, trong repository của bạn, tạo thư mục .github/workflows/ và thêm file backup.yml. Nội dung cơ bản của file sẽ như sau:

name: Backup Database
on:
  schedule:
    - cron: '0 2   *'  # Chạy hàng ngày lúc 2:00 sáng
jobs:
  backup:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

- name: Setup PostgreSQL client run: sudo apt-get install -y postgresql-client

- name: Create backup env: SUPABASE_URL: ${{ secrets.SUPABASE_URL }} SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.SUPABASE_SERVICE_ROLE_KEY }} run: | pg_dump -h ${{ env.SUPABASE_URL }} -U postgres -F c -b -v -f backup.dump

- name: Upload backup to repository run: | git config --local user.email "[email protected]" git config --local user.name "GitHub Action" git add backup.dump git commit -m "Automated database backup" git push

Trong ví dụ này, workflow sẽ chạy hàng ngày vào lúc 2 giờ sáng. Nó cài đặt PostgreSQL client, thực hiện lệnh pg_dump để export database, rồi commit file backup vào repository.

Bảo mật thông tin nhạy cảm

Việc lưu trữ thông tin kết nối database trong workflow là rủi ro bảo mật. GitHub cung cấp Secrets - nơi lưu trữ an toàn các biến môi trường nhạy cảm. Bạn cần lưu SUPABASE_URLSUPABASE_SERVICE_ROLE_KEY vào repository secrets trước khi chạy workflow.

Quảng cáo

300x250 In-Content Advertisement

Để lấy các giá trị này, vào Dashboard Supabase → Project Settings → API, sao chép Project URLservice_role key. Sau đó vào repository GitHub → Settings → Secrets và Variables → Actions, thêm hai secrets với tên tương ứng.

Lưu trữ backup an toàn hơn

Commit file backup trực tiếp vào repository có thể không phải lựa chọn tốt nhất vì: - Repository có giới hạn về dung lượng. - File backup có thể chứa dữ liệu nhạy cảm. - Việc lưu trữ lâu dài trong Git không hiệu quả.

Một giải pháp tốt hơn là upload file backup lên dịch vụ lưu trữ đám mây như AWS S3, Google Cloud Storage, hoặc Azure Blob Storage. GitHub Actions hỗ trợ nhiều action hỗ trợ upload file lên các dịch vụ này một cách dễ dàng.

Ví dụ, nếu sử dụng AWS S3, bạn có thể thay thế bước "Upload backup to repository" bằng:

- name: Upload backup to S3
  uses: prewk/s3-cp-action@v1
  with:
    aws_key: ${{ secrets.AWS_ACCESS_KEY_ID }}
    aws_secret: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    aws_bucket: your-s3-bucket-name
    source: backup.dump
    destination: backups/

Bạn cũng cần lưu AWS credentials vào repository secrets tương tự như Supabase credentials.

Kiểm tra và giám sát

Sau khi thiết lập xong, hãy kiểm tra xem workflow có chạy đúng không bằng cách vào tab Actions trên repository GitHub. Tại đây, bạn sẽ thấy lịch sử chạy của từng workflow, log chi tiết từng bước và biết được backup có thành công hay không.

Nếu có lỗi xảy ra, GitHub Actions sẽ gửi thông báo qua email (nếu đã bật). Bạn cũng có thể thiết lập webhook để gửi alert đến Slack hoặc Teams, giúp đội ngũ phát triển nắm bắt tình trạng backup nhanh chóng.

Kết luận

Việc tự động backup database với Supabase và GitHub Actions không chỉ giúp tiết kiệm thời gian mà còn đảm bảo dữ liệu luôn được bảo vệ một cách đều đặn và an toàn. Với vài dòng cấu hình đơn giản, bạn đã có thể thiết lập một hệ thống backup hoàn chỉnh, giảm thiểu rủi ro mất mát dữ liệu và tăng tính ổn định cho ứng dụng.

Hãy bắt đầu từ hôm nay - vì một sự cố nhỏ cũng có thể khiến bạn mất hàng giờ, thậm chí hàng ngày để khôi phục dữ liệu. Và nhớ rằng, backup chỉ thực sự có giá trị khi bạn test khôi phục định kỳ.

Quảng cáo

728x90 Bottom Advertisement

Thay thế bằng mã Google AdSense

Chia sẻ bài viết

Facebook Twitter

Bình luận

Chia sẻ ý kiến của bạn về bài viết này

Viết bình luận

Bình luận của bạn sẽ được kiểm duyệt trước khi hiển thị

Chưa có bình luận nào

Hãy là người đầu tiên bình luận về bài viết này!