Hướng dẫn back-up dữ liệu bằng Python

437
hướng dẫn backup dữ liệu

Việc backup dữ liệu là vô cùng quan trọng, và chính vì thế bài viết của mình hôm nay sẽ hướng dẫn backup dữ liệu bằng python cho các bạn.

Nào bắt đầu thôi!

Giới thiệu

Bạn là lập trình viên? hoặc có thể là ai đó khác nhưng có động tới database, thì điều đầu tiên sợ nhất là một ngày nọ bạn nghịch dại và xóa luôn database. Dẫn đến việc sếp mắng, công ty đuổi việc, đồng nghiệp cùng team bị vạ lây.

Bài này của mình sẽ hướng dẫn các bạn code ra một ‘tool’, nói là ‘tool’ nghe khá to tát. Thực ra là hướng dẫn viết mấy dòng code để backup database (phạm vi bài viết chỉ hướng dẫn backup MYSQL các bạn nhé) cho thuận tiện.

Demo

Bắt đầu

Thì với mình là một người code Python nên trong bài viết này mình xin được phép sẽ dùng Python để múa rìu qua mắt thợ.

  StackOverflow công bố báo cáo khảo sát Lập trình viên 2019: Python là ngôn ngữ phát triển nhanh nhất
  Tài liệu làm chủ Python trong vòng 4 tuần (Phần 1)
  • Chuẩn bị: Những thứ chuẩn bị ở đây anh/em code python chắc chắn biết cài rồi nên mình chỉ liệt kê mà không hưóng dẫn nữa nhé. Xem thêm về Python nếu bạn nào chưa biết ở đây.
    • Python 3.6
    • Cài đặt thư viện fbchat và requests:

    • Tạo file main.py: Đây là file mình sẽ code chương trình chính.
    • Tạo file backup.py: Đây là file viết code về phần backup database.
    • Tạo file libs.py: Đây là file mình sẽ code mình code cái gì cần râu ria cho project, ví dụ ở dây mình code phần gửi mail.
    • Tạo file .env: Đây là file đặt các biến môi trường.

Triển khai code

  • Nội dung file .env

  • Code backup.py

  • Code libs.py

  • Code main.py

Giải thích code

  • File .env là file cấu hình các biến môi trường. Có một số cái các bạn cầu chú ý:
    • FROM_MAIL: Là mail các bạn dùng để gửi đi.
    • MAIL_PASSWORD: Là mật khẩu mail gửi đi. Mình dùng gmail nên cần phải vào trang này để tạo mật khẩu ứng dụng https://support.google.com/accounts/answer/185833?hl=vi
    • MAIL_RECEIVED: Mail nhận file backup
    • DB_HOST: Tên của host database cần connect tới để backup.
    • DB_USER: Username để connect tới database.
    • DB_PASSWORD: Mật khẩu để connect database.
    • DB_BACKUP_NAME: Danh sách database bạn cần backup, giữa các database ngăn cách nhau bằng dấu ,. Nếu để trống thì sẽ backup toàn bộ database nhé.
  • File backup.py cần chú ý:
    • Biến dbs_systems là danh sách mấy cái db của mysql sinh ra nên không cần quan tâm mình bỏ vào để loại nó ra trong quá trình backup.
    • Biến list_bk mình dùng để lưu lại danh sách database đã được backup thôi.
    • Biến list_db_name là danh sách database muốn backup.
    • Logic của nó đơn giản là: Connect tới host chứa database, xong lấy hết database có trong đó bỏ vào biết results xong chạy 1 vòng for để duyệt được hết results, mỗi lần duyệt thì check xem tên của database đang duyệt tới đó có nằm trong danh sách mà đống tên db_name mà mình muốn lấy không? nếu có thì nhảy vào backup từng cái một. Nếu không thì backup toàn bộ database. Cuối cùng là trả về thời gian backup và danh sách đường dẫn file đã backup.
  • File libs.py cần chú ý:
    • Nó là cái gửi mail cơ bản trong python thôi nên là cũng không có gì chú ý mấy. Trừ việc biến attachs là danh sách đường dẫn của file backup thôi.
  • File main.py cần chú ý:
    • File này cũng không cần chú ý nhiều, nó chỉ là gọi 2 file kia ra và dùng hàm trong đó thôi.

Chạy code

Bây giờ bạn chỉ việc điền hết cấu hình vào file .env và chạy:

Kết quả

  • Source code: https://github.com/nguyenmanh1997/backup-database-python
  • Sau khi làm các bước như của mình viết ở trên thì chúng ta đã có một mớ hộn độn code dùng để backup database kiểu xịn sò.
  • Các bạn có thể viết cấu hình cron job cho nó chạy mỗi ngày 1 lần backup database.

Chúc các bạn thành công!

TopDev via viblo

  Tuyệt kỹ tạo và quản lý database tốt các trang social network
  "Làm PM, theo anh không cần biết về code, nhưng phải hiểu về SQL, database, những khái niệm cơ bản của code"