Hướng dẫn backup db mysql hàng ngày

Việc sao lưu dữ liệu hàng ngày của 1 ứng dụng web, native app... là quan trọng trong bất kì hệ thống nào. Hôm nay ViCloud sẽ giúp bạn 1 phương thức đơn giản và hiệu quả để backup Mysql lên Dropbox hàng ngày.

Bước 1: đăng kí hoặc đăng nhập tài khoản Dropbox

Phần này ViCloud sẽ không hướng dẫn bạn. Bạn có thể thực hiện trên trang: http://dropbox.com

Bước 2: sau khi đăng nhập vào Dropbox bạn vào theo link https://www.dropbox.com/developers/apps/create để tạo 1 ứng dụng backup MYSQL lên.

Hướng dẫn backup db mysql hàng ngày

Bạn chọn kiểu là Dropbox API, có thể tuỳ chọn ứng dụng này chỉ truy nhập folder của app hoặc toàn bộ folder trên Dropbox của bạn. Sau cùng bạn cần đặt tên cho app này.

Bước 3: Khi tạo xong, Dropbox trả cho bạn 1 đường dẫn vào app bạn mới tạo theo dạng: https://www.dropbox.com/developers/apps/info/id_ứng dụng

Tại trang này, bạn kéo xuống dưới sẽ có mục Generated access token. Click vào Generate ra 1 key mới. Copy lại và chuyển sang thao tác trên centos.

Bước 4: Chúng ta sẽ dùng 1 đoạn bash file tham khảo tại đây:

https://github.com/andreafabrizi/Dropbox-Uploader

cho việc upload file từ centos server lên dropbox

Login vào centos server bằng ssh, lưu ý bạn cần chạy dưới quyền root.

Bước 5: Tải bash file bằng lệnh:

curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh

Thành công, tại thư mục hiện tại sẽ xuất hiện file dropbox_uploader.sh.

Bạn cần set quyền cho file này bằng lệnh: chmod +x dropbox_uploader.sh

Tiếp đó add key có được ở bước 3 vào ứng dụng bằng lệnh: ./dropbox_uploader.sh

* Lưu ý: muốn thay đổi key này. Bạn chỉ cần vào sửa key dropbox bạn dùng vi edit theo lệnh: ~/.dropbox_uploader hoặc mở file dropbox_uploader.sh để biết được file lưu thông số cấu hình này ở đâu

Bước 6: Chúng ta đã hoàn tất thiết lập để upload file bất kì lên Dropbox. Bước tiếp theo ta tạo Cron job để dump sql định kì hàng ngày. Trước hết ta cần tìm hiểu về lệnh dump của mysql.

Cấu trúc: mysqldump -u db_user -p db_name> /path_to_file/file_name.sql

Sau khi gõ lệnh trên, hệ thống hỏi password của mysql, bạn gõ đúng câu lệnh được thực hiện. Tuy nhiên có 1 vấn đề, khi ta dump bằng cron job thì ta ko thể ngồi nhập password được. Rất may Mysql đã hỗ trợ chúng ta extend tiện ích đọc password cho lệnh dump từ 1 file. Để thực hiện việc này ta qua bước 7.

Bước 7: Tại thư mục hiện tại ta tạo 1 file để lưu password của mysql ví dụ: tên file .my.cnf

vi .my.cnf với nội dung [client] user=username db password=password db

Lưu lại, bây giờ lệnh dump của ta sẽ là

mysqldump -u db_user --defaults-file=/path_to_file/.my.cnf -u db_user db_name > /path_to_file/file_name.sql

Để tối ưu về kích thước file sql, ta nén file này lại. Vậy command cuối cùng của chúng ta sẽ là:

mysqldump --defaults-file=path_to_file/.my.cnf -u db_user db_name | gzip > /path_to_file/file_name.gz

Bước 8: thiết lập Cron job chạy lệnh tự động upload file lên Dropbox

Tìm hiểu về cron job bạn có thể tham khảo bài hướng dẫn khác trên ViCloud theo liên kết: http://vicloud.vn/community/huong-dan-su-dung-cron-job-tren-centos-278.html

