Bảng điều khiển có các chức năng sao lưu cho các cấp truy cập khác nhau:
- Cấp admin (quản trị viên): Tạo bản sao lưu toàn bộ hệ thống hoặc toàn bộ máy chủ
- Cấp admin (quản trị viên): Tạo bản sao lưu cho tất cả người dùng và người bán Reseller
- Cấp độ người bán (Reseller): Tạo bản sao lưu cho tất cả người dùng thuộc sở hữu của người bán (Reseller)
- Cấp độ người dùng (User): Tạo bản sao lưu cho các dịch vụ khác nhau (trang web, e-mail, cơ sở dữ liệu)
1. Tạo bản sao lưu đầy đủ và nhỏ gọn
Mặc dù các tệp backup được tạo bởi người dùng vẫn là một tệp được lưu trữ tại máy chủ cục bộ, nhưng bạn vẫn có thể sao chép các bản backup đó sang một vị trí sao lưu từ xa ở một máy chủ khác. Mỗi tệp backup (được tạo bởi admin hoặc reseller) chứa: Các file từ trang web, file kết xuất cơ sở dữ liệu, tài khoản e-mail (bao gồm dữ liệu), bản ghi DNS. Chức năng backup/restore DirectAdmin khá dễ để di chuyển các trang web hoàn chỉnh:
- Bước 1. Tạo một bản sao lưu và lưu trữ tệp trên nền tảng lưu trữ sao lưu từ xa của bạn và chờ email xác nhận rằng bản sao lưu của bạn đã sẵn sàng.
- Bước 2. Đăng nhập vào máy chủ DirectAdmin mới và khôi phục tài khoản từ vị trí từ xa (không nên quên thay đổi địa chỉ IP của máy chủ).
- Bước 3. Sau khi bạn nhận được email thông báo rằng tài khoản của bạn được khôi phục, chỉ cần thay đổi bản ghi A hoặc máy chủ tên cho tên miền của bạn.
Với chức năng này, bạn có thể di chuyển trang web giữa các máy chủ một cách đơn giản dễ dàng.
Tùy chọn thêm: bạn có thể thay đổi các bản ghi A từ máy chủ chính để trỏ chúng đến địa chỉ IP máy chủ mới.
2. Máy chủ quá tải khi tạo bản sao lưu
Chức năng sao lưu mặc định của DA sao lưu các trang web và để sao lưu hàng ngày nếu máy chủ mới có dung lượng đĩa cứng lớn. Trong trường hợp bạn cần tạo một số tệp sao lưu lớn hơn (ví dụ: 1GB), máy chủ của bạn sẽ trở nên chậm trong quá trình chờ đợi sao lưu hoàn tất.
3. Giải pháp dự phòng để giảm tải hoạt động cho máy chủ
Sử dụng rsync, nó có thể tạo các bản sao lưu chủ động cho toàn bộ máy chủ của bạn, nhưng để lưu trữ bản sao lưu thường sẽ không rẻ vì sẽ ngốn khá nhiều dung lượng ổ cứng, và bạn chỉ muốn sao lưu dữ liệu quan trọng. Để có thể giải quyết bài toán sao lưu hiệu quả giải pháp cần có như sau:
- Tạo bản sao lưu hàng tuần hoặc hàng tháng bằng các hàm có sẵn của DirectAdmin.
- Cần tạo một tập lệnh để xuất tệp cơ sở dữ liệu MySQL cho tất cả các cơ sở dữ liệu
- Cần tạo một tập lệnh sao chép tất cả các tệp vào một vị trí từ xa bằng cách sử dụng rsync.
- Cần tạo một công việc tự động bằng CRON cho cả hai giải pháp trên.
- Cần kiểm tra bản sao lưu dự phòng một tuần hoặc tháng
Nó tùy thuộc vào bạn nếu bạn muốn tạo bản sao lưu hàng tháng hoặc hàng tuần trong DirectAdmin (tương tự với tần suất bạn kiểm tra các bản sao lưu của mình). Chạy tất cả các tác vụ sao lưu trong khung thời gian nơi hầu hết khách truy cập của bạn ngoại tuyến.
4. Tạo các bản sao lưu tài khoản DirectAdmin hàng tuần/tháng
Đăng nhập vào DirectAdmin với tư cách là quản trị viên và chọn trong mục
Admin Backup/Transfer chọn những người dùng bạn muốn sao lưu. Đối với tùy chọn tự động
CRON Schedule, hãy chọn thời điểm nào mà khách truy cập ngoại tuyến (Ví dụ ban đêm khoảng từ 0 đến 5h sáng) và nhập vị trí sao lưu từ xa cho biểu mẫu đăng nhập FTP. Để tạo bản sao lưu của bạn hàng tháng hoặc tuần. Và bạn sẽ nhận được một tin nhắn thông báo khi một bản sao lưu được tạo ra.
5. Tạo bản sao lưu cơ sở dữ liệu MySQL cho tất cả cơ sở dữ liệu
Tài khoản chính của Mysql để đăng nhập toàn bộ CSDL trên máy chủ DA có thể tìm thấy username và mật khẩu trong đường dẫn: /usr/local /directadmin/conf/ trên máy chủ của bạn.
Sử dụng thông tin đăng nhập và mật khẩu này, bạn có thể tạo ra bản sao lưu cho tất cả các cơ sở dữ liệu trên máy chủ của bạn. Tạo một tệp với mã sau đây và đặt tên là dbbackup.sh.
#!/bin/sh
DBUSER="da_admin"
DBHOST="localhost"
DBPASS="thepassword"
BACKUPDIR="dbbackup"
DBS=`mysql -u$DBUSER -h$DBHOST -p$DBPASS -e"show databases"`
for DATABASE in $DBS
do
if [ $DATABASE != "Database" ]; then
FILENAME=$DATABASE.gz
mysqldump -u$DBUSER -h$DBHOST -p$DBPASS $DATABASE | gzip --best > $BACKUPDIR/$FILENAME
fi
done
Lưu tệp trong thư mục
/home/admin/ và tạo trong cùng thư mục một tệp khác có tên là
dbbackup. Nếu bạn chạy tập lệnh này từ dòng lệnh, tất cả các tệp kết xuất MySQL sẽ được nén và lưu bên trong thư mục đã tạo mới.
6. Sao chép tệp của bạn bằng rsync
Trước khi bạn có thể bắt đầu sử dụng rsync, bạn cần thiết lập khóa riêng (private key) cần thiết cho kết nối SSH. Nhập các lệnh sau thông qua dòng lệnh từ máy chủ của bạn:
sudo ssh-keygen -f /home/admin/ssh_key -t rsa -N ''
sudo rsync -e ssh /home/admin/ssh_key.pub username@username.exavault.com:ssh_keys/key1.pub
ssh username@username.exavault.com addkeys
Tiếp theo, ta cần tạo một tập lệnh sẽ đồng bộ hóa các tệp của bạn với các tệp đó trên vị trí sao lưu từ xa của bạn, tạo một tệp dưới tên databackup.sh trong thư mục
admin home của bạn với mã sau:
rsync -avz --delete --one-file-system -e "ssh -i /ssh_key" "/home" USERNAME@USERNAME.exavault.com:backup-1
rsync -avz --delete --one-file-system -e "ssh -i /ssh_key" "/home/admin/dbbackup" USERNAME@USERNAME.exavault.com:backup-1
Lệnh đầu tiên sẽ sao chép tất cả các thư mục người dùng vào vị trí sao lưu từ xa và lệnh thứ hai sẽ sao chép tất cả các tệp đã được kết xuất thành file CSDL mysql.
7. Tạo CRON để hệ thống tự sao lưu hàng ngày
Bước cuối cùng chúng ta cần làm là thiết lập một CRON. Đăng nhập vào bảng điều khiển và chỉnh sửa tập tin root crontab gốc với:
sudo crontab -e
Tiếp theo, thêm hai công việc cho CRON này sẽ hoạt động lúc 5 giờ sáng để tự động backup và chuyển các tệp kết xuất MySQL cách nhau 30 phút sau, tập lệnh sao lưu dữ liệu bạn cần thực hiện là:
0 5 * * * sh /home/admin/backup/dbbackup.sh
30 5 * * * sh /home/admin/backup/databackup.sh
Lưu ý: nếu bạn có nhiều cơ sở dữ liệu nặng, hãy để thời gian tạo bảo sao lưu và di chuyển bản sao lưu dài hơn, ví dụ 60 phút hoặc 120 phút. Và đương nhiên, hãy kiểm tra tất cả các bản sao lưu của bạn thường xuyên!