欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

DBA必知的mysql備份與還原的幾大方法

博主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)制文件的索引。

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

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)空。

DBA必知的mysql備份與還原的幾大方法

②重新開始一個(gè)新的日志文件

DBA必知的mysql備份與還原的幾大方法

③查看MySQL Server上的二進(jìn)制日志

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

查看指定的二進(jìn)制日志中的事件:

DBA必知的mysql備份與還原的幾大方法

該命令還包含其他選項(xiàng)以便靈活查看:

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

總結(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è)。

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

說明:無論是本地二進(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é)果如下:

DBA必知的mysql備份與還原的幾大方法

圖片看不清楚的可以看下面復(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文件。

DBA必知的mysql備份與還原的幾大方法

③刪除bdqn數(shù)據(jù)庫(刪除bdqn和恢復(fù)數(shù)據(jù)之前,要關(guān)閉binlog功能)

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

④利用binlog恢復(fù)數(shù)據(jù)

DBA必知的mysql備份與還原的幾大方法

⑤恢復(fù)完成后,我們檢查下表的數(shù)據(jù)是否完整

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

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ù)

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

2)創(chuàng)建備份目錄

DBA必知的mysql備份與還原的幾大方法

3)創(chuàng)建實(shí)驗(yàn)數(shù)據(jù)

DBA必知的mysql備份與還原的幾大方法

4)開始全庫備份(注意:全庫備份不會(huì)備份binlog日志文件)

DBA必知的mysql備份與還原的幾大方法

5)備份mysqldump全庫備份之前的所有的binlog日志文件(注意:真是生產(chǎn)環(huán)境中可能不止一個(gè)binlog文件)

DBA必知的mysql備份與還原的幾大方法

6)因?yàn)槿珟靷浞葜暗腷inlog已經(jīng)備份了,現(xiàn)在就刪除它們(即新產(chǎn)生的binlog之前的所有的binlog刪除)

DBA必知的mysql備份與還原的幾大方法

7)模擬誤操作,刪除了數(shù)據(jù),并且新增加了新的數(shù)據(jù)

DBA必知的mysql備份與還原的幾大方法

8)備份自mysqldump之后的binlog日志文件

DBA必知的mysql備份與還原的幾大方法

9)使用mysqldump的全庫備份+binlog來恢復(fù)數(shù)據(jù)

①使用mysqldump的備份進(jìn)行全庫恢復(fù)(即恢復(fù)到全部備份時(shí)候的所有數(shù)據(jù))

DBA必知的mysql備份與還原的幾大方法

②分析新開啟的binlog日志文件(我這里是mysql-bin.000002)里面誤操作的事件的起始位置和終止位置,只要跳過這一段事件即可

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

圖片看不清楚的可以看下面復(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ù)

DBA必知的mysql備份與還原的幾大方法

10)查看恢復(fù)結(jié)果

DBA必知的mysql備份與還原的幾大方法

總結(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í)行備份腳本:

DBA必知的mysql備份與還原的幾大方法

2)編寫mysqlfullbackup.sh腳本(即mysql全庫備份腳本)

DBA必知的mysql備份與還原的幾大方法

DBA必知的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增量備份腳本)

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

DBA必知的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è)試:

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

安裝libmysqlclient.so.18

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

再次測(cè)試:

DBA必知的mysql備份與還原的幾大方法

二、  使用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)解壓

DBA必知的mysql備份與還原的幾大方法

3)進(jìn)入解壓目錄

DBA必知的mysql備份與還原的幾大方法

4)復(fù)制bin下的所有程序到/usr/bin

DBA必知的mysql備份與還原的幾大方法

說明: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)插件

DBA必知的mysql備份與還原的幾大方法

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ù)

DBA必知的mysql備份與還原的幾大方法

2)創(chuàng)建備份用的目錄(full:全備存放的目錄;inc:增量備份存放的目錄)

DBA必知的mysql備份與還原的幾大方法

3)創(chuàng)建實(shí)驗(yàn)用數(shù)據(jù)庫、表、以及添加實(shí)驗(yàn)數(shù)據(jù)

DBA必知的mysql備份與還原的幾大方法

4)開始完全備份

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

5)我們可以看一下備份后的文件

DBA必知的mysql備份與還原的幾大方法

說明: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è)文件的說明:

DBA必知的mysql備份與還原的幾大方法

下面我們護(hù)體看一下這幾個(gè)文件:

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

說明:xtrabackup_binlog_pos_innodb和xtrabackup_binary在這個(gè)版本里面沒有了,因?yàn)榘姹据^新,這兩個(gè)文件在新版給刪除了,只存在于老版本。

DBA必知的mysql備份與還原的幾大方法

6)至此完全備份成功,然后我們開啟一個(gè)新的binlog日志文件,并向mysql某個(gè)庫插入幾條數(shù)據(jù)。

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

7)模擬誤操作,刪除一條數(shù)據(jù),同時(shí)再插入兩條新數(shù)據(jù)

DBA必知的mysql備份與還原的幾大方法

8)開始增量備份binlog日志文件

DBA必知的mysql備份與還原的幾大方法

9)開始還原數(shù)據(jù)庫

①模擬數(shù)據(jù)庫損壞

我這里直接使用刪除數(shù)據(jù)目錄文件來模擬損壞。

DBA必知的mysql備份與還原的幾大方法

②然后首先是還原完全備份,準(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ù)庫中:

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

說明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)信息。

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

④修改data目錄的屬組和屬組為mysql:mysql,并重啟mysqld服務(wù)。

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

⑤驗(yàn)證還原后的數(shù)據(jù)

DBA必知的mysql備份與還原的幾大方法

⑥開始還原增量備份,但在此之前為了防止還原時(shí)產(chǎn)生大量的二進(jìn)制日志,在還原時(shí)可臨時(shí)關(guān)閉二進(jìn)制日志后再還原。

DBA必知的mysql備份與還原的幾大方法

⑦有誤操作的,在開始還原增量備份之前,要去binlog備份文件把誤操作事件刪除

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

⑧正式開始還原增量備份

DBA必知的mysql備份與還原的幾大方法

DBA必知的mysql備份與還原的幾大方法

⑨重新啟動(dòng)二進(jìn)制日志并驗(yàn)證還原數(shù)據(jù)

DBA必知的mysql備份與還原的幾大方法

附:Xtrabackup的“流”及“備份壓縮”功能

作用:Xtrabackup對(duì)備份的數(shù)據(jù)文件支持“流”功能,即可以將備份的數(shù)據(jù)通過STDOUT傳輸給tar程序進(jìn)行歸檔,而不是默認(rèn)的直接保存至某備份目錄中。

要使用此功能,僅需要使用--stream選項(xiàng)即可。如:

DBA必知的mysql備份與還原的幾大方法

看不清截圖的可以看下面復(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)

外貿(mào)網(wǎng)站制作