Có 1 lưu ý là Dropbox hỗ trợ bạn việc versioning phiên bản của 1 file. Tài khoản miễn phí mặc định giữ lại 30 ngày. Điều đó có nghĩa 1 file bạn có thể ghi đè mỗi ngày 1 lần trong 30 ngày, Dropbox vẫn lưu trữ đầy đủ các ngày cho bạn

Hướng dẫn backup db mysql hàng ngày

Do đó, ta chỉ cần lưu 1 file cho 1 tháng (ta sử dụng file name theo tháng) là đủ!

Ta cần thiết lập 2 lệnh để hoàn tất việc backup.

- Lệnh 1 tạo file sql backup đã nén

- Lệnh 2 đẩy file lên dropbox app

Cronjob (gõ lệnh crontab -e để show ra) của chúng ta bây giờ sẽ có 2 dòng

0 2 * * * mysqldump --defaults-file=/path_to_file/.my.cnf -u db_user db_name | gzip > /path_to_file/file_name_`date +\%y\%m`.gz 5 2 * * * /path_to_file/dropbox_uploader.sh upload /path_to_file/file_name_`date +\%y\%m`.gz new_file_name_on_dropbox_`date +\%y\%m`.gz

Giải thích ý nghĩa cấu hình Cron Job:

Job dump db file chạy hàng ngày lúc 02h00 sáng. Để đảm bảo file dump được hoàn tất, ta để Job upload lên Dropbox thực hiện lúc 02h05 phút sáng.

Bạn đang sử dụng VPS Cloud nhưng không được trang bị các trình quản lý trực quan như CPanel, DirectAdmin, Vesta …Vậy làm sao để Backup và Restore MySQL Database trong trường hợp này. Theo dõi bài viết sau nhé.

1. Backup Database:

  • Mở Command Prompt hoặc Terminal trên máy tính của bạn.
  • Chạy lệnh sau để thực hiện backup:

    mysqldump -u username -p database_name > backup_file.sql

Trong đó:

  • username là tên người dùng MySQL.
  • database_name là tên cơ sở dữ liệu mà bạn muốn backup.
  • backup_file.sql là tên tệp tin bạn muốn lưu trữ bản sao lưu vào.

Ví dụ, nếu bạn muốn backup cơ sở dữ liệu có tên “mydatabase” và tên người dùng là “root”, và lưu trữ bản sao lưu vào tệp tin “backup.sql”, lệnh sẽ trông như sau:

mysqldump -u root -p mydatabase > backup.sql

  • Sau khi chạy lệnh, bạn sẽ được yêu cầu nhập mật khẩu người dùng MySQL. Nhập mật khẩu và nhấn Enter.
  • Quá trình backup sẽ bắt đầu và thông tin của cơ sở dữ liệu sẽ được lưu vào tệp tin “backup_file.sql”. Quá trình này có thể mất thời gian tùy thuộc vào kích thước của cơ sở dữ liệu.

2. Restore Database:

  • Mở Command Prompt hoặc Terminal trên máy tính của bạn.
  • Chạy lệnh sau để thực hiện restore:

    mysql -u username -p database_name < backup_file.sql

Trong đó:

  • username là tên người dùng MySQL.
  • database_name là tên cơ sở dữ liệu mà bạn muốn restore.
  • backup_file.sql là tệp tin chứa bản sao lưu cần phục hồi.

Ví dụ, nếu bạn muốn restore cơ sở dữ liệu vào cơ sở dữ liệu có tên “mydatabase” và tên người dùng là “root”, và tệp tin backup có tên “backup.sql”, lệnh sẽ trông như sau:

mysql -u root -p mydatabase < backup.sql

  • Sau khi chạy lệnh, bạn sẽ được yêu cầu nhập mật khẩu người dùng MySQL. Nhập mật khẩu và nhấn Enter.
  • Quá trình restore sẽ bắt đầu và dữ liệu từ tệp tin “backup_file.sql” sẽ được phục hồi vào cơ sở dữ liệu.

Lưu ý: Đảm bảo rằng bạn đã cài đặt MySQL và thiết lập biến môi trường cho nó trước khi thực hiện các bước trên.