您好,登錄后才能下訂單哦!
MySQL備份
1、MySQL備份過程:
MyISAM
全備:
a. 鎖表 -- LOCK TABLE -- --lock-all-tables
b. 同步表 -- FLUSH TABLES
c. 刷新二進制日志 -- FLUSH LOGS -- --flush-logs
d. 記錄二進制日志位置 -- SHOW MASTER STATUS -- --master-data=2
e. 備份數據 -- -- mysqldump --databases
f. 釋放鎖 -- UNLOCK TABLES
g. 刪除舊二進制日志 -- PURGE BINARY LOGS TO
總結命令:
mysqldump --databases --lock-all-tables --master-data=2 --flush-logs DB_NAME > db_name-datetime.sql
增量備份:
a. 刷新二進制日志 -- FLUSH LOGS
b. 復制舊的二進制日志即可
InnoDB
全備:
a. 刷新二進制日志
b. 記錄當前二進制日志位置
c. 刪除舊二進制日志
***相關鎖表等操作數據庫自動完成,由參數--single-transaction即可完成
總結命令:
mysqldump --databases --master-data=2 --flush-logs --single-transaction DB_NAME > db_name-datetime.sql
增量備份:
a. 刷新日志 -- FLUSH LOGS
b. 復制舊的二進制日志即可
備份腳本
[root@ibm01 ~]# cat sqlbackup.sh
#!/bin/bash
DB_Name="$1"
DB_Egine="$2"
Backup_Type="$3"
Backup_Time=date +%Y%M%d%H%M%S
Backup_File=$DB_Name-$Backup_Time.sql
Data_Dir="/data/mysql/logs/"
function FullBackup() {
if [ $DB_Egine == "MyISAM" ]
then
mysqldump --databases --lock-all-tables --flush-logs --master-data=2 $DB_Name > $Backup_File
elif [ $DB_Egine == "InnoDB" ]
then
mysqldump --databases --single-transaction --flush-logs --master-data=2 $DB_Name > $Backup_File
fi
Current_BinLog_File=egrep -o "MASTER_LOG_FILE=.*," $Backup_File |cut -d"=" -f2|tr -d ","
mysql -e "PURGE BINARY LOGS TO $Current_BinLog_File;"
}
function IncrBackup() {
BinLog_Files=mysql -N -e "SHOW BINARY LOGS;"|cut -f1 |tr "\n" " "
mysql -e "FLUSH LOGS;"
mkdir /root/binlogs/$Backup_Time
cd $Data_Dir
cp $BinLog_Files /root/binlogs/$Backup_Time
}
if [ $Backup_Type == "Full" ]
then
FullBackup
elif [ $Backup_Type == "Incr" ]
then
IncrBackup
fi
xtrabackup備份:
1、對于innodb可以實現增量備份,對于myISAM只能全備
2、innobackupex /backuppath(備份)
3、innobackupex --apply-log /backuppath/backuptime(應用事務日志)
4、innobackupex --copy-back /backuppath/backuptime(恢復)
xtrabackup增量備份:
備份:
1、innobackupex --incremental --incremental-basedir=/上一次備份路徑 /備份路徑
增量備份的恢復需要有3個步驟:
1、恢復完全備份
2、恢復增量備份到完全備份(開始恢復的增量備份要添加--redo-only參數,到最后一次增量備份要去掉--redo-only)
3、對整體的完全備份進行恢復,回滾未提交的數據
恢復過程:
##準備一個全備##
[root@centos6 pxb]# innobackupex --apply-log --redo-only /data/pxb/2017-04-24_02-46-11/
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 2628145
InnoDB: Number of pools: 1
01:33:52 completed OK!
##將增量1應用到完全備份##
[root@centos6 pxb]# innobackupex --apply-log --redo-only /data/pxb/2017-04-24_02-46-11/ --incremental-dir=/data/pxb/inc/2017-04-28_01-09-40/
##將增量2應用到完全備份,注意不加 --redo-only 參數了##
[root@centos6 pxb]# innobackupex --apply-log /data/pxb/2017-04-24_02-46-11/ --incremental-dir=/data/pxb/inc/2017-04-28_01-27-46/
##把所有合在一起的完全備份整體進行一次apply操作,回滾未提交的數據##
[root@centos6 pxb]# innobackupex --apply-log /data/pxb/2017-04-24_02-46-11/
xtrabackup: Log applied to lsn 2628145
xtrabackup: The intended lsn is 2643563
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。