在MySQL數(shù)據(jù)庫備份中,常常會用到全量備份和增量備份兩種方法。那么,這兩種備份方式的具體含義是什么呢?
首先,全量備份指的是完整地備份數(shù)據(jù)庫中的所有數(shù)據(jù),包括數(shù)據(jù)表、索引、存儲過程、觸發(fā)器等。全量備份是比較簡單易行的一種備份方式,可以用于恢復整個數(shù)據(jù)庫最新的狀態(tài)。但是,由于數(shù)據(jù)量較大,備份和恢復的時間也會較長,這就不太適合于數(shù)據(jù)量較大的數(shù)據(jù)庫。此外,全量備份的備份文件也比較大,占用的存儲空間也相對較多。
而增量備份,則是指僅備份最新的修改,也就是與上一次備份后的變化量,而不是備份整個數(shù)據(jù)庫。通常情況下,增量備份是通過與上一次備份的時間作比較,找出那些在備份之后修改了的數(shù)據(jù),然后將這些數(shù)據(jù)備份下來。或者,也可以通過記錄事務日志來進行增量備份。由于增量備份只備份了最新的修改,因此,備份文件相對較小,可以節(jié)省存儲空間,也可以縮短備份和恢復所需的時間。
# 增量備份腳本 # 定義備份目錄和日志文件名 backup_dir=/backup logfile=$backup_dir/backup.log # 定義MySQL目錄和參數(shù) mysql_home=/usr/local/mysql mysql_user=root mysql_password=123456 mysql_sock=$mysql_home/data/mysql.sock # 定義備份日期和文件名 backup_date=`date +%Y%m%d` backup_file=$backup_dir/db_backup_$backup_date.sql # 設置MYSQL_BINLOG_DUMP選項參數(shù) start_file=`head -1 $backup_dir/last_backup.log` start_pos=`tail -1 $backup_dir/last_backup.log` # 開始備份 echo "--- Starting incremental backup of database ---" >>$logfile echo "Backup directory: $backup_dir" >>$logfile echo "Backup date: $backup_date" >>$logfile echo "Backup file: $backup_file" >>$logfile # 執(zhí)行增量備份命令 $mysql_home/bin/mysqlbinlog --start-position=$start_pos --stop-never --user=$mysql_user --password=$mysql_password --socket=$mysql_sock $mysql_home/data/mysql-bin.* | $mysql_home/bin/mysql -u$mysql_user -p$mysql_password -hlocalhost >$backup_file # 記錄備份日志 echo $start_file >$backup_dir/last_backup.log echo `ls -lrt $mysql_home/data/mysql-bin.* | tail -1 | awk '{print $9}'` >>$backup_dir/last_backup.log # 備份完成 echo "--- Incremental backup completed ---" >>$logfile