Trong việc vận hành máy chủ cũng như bất kỳ dịch vụ CNTT nào khác, việc backup là điều vô cùng cấp thiết. Trong bài nay, mình sẽ hướng dẫn các bạn các để backup tự động CSDL MongoDB và MySQL lên tài khoản Google Drive trên máy chủ Linux Server.

Để thực hiện được các bạn cần có như sau:

1. Tài khoản Google Drive (chính là gmail của các bạn)
2. Cài đặt, cấu hình backup và đồng bộ qua phần mềm Grive2 trên Linux Server
3. Có đủ quyền để thiết lập lịch (crontab) chạy tự động trên Linux Server

Chúng ta sẽ thực hiện lần lượt qua các bước sau:

1. Cài đặt và cấu hình Grive2 trên Linux Server

Để cài đặt Grive2 trên Ubuntu, Linux Mint hoặc bất kỳ bản phân phối nào khác cần sử dụng WebUpd8 PPA, sử dụng câu lệnh sau:
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install grive
*) Grive2 là phiên bản mới được cài đặt qua PPA sẽ ghi đè lên phiên bản Grive cũ nếu trước đó đã được cài đặt
Sau khi cài đặt thành công, Grive2 sẽ hoạt động theo nguyên lý download/upload những dữ liệu mới hoặc những file có sự thay đổi từ một folder mà bạn thiết đặt. Trước hết, chúng ta sẽ tạo ra một folder mới, bạn có thể đặt tên tùy ý, ở đây tôi đặt tên là “backup”
mkdir -p ~/backup
Tiếp theo, truy xuất vào thư mục vừa tạo
cd ~/backup
Khi lần đầu tiên thiết đặt Grive2, bạn phải sử dụng lệnh với tham số -a để gán quyền truy xuất tới tài khoản Google Drive của bạn:
grive -a

Sau khi chạy lệnh trên, một URL sẽ được hiển thị trong terminal của bạn, hãy sao chép URL này và dán nó vào một trình duyệt web. Trong trang hiển thị ra, bạn sẽ được yêu cầu cấp quyền truy cập cho Google Drive của bạn và sau khi nhấp vào “Cho phép truy cập”, mã xác thực sẽ được hiển thị. Bạn cần sao chép mã này và dán mã vào terminal nơi bạn vừa chạy lệnh.

Vậy là bạn đã kết nối xong grive2 với tài khoản Google Drive của bạn. Giờ đây, mỗi lần bạn muốn đồng bộ hóa Google Drive với thư mục “backup”, hãy điều hướng đến thư mục “backup” (như bước trên) và chạy “grive” (lần này sẽ không có tham số “-a” vì bạn đã xác thực xong Grive với Google Drive trước đó).
Nếu bạn chỉ muốn đồng bộ thư mục con trong thư mục backup thì bạn có thể sử dụng tham số “-s” như sau:
grive -s SUBFOLDER
2. Thiết lập việc backup CSDL và thiết lập lịch chạy tự động
2.1. Cấu hình backup CSDL
Tại bước này, các bạn cần viết các script để backup CSDL tự động. Các bạn có thể tham khảo các script do mình viết và tự cấu hình lại cho phù hợp với cấu hình của các bạn.
*) Tạo ra file bash backup CSDL MongoDB
#!/bin/bash
now="$(date +'%Y_%m_%d-%H_%M_%S')"
# truy xuất đến thư mục backup (thư mục tạo ra phía trên đã đồng bộ với google drive)
cd /home/tuanna/backup/mongodb/
# Xóa những file backup cũ hơn 3 ngày (tùy chọn)
find -mtime +3 -type f -delete
# Backup CSDL bằng dòng lệnh
mongodump -d database_name -o $now
#đồng bộ lên google drive
grive -s mongodb

=> Tạo ra thư mục mongodb trong thư mục backup để dễ quản lý.
=> Lưu đoạn code trên vào file đặt tên là mongodb.sh

*) Tạo ra file bash backup CSDL MySQL
#!/bin/bash
now="$(date +'%Y_%m_%d-%H_%M_%S')"
# truy xuất đến thư mục backup (thư mục tạo ra phía trên đã đồng bộ với google drive)
cd /home/tuanna/backup/mysql/
# Xóa những file backup cũ hơn 3 ngày (tùy chọn)
find -mtime +3 -type f -delete
# Backup CSDL bằng dòng lệnh
mysqldump database_name > /home/tuanna/backup/mysql/$now.sql
#đồng bộ lên google drive
grive -s mysql
=> Tạo ra thư mục mongodb trong thư mục mysql để dễ quản lý.
=> Lưu đoạn code trên vào file đặt tên là mysql.sh
2.2. Thiết lập lịch chạy tự động
Bây giờ, để hoàn tất bạn cần đặt lịch tự động để hệ thống chạy file bash (mongodb.sh và mysql.sh) ở trên. Nếu mọi thiết lập thành công thì các file backup sẽ được lưu vào thư mục con của thư mục backup và sẽ được tự động đồng bộ lên tài khoản google drive bạn đã kết nối trước đó.
Để đặt lịch trên Linux Server, các bạn sử dụng crontab bằng việc gõ lệnh sau:
crontab -e
Kết quả hiển thị như sau:
no crontab for tuanna - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/code
4. /usr/bin/vim.basic
5. /usr/bin/vim.tiny
Choose 1-5 [2]:

Mặc định chưa có crontab nào được tạo, bạn chọn các tùy chọn trình soạn thảo từ 1->5, ở đây mình chọn lựa chọn 2 cho dễ sử dụng, màn hình hiển thị như sau:

Tại cửa sổ này, các bạn định nghĩa ra các crontab theo cấu trúc như sau:

Theo cấu trúc trên, mình có thể đặt lịch ví dụ như sau:

0 1 * * * /home/tuanna/backup/mongodb.sh
0 1 * * * /home/tuanna/backup/mysql.sh

Theo mặc định, Crontab sẽ gửi email cho người thực thi cron, nếu bạn muốn tắt chức năng gửi email này đi thì hãy thêm đoạn sau vào cuối dòng

/dev/null 2>&1

Sau cùng, bạn lưu lại bằng cách nhấn tổ hợp Ctrl X và chọn save. Hai lệnh trên sẽ thực hiện chạy tự động các file bash được định nghĩa trước đó vào lúc 1h sáng mỗi ngày.

Để kiểm tra danh sách các crontab đang có trên hệ thống, bạn sử dụng lệnh sau:

crontab -l

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

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây