Cách sao lưu dữ liệu hàng ngày tự động cho website của bạn

Hàng ngày, nhà quản trị trang web vẫn thường xuyên kiểm tra website để đảm bảo an toàn và hiệu quả hoạt động. Vậy tại sao vẫn cần công tác sao lưu dữ liệu website? Có cách nào để tự động sao lưu dữ liệu hàng ngày được không? Tất cả những thắc mắc như trên của doanh nghiệp sẽ được ZDIGI giải đáp ngay trong bài viết dưới đây.

Tại sao cần sao lưu dữ liệu hàng ngày

Tại sao cần sao lưu dữ liệu hàng ngày?

Sao lưu dữ liệu là sao chép, lưu lại toàn bộ các dữ liệu có trong máy chủ, máy tính, server,.. vào các thiết bị có khả năng lưu trữ khác. Mặc dù hiện nay công tác quản lý website đã dễ dàng và hiệu quả hơn nhiều nhờ các công cụ hỗ trợ. Tuy nhiên không có điều gì đảm bảo an toàn tuyệt đối và chúng ta không thể biết trước khi nào thì trang web gặp sự cố. Trang web của doanh nghiệp có thể bị tấn công, bị lỗi, bị gián đoạn sau những lần cập nhập hoặc do sai sót từ nhà quản trị như xóa nhầm,.. Và khi đó việc chúng ta có sẵn nguồn dữ liệu dự trữ là vô cùng cần thiết và quan trọng. 

Một bản sao lưu dữ liệu đầy đủ sẽ giúp “hồi sinh” trang web nhanh chóng và dễ dàng, bớt tốn kém hơn bao giờ hết. Doanh nghiệp sẽ không phải đối mặt với nguy cơ mất toàn bộ dữ liệu vĩnh viễn hay tốn rất nhiều thời gian, chi phí cho công tác khôi phục mọi thứ từ con số 0.

Hướng dẫn tạo bản sao lưu website hàng ngày

Hướng dẫn tạo bản sao lưu website hàng ngày

Xác định dữ liệu cần sao lưu

– Mỗi quá trình cài đặt khác nhau sẽ dẫn tới file cấu hình của trang web nằm ở vị trí khác nhau, có 2 chương trình web phổ biến nhất trên môi trường Linux là Apache và Nginx sẽ được sao lưu tại /etc/http/conf/http.conf và /etc/nginx/conf.d/demo.vinahost.vn.conf (đường dẫn và tên file sẽ tùy theo từng tình huống và cách thức cài đặt) và cấu hình của website có cấu trúc như sau:

– Nếu bạn sử dụng Apache làm webserver thì phần cấu hình mặc định của một hosting (Virtual Host) như sau:

<VirtualHost *:80>

ServerAdmin webmaster@demo.vinahost.vn

DocumentRoot /var/www/demo/

ServerName demo.vinahost.vn

ErrorLog logs/demo.vinahost.vn-error_log

CustomLog logs/demo.vinahost.vn-access_log common

</VirtualHost>

– Thư mục chứa mã nguồn của website demo.vinahost.vn là /var/www/demo/

– Nếu bạn sử dụng Nginx làm webserver thì phần cấu hình mặc định của một hosting (Server Blocks) như sau:

server {

server_name www.demo.vinahost.vn;

access_log  logs/demo.vinahost.vn.access.log main;

root /var/www/demo;

}

– Thư mục chứa mã nguồn của website demo.vinahost.vn là /var/www/demo/

– Với database, mà phổ biến và dễ sử dụng nhất hiện nay là Mysql (www.mysql.com), mặc định toàn bộ database của mysql được lưu trữ ở thư mục /var/lib/mysql hoặc được export ra từ câu lệnh mysqldump

Câu lệnh để sao lưu dữ liệu

– Để tạo ra bản sao của mã nguồn ta có thể sử dụng lệnh copy hoặc rsync trong môi trường Linux.

ví dụ: ta sẽ lưu trữ một bản sao lưu của mã nguồn website demo.vinahost.vn trong thư mục /backup/manguon thì câu lệnh tương ứng như sau: cp -ar /var/www/demo /backup/manguon/

– Để tạo bản sao của database ta sử dụng lệnh mysqldump hoặc mysqlhotcopy ( câu lệnh này chỉ dùng cho database MyISAM)

– Để sao lưu database cần xem định dạng của chúng là InnoDB hay MyISAM mà chúng ta sao lưu theo cách khác nhau:

InnoDB: database được lưu trữ ở file có đuôi .ibd tương ứng và ta có thể sử dụng mysqldump theo cú pháp sau: mysqldump -u [uname] -p[pass] [dbname] > backupfile.sql

Ví dụ như sau: /usr/bin/mysqldump -u demo_user -pdemo123 demo_db > /backup/database/demo_db.sql

