Database là phần quan trọng nhất trong yếu tố dữ liệu – Data. Khi sử dụng server riêng hay thuê VPS, người quản trị phải thực hiện đầy đủ công tác backup dữ liệu để phòng tránh trường hợp dữ liệu bị mất do nhiều nguyên nhân. May mắn, MySQL hỗ trợ rất đầy đủ và việc này có thể dễ dàng thực hiện được. Mình xin giới thiệu 1 scripts “mỳ ăn liền” backup dữ liệu theo từng ngày trên VPS Linux và xóa những bản không cần thiết trước đó như sau:
Chú ý, ta cần có 1 user có quyền ở trên tất cả các database muốn backup, có thể sử dụng root của MySQL nhưng để an toàn hơn, ta ko dùng root mà sử dụng 1 user có quyền tương đương root
backup-mysql.sh scripts
#!/bin/bash
# Định nghĩa root hoặc DB admin
DBHOST=localhost
DBUSER=admin
DBPASS=**********
#Thư mục lưu backup
BACKUPDIR=/home/backup/mysql
# format is YYYYMMDD
DATE=`date +%Y%m%d`
mkdir -p “$BACKUPDIR/$DATE”
cd “$BACKUPDIR/$DATE”MUTTXT=/home/backup/mysql/backupmysql.txt
#Lấy list databases trên server
DBS=`mysql –host=$DBHOST -p$DBPASS -u $DBUSER –skip-column-names -e “show databases;” | awk ‘{ print $1 }’ | grep -v “information_schema”`
#Dumping database
for i in $DBS
do
# format is dbname-YYYYMMDD.gz
DBOUT=$i.sql.gz
echo Backing up $i to $DBOUT#set umask to protect file
umask 006mysqldump -u $DBUSER -h $DBHOST -p$DBPASS –add-drop-table $i | gzip -9 – > $DBOUT
echo “Backup successfully done. Please see attached file.” > $MUTTXT
echo “” >> $MUTTXT
echo “Backup file: $DBOUT” >> $MUTTXT
echo “” >> $MUTTXT
done
# Xóa các bản backup cũ hơn 30 ngày
echo deleting backups older than 30 days:
find “$BACKUPDIR” -mindepth 1 -a -type d -mtime +30 -exec rm -rf {} ;
Như vậy ta sẽ cho scripts này vào trong crontab và chạy hàng ngày. Để an toàn hơn nữa, ta có thể chuyển toàn bộ những dữ liệu đã backup này sang một hệ thống lưu trữ nào đó. Khi thuê vps tại iNET bạn sẽ được kỹ thuật viên iNET hỗ trợ hoàn toàn phần này nhé.
Leave a Reply