Bài viết mình sử dụng cho VPS sử dụng VPSSIM quản lý cài đặt PHP-FPM, Nginx và MariaDB và áp dụng trong trường hợp VPS chính được cài mới lại toàn bộ. Với các bạn dùng script khác hoặc chỉ là chuyển các file backup ngược trở lại VPS chính có thể làm tương tự nhé. Trong bài viết sau, mình sẽ tiếp tục nói về cách chuyển các website từ 1 VPS sang một VPS khác, cùng data center hoặc khác data center mà không làm gián đoạn hoạt động của website, tức là không ảnh hưởng tới visit.
Xem thêm: Cài đặt, quản lý, tối ưu và bảo mật VPS với VPSSIM
Hiện tại VPSSIM đã hỗ trợ backup tất cả database, việc backup và phục hồi tất cả database dễ dàng hơn rất nhiều.
Mục Lục Nội Dung
- 1 Hãy chắc chắn bạn đã backup lại toàn bộ dữ liệu và Database.
- 2 Cài đặt lại VPS bằng VPSSIM
- 3 Add thêm các domain vào VPS vừa cài đặt
- 4 Cho VPS backup kết nối tới VPS chính mà không cần nhập mật khẩu
- 5 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.
- 5.1 Trường hợp với MySQL engine là MyISAM
- 5.2 Trường hợp với MysSQL engine là Innodb hay bất kỳ Engine khác.
- 6 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
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/bashrsync -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 restartservice php-fpm restartservice 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/bashrsync -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.
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é.
Nếu bạn chưa có VPS backup, Bạn có thể mua gói VPS 128 MB SSD cache với 80 GB dung lượng ổ cứng của RAMNODE như HostingAZ.VN đang sử dụng.