Trong đó:

demo_user: tên user mysql

demo123: mật khẩu của user demo_user, lưu ý viết liền với tùy chọn -p

demo_db: tên database cần sao lưu

/backup/database/demo_db.sql: là file database demo_db được export ra thành demo_db.sql và lưu trữ tại thư mục /backup/database

MyISAM: database được lưu trữ ở thư mục có tên tương ứng với tên database, ví dụ database của website demo.vinahost.vn đang sủ dụng là demo_db thì thư mục lưu trữ tương ứng là /var/lib/mysql/demo_db và ta sử dụng mysqlhotcopy để tạo bản sau lưu của thư mục gốc này với cú pháp sau:

mysqlhotcopy -u [uname] -p[pass] db_name [new_db_name | directory].

Ví dụ như sau: /usr/bin/mysqlhotcopy -u demo_user -pdemo123 demo_db /backup/database

Trong đó:

demo_user: tên user mysql

demo123: mật khẩu của user demo_user, lưu ý viết liền với tùy chọn -p

demo_db: tên database cần sao lưu

/backup/database : là thư mục lưu trữ thư mục database gốc của demo_db, sau khi hoàn tất toàn bộ thư mục gốc của database demo_db sẽ được sao lưu một bản ở thư mục này.

Chạy sao lưu định kỳ

– Để sao lưu dữ liệu định kỳ, ta có thể dùng crontab trong môi trường Linux. Trước tiên cần tạo một script đơn giản ví dụ như:

#!/bin/bash

#xóa dữ liệu backup cũ

rm -rf /backup/*

#sao lưu mã nguồn website

cp -ar /var/www/demo /backup/manguon/

#sao lưu database website, ví dụ trường hợp này database sử dụng MyISAM

/usr/bin/mysqlhotcopy -u demo_user -pdemo123 demo_db /backup/database

#in ra màn hình hoặc lưu trữ vào file log kết quả

echo “Backup complete” >  /var/log/backup/$today.log

– Cài đặt crontab để chạy script này định kỳ vào lúc 0h 0p hàng ngày bằng câu lệnh: crontab-e sau đó chèn nội dung sau

0 0 * * * /root/backup.sh > /dev/null 2>&1

Sao lưu ra một máy chủ khác

Trong ví dụ phía trên là các bước sao lưu dữ liệu của website trên chính máy chủ webserver. Nếu bạn sao lưu ra một máy chủ khác để đảm bảo an toàn cao hơn tránh trường hợp máy chủ web bị lỗi và mất toàn bộ dữ liệu thì ta có thể dùng câu lệnh rsync.

Ví dụ: rsync -ar /backup root@10.0.0.2:/backup

Trong đó:

/backup là thư mục chứa toàn bộ dữ liệu mã nguồn và database của website cần sao lưu

root là tài khoản dùng cho phiên kết nối này

10.0.0.2:/backup là IP của máy chủ chứa dữ liệu sao lưu và thư mục cần lưu dữ liệu là /backup trên máy chủ này

Sau đó ta có thể tạo một cronjob để chạy lệnh này hàng ngày vào lúc 0h 0 phút ví dụ:

0 0 * * * rsync -ar /backup root@10.0.0.2:/backup > /dev/null 2>&1

Phục hồi dữ liệu

Với mã nguồn chúng ta chỉ cần copy ngược lại từ thư mục /backup/manguon về thư mục chứa website /var/www/demo và kiểm tra chủ sở hữu của các file này

Đối với database dạng MyISAM bạn cần copy toàn bộ nội dung, files trong thư mục /backup/database/demo_db về thư mục chứa database tương ứng /var/lib/mysql/demo_db và phân lại chủ sở hữu là mysql.mysql bằng câu lệnh sau: chown -R mysql.mysql /var/lib/mysql/demo_db

– Đối với database dạng InnoDB bạn cần sử dụng câu lệnh: mysqldump demo_db < /backup/database/demo_db.sql để phục hồi lại database demo_db từ phiên bản sao lưu.

Hy vọng với các bước hướng dẫn chi tiết như trên ZDIGI phần nào giúp các nhà quản trị tự tin hơn trong công tác bảo vệ dữ liệu, bảo mật website. Nếu doanh nghiệp có nhu cầu tìm hiểu thêm về dịch vụ sao lưu dữ liệu hàng ngày tự động của website, hãy liên lạc với chúng tôi qua hotline 0772399396 để nhận được tư vấn miễn phí từ chuyên gia của chúng tôi!

Bài viết liên quan

DỊCH VỤ MARKETING
TỐI ƯU NHÂT!

Để lại câu hỏi, chúng tôi sẽ liên hệ lại trong thời gian sớm nhất

Liên hệ