Hướng dẫn phục hồi website và database trên VPS/Server từ VPS backup

Trong bài trước mình đã hướng dẫn tự động backup code và database sang một server/VPS khác. Hôm nay mình sẽ giới thiệu cách restore hay phục hồi lại VPS từ các dữ liệu code và database bạn đã backup sang VPS phụ.  Khi VPS bị lỗi hay bạn muốn cài lại VPS, nếu bạn làm theo các bước dưới đây bạn có thể chỉ mất từ 5 đến 30 phút là khôi phục lại hoàn toàn dữ liệu để website hoạt động lại bình thường.

Chúng ta bắt đầu nào:

Hãy chắc chắn bạn đã backup lại toàn bộ dữ liệu và Database.

Cách thức thực hiện backup các bạn xem ở bài Hướng dẫn tự động backup code và database sang một server/VPS khác. Trước khi cài lại VPS, các bạn hãy chạy file backup_VPS.sh lần cuối cùng để sao lưu dữ liệu mới nhất nhé.

Cài đặt lại VPS bằng VPSSIM

(Nếu bạn chỉ phục hồi lại VPS từ VPS backup thì không cần làm bước này)
Sau khi bạn đã chạy backup_VPS.sh xong. Bạn hãy login vào control panel của nhà cung cấp VPS, sau đó chọn rebuild lại VPS. Để sử dụng được VPSSIM để cài đặt PHP-FPM, MariaDB và Nginx và quản lý VPS, bạn cần phải chọn hệ điều hành Centos 6 hoặc 7.

Add thêm các domain vào VPS vừa cài đặt

Bạn sử dụng chức năng thêm domain của VPSSIM để thêm các domain ta cần phục hồi nhé.
Tuy cập VPSSIM menu và chọn phím chức năng 1 để sử dụng.
Chúng ta sẽ add thêm đầy đủ các domain domain nhé. Tiếp theo vào folder public_html của các domain này xóa tất cả các file index.html đi nhé !

Nếu chúng ta có backup các file vhost tại /etc/nginx/conf.d thì không cần phải thực hiện bước add domain vào VPS. Ta chỉ cần upload các file backup này ngược trở lại theo đúng thư mục /etc/nginx/conf.d là được.

Cho VPS backup kết nối tới VPS chính mà không cần nhập mật khẩu

Bây giờ chúng ta sẽ cho phép VPS backup kết nối tới VPS chính mà không cần mật khẩu:
Trên VPS backup bạn gõ lệnh:

ssh-keygen -f ~/.ssh/id_rsa -q -P ""

tiếp theo:

ssh-copy-id -i ~/.ssh/id_rsa.pub IP_VPS_chính

 

ví dụ VPS chính của bạn có IP 123.456.789 thì ta dùng lệnh:

ssh-copy-id -i ~/.ssh/id_rsa.pub 123.456.789

sau đó ta nhập mật khẩu VPS chính là hoàn thành.

Tạo Script transfer lại toàn bộ các file backup từ VPS backup về VPS ta vừa cài đặt xong.

Sau khi ta đã cho VPS backup kết nối với VPS chính mà không cần nhập khẩu. Ta sẽ tạo script để transfer tất cả code và database đã backup ngược trở lại VPS chính. Tốc độ upload và download trên VPs rất nhanh, do đó nếu dung lượng backup của bạn lên tới hàng chục GB thì cũng mất một vài phút là hoàn thành việc này.

Trong bài Hướng dẫn tự động backup code và database sang một server/VPS khác mình có chia làm hai trường hợp tạo script :
Trường hợp với MySQL engine là MyISAM và Trường hợp với MysSQL engine là Innodb hay bất kỳ Engine khác. Tuy nhiên nếu bạn sử dụng nếu bạn sử dụng VPSSIM để quản lý VPS thì mặc định MySQL engine là MyISAM nên chúng ta chỉ cần transfer ngược trở lại folder MySQL và code là xong.

Trường hợp với MySQL engine là MyISAM

Tạo một file restore.sh trên máy tính với nội dung như sau:

#!/bin/bash
rsync -avz -e ssh /home/backup/home/ root@IP_VPS_Chính:/home/
rsync -avz -e ssh /home/backup/mysql/ root@IP_VPS_Chính:/var/lib/mysql/

 

Sau đó bạn dùng một trình upload file như winscp hay filezilla upload restore.sh lên thư mục /bin/ trên VPS backup. Tiếp theo chmod file này 755.

Tiếp tục truy cập SSH vào VPS backup và chạy script restore.sh để chuyển toàn bộ dữ lệu database và code về VPS chính

Lệnh thực hiện:

restore.sh

bạn chờ một vài phút để chuyển dữ liệu về VPS chính. Sau khi Rsync dữ liệu hoàn thành. Bạn cần khởi động lại Nginx và MySQL, php-fpm để hoàn thành

service nginx restart
service php-fpm restart
service mysql restart

Vậy là ta hoàn thành việc phục hồi VPS từ VPS backup. Chúng ta sẽ mất khoảng hơn 10 phút để hoàn thành phục hồi VPS để website hoạt động lại bình thường.

Trường hợp với MysSQL engine là Innodb hay bất kỳ Engine khác.

với MysSQL engine là MyISAM ta có thể cách ở trên là nhanh nhất. Nhưng bạn vẫn có thể sử dụng cách dưới đây.

Tạo script restore.sh tương tự như trên để chuyển code và database về VPS chính.

#!/bin/bash
rsync -avz -e ssh /home/backup/home/ root@IP_VPS_Chính:/home/
rsync -avz -e ssh /home/backup/backupmysql/ root@IP_VPS_Chính:/home/backupmysql/

upload lên /bin/ rồi chomd file này 755, chạy lệnh restore.sh trên VPS backup để chuyển file backup về VPS chính.

Sau khi bạn chạy restore.sh xong, code và database backup đã chuyển về VPS chính. Lúc này website chưa thể hoạt động do chỉ có code mà chưa có database. bây giờ chúng ta cần phải import database. Như trong bài Hướng dẫn tự động backup code và database sang một server/VPS khác chúng ta sử dụng mysqldump để backup database, vì vậy bây giờ chúng ta sẽ sử dụng mysqldump để phục hồi database.

Bạn xem hướng dẫn về sao lưu và phục hồi mysql bằng MySQLdump nhé.

Tắt chức năng  VPS backup được login vào VPS chính mà không cần nhập mật khẩu

Bạn chạy lệnh sau trên VPS backup để tắt đi khả năng login vào VPS chính mà không cần nhập mật khẩu ở bước trước ta đã làm.

ssh-keygen -R IP_VPS_chính

Đến đây là mọi việc đã hoàn thành. Chúng ta đã restore cho VPS xong. Nếu bạn restore từng phần, hãy thay nội dung restore.sh theo nhu cầu của mình nhé.

About admin

Nhiều bạn chỉ biết mình là kỹ thuật viên chuyên ngành điện tử công nghiệp, điện tử dân dụng, nhưng đồng thời mình cũng là 1 Webmaster điều hành 1 số web và blog... Mình muốn đem những kiến thức mình biết để chia sẻ cho những anh em không biết, chưa biết... Hãy cùng nhau chia sẻ những gì chúng ta có, hãy chia sẻ thoải mái nếu nó không làm bạn nghèo đi nhé!

Theo dõi
Thông báo về
guest
0 Comments
Cũ nhất
Mới nhất Bình chọn nhiều nhất
Phản hồi nội tuyến
Xem tất cả các ý kiến