博主QQ:819594300
平房網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
博客地址:http://zpf666.blog.51cto.com/
有什么疑問的朋友可以聯(lián)系博主,博主會(huì)幫你們解答,謝謝支持!一、MySQLdump備份結(jié)合binlog日志恢復(fù)
說明:MySQL備份一般采取全庫備份加日志備份的方式,例如每天執(zhí)行一次全備份,每小時(shí)執(zhí)行一次二進(jìn)制日志備份。這樣在MySQL故障后可以使用全備份和日志備份將數(shù)據(jù)恢復(fù)到最后一個(gè)二進(jìn)制日志備份前的任意位置或時(shí)間。
1、binlog介紹
1)該日志記錄著數(shù)據(jù)庫的所有增、刪、改的操作日志,還包括這些操作的執(zhí)行時(shí)間。
Binlog功能默認(rèn)是關(guān)閉的,沒有開啟。
查看binlog,用mysqlbinlog -v mysql-bin.000001
Binlog的用途:1:主從同步 2:恢復(fù)數(shù)據(jù)庫
開啟binary log功能:通過編輯my.cnf中的log-bin選項(xiàng)可以開啟二進(jìn)制日志;形式如右:log-bin[=DIR/[filename]] ,注釋:每次重啟mysql服務(wù)或運(yùn)行mysql> flush logs;都會(huì)生成一個(gè)新的二進(jìn)制日志文件,這些日志文件的number會(huì)不斷地遞增,除了生成上述的文件外還會(huì)生成一個(gè)名為filename.index的文件。這個(gè)文件中存儲(chǔ)所有二進(jìn)制日志文件的清單又稱為二進(jìn)制文件的索引。
2)查看產(chǎn)生的binary log 注:查看binlog內(nèi)容是為了恢復(fù)數(shù)據(jù)
說明:bin-log因?yàn)槭嵌M(jìn)制文件,不能通過文件內(nèi)容查看命令直接打開查看,mysql提供兩種方式查看方式。
①在介紹之前,我們先對(duì)數(shù)據(jù)庫進(jìn)行一下增刪改的操作,否則log里邊數(shù)據(jù)有點(diǎn)空。
②重新開始一個(gè)新的日志文件
③查看MySQL Server上的二進(jìn)制日志
查看指定的二進(jìn)制日志中的事件:
該命令還包含其他選項(xiàng)以便靈活查看:
總結(jié):上述方式可以查看到服務(wù)器上存在的二進(jìn)制日志文件及文件中的事件,但是想查看到文件中具體的內(nèi)容并應(yīng)于恢復(fù)場(chǎng)景還得借助mysqlbinlog這個(gè)工具。
語法格式:mysqlbinlog [options] log_file ...
輸出內(nèi)容會(huì)因日志文件的格式以及mysqlbinlog工具使用的選項(xiàng)不同而略不同。
mysqlbinlog的可用選項(xiàng)可參考man手冊(cè)。
說明:無論是本地二進(jìn)制日志文件還是遠(yuǎn)程服務(wù)器上的二進(jìn)制日志文件,無論是行模式、語句模式還是混合模式的二進(jìn)制日志文件,被mysqlbinlog工具解析后都可直接應(yīng)用與MySQL Server進(jìn)行基于時(shí)間點(diǎn)、位置或數(shù)據(jù)庫的恢復(fù)。
下面我們就來演示如何使用binlog恢復(fù)之前刪除數(shù)據(jù)(id=2那條記錄)
注意:在實(shí)際生產(chǎn)環(huán)境中,如果遇到需要恢復(fù)數(shù)據(jù)庫的情況,不要讓用戶能訪問到數(shù)據(jù)庫,以避免新的數(shù)據(jù)插入進(jìn)來,以及在主從的環(huán)境下,關(guān)閉主從。
①查看binlog文件,從中找出delete from bdqn.test where id=2
# cd/usr/local/mysql/data/
# mysqlbinlog -v mysql-bin.000002
顯示結(jié)果如下:
圖片看不清楚的可以看下面復(fù)制的日志:
# at 219
#170316 21:52:28 server id 1 end_log_pos 287 CRC32 0xff83a85b Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1489672348/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;
SET @@session.foreign_key_checks=1,@@session.sql_auto_is_null=0, @@session.unique_checks=1,@@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET@@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 287
#170316 21:52:28 server id 1 end_log_pos 337 CRC32 0x343e7343 Table_map: `bdqn`.`test` mapped to number 108
# at 337
#170316 21:52:28 server id 1 end_log_pos 382 CRC32 0xa3d1ce0d Delete_rows: table id 108 flags: STMT_END_F
BINLOG '
nJjKWBMBAAAAMgAAAFEBAAAAAGwAAAAAAAEABGJkcW4ABHRlc3QAAgMPAjwAAkNzPjQ=
nJjKWCABAAAALQAAAH4BAAAAAGwAAAAAAAEAAgAC//wCAAAABGxpc2kNztGj
'/*!*/;
### DELETE FROM `bdqn`.`test`
### WHERE
### @1=2
### @2='lisi'
# at 382
#170316 21:52:28 server id 1 end_log_pos 413 CRC32 0x257e7073 Xid = 10
COMMIT/*!*/;
說明:可以從上圖可以看出來delete時(shí)間發(fā)生position是287,事件結(jié)束position是413。
②恢復(fù)流程:直接用bin-log日志將數(shù)據(jù)庫恢復(fù)到刪除位置287前,然后跳過故障點(diǎn),再進(jìn)行恢復(fù)下面所有的操作,命令如下
由于之前沒有做過全庫備份,所以要使用所有binlog日志恢復(fù),所以生產(chǎn)環(huán)境中需要很長(zhǎng)時(shí)間恢復(fù),導(dǎo)出相關(guān)binlog文件。
③刪除bdqn數(shù)據(jù)庫(刪除bdqn和恢復(fù)數(shù)據(jù)之前,要關(guān)閉binlog功能)
④利用binlog恢復(fù)數(shù)據(jù)
⑤恢復(fù)完成后,我們檢查下表的數(shù)據(jù)是否完整
2、mysqldump介紹
作用:mysqldump是mysql自帶的備份和數(shù)據(jù)轉(zhuǎn)移的工具。
特點(diǎn):它只產(chǎn)生sql語句(即sql命令)封裝在文件,而不是真實(shí)的數(shù)據(jù)。
Mysqldump是邏輯備份,不是物理備份,備份的是SQL語句,而不是數(shù)據(jù)文件。
Mysqldump適用于小型數(shù)據(jù)庫,數(shù)據(jù)容量一般是在幾個(gè)G大小,當(dāng)數(shù)據(jù)量很大的情況下,不建議使用mysqldump。
導(dǎo)出對(duì)象:可以針對(duì)單個(gè)表、多個(gè)表、單個(gè)數(shù)據(jù)庫、多個(gè)數(shù)據(jù)庫、所有數(shù)據(jù)庫。
格式:
#mysqldump [選項(xiàng)] 庫名 [表名1] [表名2] … > /備份路徑/備份文件名
//導(dǎo)出指定數(shù)據(jù)庫的單個(gè)或多個(gè)表
#mysqldump [選項(xiàng)] --databases 庫名1 [庫名2] … > /備份路徑/備份文件名
//導(dǎo)出指定的數(shù)據(jù)庫或多個(gè)數(shù)據(jù)庫
#mysqldump [選項(xiàng)] --all-databases > /備份路徑/備份文件名
//導(dǎo)出所有的數(shù)據(jù)庫
#mysqldump -uroot -p123456 --flush-logs bdqn > /opt/bdqn.sql
//導(dǎo)出數(shù)據(jù)庫bdqn,其中“—flush-logs”這個(gè)選項(xiàng)是完整備份完畢后開啟一個(gè)新的binlog
#mysql -uroot -p123456 bdqn < /opt/bdqn.sql
//從備份文件導(dǎo)入數(shù)據(jù)庫bdqn
下面用一個(gè)具體的實(shí)驗(yàn)說明用mysqldump實(shí)現(xiàn)全庫備份+binlog的數(shù)據(jù)恢復(fù)
1)開啟binlog功能并重啟服務(wù)
2)創(chuàng)建備份目錄
3)創(chuàng)建實(shí)驗(yàn)數(shù)據(jù)
4)開始全庫備份(注意:全庫備份不會(huì)備份binlog日志文件)
5)備份mysqldump全庫備份之前的所有的binlog日志文件(注意:真是生產(chǎn)環(huán)境中可能不止一個(gè)binlog文件)
6)因?yàn)槿珟靷浞葜暗腷inlog已經(jīng)備份了,現(xiàn)在就刪除它們(即新產(chǎn)生的binlog之前的所有的binlog刪除)
7)模擬誤操作,刪除了數(shù)據(jù),并且新增加了新的數(shù)據(jù)
8)備份自mysqldump之后的binlog日志文件
9)使用mysqldump的全庫備份+binlog來恢復(fù)數(shù)據(jù)
①使用mysqldump的備份進(jìn)行全庫恢復(fù)(即恢復(fù)到全部備份時(shí)候的所有數(shù)據(jù))
②分析新開啟的binlog日志文件(我這里是mysql-bin.000002)里面誤操作的事件的起始位置和終止位置,只要跳過這一段事件即可
圖片看不清楚的可以看下面復(fù)制的日志:
# at 219
#170318 21:14:42 server id 1 end_log_pos 291 CRC32 0xddbf8eff Query thread_id=5 exec_time=0 error_code=0
SET TIMESTAMP=1489842882/*!*/;
SET @@session.pseudo_thread_id=5/*!*/;
SET @@session.foreign_key_checks=1,@@session.sql_auto_is_null=0, @@session.unique_checks=1,@@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1,@@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 291
#170318 21:14:42 server id 1 end_log_pos 339 CRC32 0x4a9ec8f2 Table_map: `bdqn`.`it` mapped to number 108
# at 339
#170318 21:14:42 server id 1 end_log_pos 388 CRC32 0x2e8a3da8 Delete_rows: table id 108 flags: STMT_END_F
BINLOG '
wjLNWBMBAAAAMAAAAFMBAAAAAGwAAAAAAAEABGJkcW4AAml0AAIDDwI8AALyyJ5K
wjLNWCABAAAAMQAAAIQBAAAAAGwAAAAAAAEAAgAC//wBAAAACHpoYW5nc2FuqD2KLg==
'/*!*/;
### DELETE FROM `bdqn`.`it`
### WHERE
### @1=1
### @2='zhangsan'
# at 388
#170318 21:14:42 server id 1 end_log_pos 419 CRC32 0xa1c06a4f Xid = 43
COMMIT/*!*/;
③開始使用全庫備份后的增量備份的binlog日志文件備份文件進(jìn)行對(duì)全庫恢復(fù)后的增量數(shù)據(jù)的恢復(fù)
10)查看恢復(fù)結(jié)果
總結(jié):從上圖顯示可以看出數(shù)據(jù)恢復(fù)到正常狀態(tài),實(shí)際生產(chǎn)環(huán)境中mysql數(shù)據(jù)庫的備份是周期性重復(fù)操作,所有通常是要編寫腳本實(shí)現(xiàn),通過crond計(jì)劃任務(wù)周期性執(zhí)行備份腳本。
通過crontad計(jì)劃任務(wù)周期性執(zhí)行備份腳本
1)制定mysqldump備份方案
周日凌晨1點(diǎn)全庫備份;
周一到周六凌晨每隔4個(gè)小時(shí)增量備份一次
設(shè)置crontab任務(wù),每天執(zhí)行備份腳本:
2)編寫mysqlfullbackup.sh腳本(即mysql全庫備份腳本)
圖片看不清楚的可以看下面復(fù)制的腳本原文件:
#!/bin/bash
#Name:mysqlFullBackup.sh
#定義數(shù)據(jù)庫目錄
mysqlDir=/usr/local/mysql
#定義用于備份數(shù)據(jù)庫的用戶名和密碼
user=root
userpwd=123456
dbname=bdqn
#定義備份目錄
databackupdir=/opt/mysqlbackup
[ ! -d $databackupdir ] && mkdir $databackupdir
#定義郵件正文文件
emailfile=$databackupdir/email.txt
#定義郵件地址
email=root@localhost.localdomain
#定義備份日志文件
logfile=$databackupdir/mysqlbackup.log
DATE=`date -I`
echo "" > $emailfile
echo $(date +"%Y-%m-%d %H:%M:%S") >>$emailfile
cd $databackupdir
#定義備份文件名
dumpfile=mysql_$DATE.sql
gzdumpfile=mysql_$DATE.sql.tar.gz
#使用mysqldump備份數(shù)據(jù)庫,請(qǐng)根據(jù)具體情況設(shè)置參數(shù)
$mysqlDir/bin/mysqldump -u$user -p$userpwd --flush-logs-x $dbname > $dumpfile
#壓縮備份文件
if [ $? -eq 0 ]; then
tar zcvf$gzdumpfile $dumpfile >> $emailfile 2>&1
echo"BackupFileName:$gzdumpfile" >> $emailfile
echo"DataBase Backup Success!" >> $emailfile
rm -rf$dumpfile
else
echo"DataBase Backup Fail!" >> $emailfile
fi
#寫日志文件
echo"-------------------------------------------------" >> $logfile
cat $emailfile >> $logfile
#發(fā)送郵件通知
cat $emailfile | mail -s "MySQL Backup" $email
2)編寫mysqldailybackup.sh腳本(即mysql增量備份腳本)
圖片看不清楚的可以看下面復(fù)制的腳本原文件:
#!/bin/bash
#Name:mysqlDailyBackup.sh
#定義數(shù)據(jù)庫目錄和數(shù)據(jù)目錄
mysqldir=/usr/local/mysql
datadir=$mysqldir/data
#定義用于備份數(shù)據(jù)庫的用戶名和密碼
user=root
userpwd=123456
#定義備份目錄、每日備份文件備份到$databackupdir/daily
databackupdir=/opt/mysqlbackup
dailybackupdir=$databackupdir/daily
#定義郵件正文文件
emailfile=$databackupdir/email.txt
#定義郵件地址
email=root@localhost.localdomain
#定義日志文件
logfile=$databackupdir/mysqlbackup.log
echo "" > $emailfile
echo $(date +"%Y-%m-%d %H:%M:%S") >>$emailfile
#刷新日志,使數(shù)據(jù)庫使用新的二進(jìn)制日志文件
$mysqldir/bin/mysqladmin -u$user -p$userpwd --flush-logs
cd $datadir
#得到二進(jìn)制日志列表
filelist=`cat mysql-bin.index`
icounter=0
for file in $filelist
do
icounter=`exper$icounter + 1`
done
nextnum=0
ifile=0
for file in $filelist
do
binlogname=`basename $file`
nextnum=`expr$nextnum + 1`
#跳過最后一個(gè)二進(jìn)制日志(數(shù)據(jù)庫當(dāng)前使用的二進(jìn)制日志文件)
if [ $nextnum -eq $icounter ]; then
echo "Skiplastest!" > /dev/null
else
dest=$dailybackupdir/$binlogname
#跳過已經(jīng)備份的二進(jìn)制日志文件
if [ -e $dest ]; then
echo "Skipexist $binlogname!" > /dev/null
else
#備份日志文件到備份目錄
cp $binlogname $dailybackupdir
if [ $? -eq 0 ]; then
ifile=`expr $ifile + 1`
echo "$binlogname backup success!" >>$emailfile
fi
fi
fi
done
if [ $ifile -eq 0 ]; then
echo "NoBinlog Backup!" >> $emailfile
else
echo"Backup $ifile File(s)." >> $emailfile
echo"Backup MySQL Binlog OK!" >> $emailfile
fi
#發(fā)送郵件通知
cat $emailfile | mail -s "MySQL Backup" $email
#寫日志文件
echo"-----------------------------------------" >> $logfile
cat $emailfile >> $logfile
發(fā)送郵件測(cè)試:
安裝libmysqlclient.so.18
再次測(cè)試:
二、 使用xtrabackup進(jìn)行MySQL數(shù)據(jù)庫備份
前面介紹mysqldump備份方式是采用邏輯備份,其最大的缺陷就是備份和恢復(fù)速度都慢,對(duì)于一個(gè)小于50G的數(shù)據(jù)庫而言,這個(gè)速度還是能接受的,但如果數(shù)據(jù)庫非常大,那再使用mysqldump備份就不太適合了。
這時(shí)就需要一種好用又高效的工具,xtrabackup就是其中一款,號(hào)稱免費(fèi)版的InnoDB HotBackup。
Xtrabackup實(shí)現(xiàn)是物理備份,而且是物理熱備。
目前主流的有兩個(gè)工具可以實(shí)現(xiàn)物理熱備:ibbackup和xtrabackup;ibbackup是商業(yè)軟件,需要授權(quán),非常昂貴。而xtrabackup功能比ibbackup還要強(qiáng)大,但卻是開源的。因此我們這里就來介紹xtrabackup的使用。
Xtrabackup提供了兩種命令行工具:
xtrabackup:專用于備份InnoDB和XtraDB引擎的數(shù)據(jù);
innobackupex:這是一個(gè)perl腳本,在執(zhí)行過程中會(huì)調(diào)用xtrabackup命令,這樣用該命令即可以實(shí)現(xiàn)備份InnoDB,也可以備份MyISAM引擎的對(duì)象。
Xtrabackup是由percona提供的mysql數(shù)據(jù)庫備份工具,特點(diǎn):
(1)備份過程快速、可靠;
(2)備份過程不會(huì)打斷正在執(zhí)行的事務(wù);
(3)能夠基于壓縮等功能節(jié)約磁盤空間和流量;
(4)自動(dòng)實(shí)現(xiàn)備份檢驗(yàn);
(5)還原速度快。
官方鏈接地址:http://www.percona.com/software/percona-xtrabackup;可以下載源碼編譯安裝,也可以下載適合的RPM包或使用yum進(jìn)行安裝或者下載二進(jìn)制源碼包。
安裝xtrabackup
1)下載xtrabackup
wgethttps://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/tarball/percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz
2)解壓
3)進(jìn)入解壓目錄
4)復(fù)制bin下的所有程序到/usr/bin
說明:Xtrabackup中主要包含兩個(gè)工具:
xtrabackup:是用于熱備份innodb,xtradb表中數(shù)據(jù)的工具,支持在線熱備份,可以在不加鎖的情況下備份Innodb數(shù)據(jù)表,不過此工具不能操作Myisam引擎表;
innobackupex:是將xtrabackup進(jìn)行封裝的perl腳本,能同時(shí)處理Innodb和Myisam,但在處理Myisam時(shí)需要加一個(gè)讀鎖。
由于操作Myisam時(shí)需要加讀鎖,這會(huì)堵塞線上服務(wù)的寫操作,而Innodb沒有這樣的限制,所以數(shù)據(jù)庫中Innodb表類型所占的比例越大,則越有利。
5)安裝相關(guān)插件
6)下載percona-toolkit并安裝
#wgethttps://www.percona.com/downloads/percona-toolkit/2.2.19/RPM/percona-toolkit-2.2.19-1.noarch.rpm
至此就完成了xtrabackup的安裝,下面就可以啟動(dòng)備份了。
方案:xtrabackup完全備份+binlog增量備份
1)開啟binlog功能并重啟mysqld服務(wù)
2)創(chuàng)建備份用的目錄(full:全備存放的目錄;inc:增量備份存放的目錄)
3)創(chuàng)建實(shí)驗(yàn)用數(shù)據(jù)庫、表、以及添加實(shí)驗(yàn)數(shù)據(jù)
4)開始完全備份
5)我們可以看一下備份后的文件
說明:1)在使用innobackupex進(jìn)行備份時(shí),還可以使用--no-timestamp選項(xiàng)來阻止命令自動(dòng)創(chuàng)建一個(gè)以時(shí)間命名的目錄;如此一來,innobackupex命令將會(huì)創(chuàng)建一個(gè)BACKUP-DIR目錄來存儲(chǔ)備份數(shù)據(jù)。
2)還可以加—database選項(xiàng)指定要備份的數(shù)據(jù)庫,這里指定的數(shù)據(jù)庫只對(duì)MyISAM表有效,對(duì)于InnoDB數(shù)據(jù)來說都是全備(所有數(shù)據(jù)庫中的InnoDB數(shù)據(jù)都進(jìn)行了備份,不是只備份指定的數(shù)據(jù)庫,恢復(fù)時(shí)也一樣)。
針對(duì)里面的各個(gè)文件的說明:
下面我們護(hù)體看一下這幾個(gè)文件:
說明:xtrabackup_binlog_pos_innodb和xtrabackup_binary在這個(gè)版本里面沒有了,因?yàn)榘姹据^新,這兩個(gè)文件在新版給刪除了,只存在于老版本。
6)至此完全備份成功,然后我們開啟一個(gè)新的binlog日志文件,并向mysql某個(gè)庫插入幾條數(shù)據(jù)。
7)模擬誤操作,刪除一條數(shù)據(jù),同時(shí)再插入兩條新數(shù)據(jù)
8)開始增量備份binlog日志文件
9)開始還原數(shù)據(jù)庫
①模擬數(shù)據(jù)庫損壞
我這里直接使用刪除數(shù)據(jù)目錄文件來模擬損壞。
②然后首先是還原完全備份,準(zhǔn)備(prepare)一個(gè)完全備份
說明1:一般情況下,在備份完成后,數(shù)據(jù)尚且不能用于恢復(fù)操作,因?yàn)閭浞莸臄?shù)據(jù)中可能會(huì)包含尚未提交的事務(wù)或已經(jīng)提交但尚未同步至數(shù)據(jù)文件中的事務(wù)。因此,此時(shí)數(shù)據(jù)文件仍處理不一致狀態(tài)?!皽?zhǔn)備”的主要作用正是通過回滾未提交的事務(wù)及同步已經(jīng)提交的事務(wù)至數(shù)據(jù)文件也使得數(shù)據(jù)文件處于一致性狀態(tài)。
說明2:在準(zhǔn)備(prepare)過程結(jié)束后,InnoDB表數(shù)據(jù)已經(jīng)前滾到整個(gè)備份結(jié)束的點(diǎn),而不是回滾到xtrabackup剛開始時(shí)的點(diǎn)。
innobakupex命令的--apply-log選項(xiàng)可用于實(shí)現(xiàn)上述功能。如下面的命令:
--apply-log指明是將日志應(yīng)用到數(shù)據(jù)文件上,完成之后將備份文件中的數(shù)據(jù)恢復(fù)到數(shù)據(jù)庫中:
說明3:在實(shí)現(xiàn)“準(zhǔn)備”的過程中,innobackupex通常還可以使用--use-memory選項(xiàng)來指定其可以使用的內(nèi)存的大小,默認(rèn)通常為100M。如果有足夠的內(nèi)存可用,可以多劃分一些內(nèi)存給prepare的過程,以提高其完成速度。
③正式開始還原完全備份的數(shù)據(jù)庫
說明1:innobackupex命令的--copy-back選項(xiàng)用于執(zhí)行恢復(fù)操作,其通過復(fù)制所有數(shù)據(jù)相關(guān)的文件至mysql服務(wù)器DATADIR目錄中來執(zhí)行恢復(fù)過程。innobackupex通過backup-my.cnf來獲取DATADIR目錄的相關(guān)信息。
④修改data目錄的屬組和屬組為mysql:mysql,并重啟mysqld服務(wù)。
⑤驗(yàn)證還原后的數(shù)據(jù)
⑥開始還原增量備份,但在此之前為了防止還原時(shí)產(chǎn)生大量的二進(jìn)制日志,在還原時(shí)可臨時(shí)關(guān)閉二進(jìn)制日志后再還原。
⑦有誤操作的,在開始還原增量備份之前,要去binlog備份文件把誤操作事件刪除
⑧正式開始還原增量備份
⑨重新啟動(dòng)二進(jìn)制日志并驗(yàn)證還原數(shù)據(jù)
附:Xtrabackup的“流”及“備份壓縮”功能
作用:Xtrabackup對(duì)備份的數(shù)據(jù)文件支持“流”功能,即可以將備份的數(shù)據(jù)通過STDOUT傳輸給tar程序進(jìn)行歸檔,而不是默認(rèn)的直接保存至某備份目錄中。
要使用此功能,僅需要使用--stream選項(xiàng)即可。如:
看不清截圖的可以看下面復(fù)制粘貼的命令:
# innobackupex --user=root --password="123456"--stream=tar /opt/mysqlbackup/full/ | gzip >/opt/mysqlbackup/full/full_`date+%F_%H%M%S`.tar.gz
(再補(bǔ)充一句,現(xiàn)實(shí)生產(chǎn)環(huán)境中,基本上都要用流與備份壓縮功能,因?yàn)檫@樣可以很大程度上節(jié)省空間)
當(dāng)前文章:DBA必知的mysql備份與還原的幾大方法
文章出自:http://chinadenli.net/article2/ppgeoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、、微信小程序、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站維護(hù)、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)