Tự động sao cơ sở dữ liệu với Sypex Dumper 2

0
586
(Last Updated On: Th10 13, 2018)

Thật sự đối với các Webmaster, việc backup cơ sở dữ liệu là công việc cực kỳ quan trọng. Bởi nếu như có sự cố xảy ra ở mức độ vừa và nhẹ, các tập tin media như hình ảnh, video đôi khi ít bị ảnh hưởng. Nhưng nếu cơ sở dữ liệu gặp sự cố thì hậu quả vô cùng khôn lường. Một Website trung bình thì cơ sở dữ liệu cũng không chiếm quá nhiều dung lượng từ vài trăm MB cho đến vài GB cơ sở dữ liệu là cùng. Tuy nhiên không thể coi thường mà cần phải đặt lên một trong những thứ cần được bảo vệ và sao lưu hàng đầu.

Chính vì lẽ đó nên ngày hôm nay mình xin viết bài viết này để hướng dẫn các bạn có thể sao lưu dữ liệu thường xuyên hơn – do đó sẽ an toàn hơn nhờ có sẵn các bản sao lưu sẵn sàng để các bạn có thể quay về thời điểm gần nhất trước khi xảy ra sự cố do tấn công hoặc rủi ro của máy chủ cũng như cơ sở hạ tầng.

Có hai công cụ mà mình thấy thực hiện khá tốt công việc sao lưu cơ sở dữ liệu đó chính là MySQLDumper và Sypex Dumper 2. Ở Sypex Dumper 2 thì có thêm bản Pro với nhiều tính năng nâng cao hơn nhưng theo mình ở nhu cầu bình thường thì bản miễn phí đã quá đủ xài.

Sau khi dùng qua các phần mềm sao lưu cơ sở dữ liệu, cuối cùng mình lựa chọn Sypex Dumper 2: chạy nhanh, ít lỗi, backup và restore cơ sở dữ liệu lớn khá tốt.

So với MySQLDumper có khá nhiều tính năng kèm theo tuy nhiên thỉnh thoảng MySQLDumper thỉnh thoảng bị timeout cho nên mình không thích lắm. Mặc dù đến phiên bản hiện tại 1.24 khá tốt nhưng vì có thiện cảm với Sypex Dumper 2 cho nên mình quyết định sử dụng Sypex Dumper 2 luôn cho các dự án sau này.

Tuy nhiên khi sử dụng Sypex Dumper 2 thì mỗi khi sao lưu dữ liệu hầu hết chúng ta đều phải thực hiện thủ công, do đó khả năng sao lưu thường xuyên là không có bởi đôi khi bạn quên mất đi hoặc không có thời gian để làm điều này. Chính vì thế nên công việc tự động hàng ngày tại sao chúng ta không phó thác cho máy tính, như vậy vừa khỏe cho chúng ta, các bản sao lưu lại tạo ra đều đều, không cần ai nhớ, không cần ai nhắc nhở.

Tuy nhiên bạn sẽ không thấy cấu hình sao lưu tự động trên Sypex Dumper 2. Nhưng tác giả công cụ này cũng là một người khá là tốt cho nên bạn có thể thiết lập nó trên Console Cron.

Trước tiên thì mời các bạn “thường thức” các lệnh:

-h=localhost - MySQL-host (IP hay tên host của MySQL)
-o=3306 - port (cổng của MySQL, mặc định là 3306)
-u=root - username (username của MySQL)
-p=password - password (mật khẩu đăng nhập MySQL)
-j=my_job - name of the saved job (Tên Job, cái này bạn cần tạo một Job trên Web GUI).

Tất nhiên chúng cần sử dụng php để thi hành:

/usr/bin/php /var/www/html/sxd/sxd-php7/index.php -j=job_name

Để biết được php ở đâu thì bạn dùng lệnh:

which php

Còn /var/www/html/sxd/sxd-php7/index.php là đường dẫn đến tập tin index.php của mã nguồn Sypex Dumper 2 khi bạn Upload lên Host.

Trước tiên chúng ta cần truy cập vào trang Sypex Dumper 2.

Tạo một Job mới bằng cách chọn Database cần Export rồi nhấn Save như trên hình.

Chú ý Job Name như hình dưới là “web” nhé các bạn. Có thể thêm Description để ghi nhớ và phân biệt các Job khác trong tương lai.

Bây giờ chúng ta thử Backup Database với dòng lệnh:

/usr/bin/php /var/www/html/sxd/sxd-php7/index.php -j=web
Như vậy là dòng lệnh đã hoạt động.

Bạn đừng quên kiểm tra trên giao diện Web xem có tập tin sao lưu cơ sở dữ liệu chưa ở Menu Files:

Như vậy là đã tạo file Backup thành công.

Tuy nhiên trong trường hợp dòng lệnh không hoạt động bạn cần cung cấp một lệnh đầy đủ:

/usr/bin/php /var/www/html/sxd/sxd-php7/index.php -h=localhost -o=3306 -u=root -p=password -j=web

Nhớ chỉnh sửa cho đúng với thông tin hệ thống của bạn nhé.

Giờ thì chúng ta cần tạo một Cronjob để thực hiện chạy dòng lệnh này tự động thường xuyên là được.

Tạo Script để backup với tên backup-database.sh:

#!/bin/bash
# Syntax : <php path> <sxd path> -j=<job_name>

log_path='/var/logs/autobackup.log'
sxd_path='/var/www/html/sxd/sxd-php7/index.php'

/usr/bin/php $sxd_path -j=web

echo "Database Backup taken successfully at $(date)..." > $log_path

Tham khảo: https://appcoder.link/automatic-database-backups-sxd/

Bây giờ thêm vào Cronjob:

crontab -e

Thêm dòng sau vào:

30 4 * * * /var/www/html/sxd/sxd-php7/backup-database.sh

Dòng lệnh ở trên có nghĩa là 4 giờ 30 phút sáng hàng ngày thì Cron sẽ chạy dòng lệnh trên, thực thi Script backup-database.sh, khi đó Database của chúng ta sẽ được sao lưu tự động cùng thời điểm này. Bạn không cần phải thực hiện thủ công nữa.

Các bạn đừng lưu lại nhé.

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

Bình luận