欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

xtrabackup備份恢復(fù)測試

測試準(zhǔn)備

成都創(chuàng)新互聯(lián)公司長期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為中方企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),中方網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

1、安裝xtrabackup工具

       以下測試安裝xtrabackup備份恢復(fù)工具的二進(jìn)制包,進(jìn)行測試。安裝的路徑為MySQL安裝路徑,本次測試mysql的安裝路徑為:/home/q/percona-server/。

tar -xzf percona-xtraback-2.0.0-x86-64.tar.gz

cp percona-xtrabackup-2.0.0/bin/* /home/q/percona-server/bin

2、創(chuàng)建備份用戶

       創(chuàng)建備份用戶backup@localhost,xtraback只能用于本地操作,故只授權(quán)本地操作。

GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO backup@localhost;

3、聲明PATH環(huán)境變量

       為xtrabackup備份恢復(fù)工具添加到PATH路徑中。

export PATH=$PATH:/home/q/percona-server/bin

4、創(chuàng)建測試庫

創(chuàng)建測試庫backup_test,測試表test。

mysql -uroot -S/tmp/mysql.sock -e'create database backup_test;'

mysql -uroot -S/tmp/mysql.sock -e'create table backup_test.test (id int);'

mysql -uroot -S/tmp/mysql.sock -e'insert into backup_test.test values(1),(2),(3),(4),(5);'

 

測試innodb

1、全備份測試

全備份測試主要通過測試以下幾個(gè)場景,對數(shù)據(jù)備份和恢復(fù)進(jìn)行驗(yàn)證。

1)備份全庫,恢復(fù)進(jìn)行測試。

進(jìn)行全庫備份:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup backup/

       關(guān)閉數(shù)據(jù)庫服務(wù):

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

刪除當(dāng)前數(shù)據(jù)文件:

rm -rf /home/q/percona-server/data/*

       恢復(fù)日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/

       恢復(fù)數(shù)據(jù)文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/

       數(shù)據(jù)驗(yàn)證:

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

 

測試結(jié)果:

       經(jīng)驗(yàn)證,備份恢復(fù)正確。

2)修改表結(jié)構(gòu),備份全庫,恢復(fù)進(jìn)行測試。

       修改數(shù)據(jù)庫表結(jié)構(gòu):

mysql -uroot -S/tmp/mysql.sock -e 'alter table backup_test.test add name varchar(20) default "null";'

進(jìn)行全庫備份:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup backup/

       關(guān)閉數(shù)據(jù)庫服務(wù):

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

刪除當(dāng)前數(shù)據(jù)文件:

rm -rf /home/q/percona-server/data/*

       恢復(fù)日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/

       恢復(fù)數(shù)據(jù)文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/

       數(shù)據(jù)驗(yàn)證:

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

 

測試結(jié)果:

       經(jīng)驗(yàn)證,備份恢復(fù)正確。

3)備份某個(gè)庫,恢復(fù)測試

       備份backup_test庫

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --user=backup backup/

關(guān)閉數(shù)據(jù)庫服務(wù):

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

修改當(dāng)前數(shù)據(jù)文件:

mv /home/q/percona-server/data /home/q/percona-server/databak

mkdir /home/q/percona-server/data

       恢復(fù)日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --database=backup_test --user=backup backup/

       恢復(fù)數(shù)據(jù)文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --database=backup_test --user=backup backup/

cp /home/q/percona-server/databak/* /home/q/percona-server/data(僅拷貝不在data中的文件)

       數(shù)據(jù)驗(yàn)證:

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

 

測試結(jié)果:

       經(jīng)驗(yàn)證,備份單個(gè)庫沒有問題。存在的不足是,恢復(fù)的時(shí)候,數(shù)據(jù)目錄必須為空。也就是說,在恢復(fù)階段,需要將現(xiàn)有的數(shù)據(jù)目錄改名為臨時(shí)目錄;在恢復(fù)之后,將原數(shù)據(jù)目錄(現(xiàn)臨時(shí)目錄)下的其他庫的內(nèi)容拷貝到數(shù)據(jù)目錄下即可。

4)備份單個(gè)表,恢復(fù)測試

備份backup_test庫

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test --user=backup backup/

關(guān)閉數(shù)據(jù)庫服務(wù):

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

修改當(dāng)前數(shù)據(jù)文件:

mv /home/q/percona-server/data /home/q/percona-server/databak

mkdir /home/q/percona-server/data

       恢復(fù)日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/

       恢復(fù)數(shù)據(jù)文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/

       數(shù)據(jù)驗(yàn)證:

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

 

測試結(jié)果:

       經(jīng)驗(yàn)證,備份單個(gè)表沒有問題。存在的不足是,恢復(fù)的時(shí)候,數(shù)據(jù)目錄必須為空。也就是說,在恢復(fù)階段,需要將現(xiàn)有的數(shù)據(jù)目錄改名為臨時(shí)目錄;在恢復(fù)之后,將原數(shù)據(jù)目錄(現(xiàn)臨時(shí)目錄)下的其他庫的內(nèi)容拷貝到數(shù)據(jù)目錄下即可。

5)innodb_file_per_table參數(shù)驗(yàn)證

       修改配置文件

在配置文件中添加innodb_file_per_table配置參數(shù)。

       重啟數(shù)據(jù)庫server

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

創(chuàng)建測試庫backup_test

mysql -uroot -S/tmp/mysql.sock -e'create database backup_test;'

mysql -uroot -S/tmp/mysql.sock -e'create table backup_test.test (id int);'

mysql -uroot -S/tmp/mysql.sock -e'insert into backup_test.test values(1),(2),(3),(4),(5);'

備份backup_test庫

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test --user=backup backup/

關(guān)閉數(shù)據(jù)庫服務(wù):

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

修改當(dāng)前數(shù)據(jù)文件:

mv /home/q/percona-server/data /home/q/percona-server/databak

mkdir /home/q/percona-server/data

       恢復(fù)日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/

       恢復(fù)數(shù)據(jù)文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/

       數(shù)據(jù)驗(yàn)證:

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

 

測試結(jié)果:

       經(jīng)驗(yàn)證,備份單個(gè)庫沒有問題。存在的不足是,恢復(fù)的時(shí)候,數(shù)據(jù)目錄必須為空。也就是說,在恢復(fù)階段,需要將現(xiàn)有的數(shù)據(jù)目錄改名為臨時(shí)目錄;在恢復(fù)之后,將原數(shù)據(jù)目錄(現(xiàn)臨時(shí)目錄)下的其他庫的內(nèi)容拷貝到數(shù)據(jù)目錄下即可。

2、增量備份測試

增量備份測試主要通過測試以下幾個(gè)場景,對數(shù)據(jù)備份和恢復(fù)進(jìn)行驗(yàn)證。

1)全庫備份,創(chuàng)建數(shù)據(jù)庫,增量備份,恢復(fù)測試

       全庫備份

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup backup/

       創(chuàng)建數(shù)據(jù)庫

mysql -uroot -S/tmp/mysql.sock -e'create database backup_test_tmp;'

mysql -uroot -S/tmp/mysql.sock -e'create table backup_test_tmp.test (id int);'

mysql -uroot -S/tmp/mysql.sock -e'insert into backup_test_tmp.test values(1),(2),(3),(4),(5);'

       增量備份

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --incremental --incremental-basedir=backup/ backup/

關(guān)閉數(shù)據(jù)庫服務(wù):

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

刪除當(dāng)前數(shù)據(jù)文件:

rm -rf /home/q/percona-server/data/*

       恢復(fù)全備份日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/

       恢復(fù)增量備份日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ --incremental-dir=backup/

       恢復(fù)增量備份數(shù)據(jù)文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/

數(shù)據(jù)驗(yàn)證:

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test_tmp.test;'

測試結(jié)果:

       經(jīng)驗(yàn)證,備份恢復(fù)正確。

2)全庫備份,修改數(shù)據(jù)表結(jié)構(gòu),增量備份,恢復(fù)測試

       全庫備份

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup backup/

       修改數(shù)據(jù)表結(jié)構(gòu)

mysql -uroot -S/tmp/mysql.sock -e 'alter table backup_test.test add email varchar(20) default "null";'

       增量備份

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --incremental --incremental-basedir=backup/ backup/

關(guān)閉數(shù)據(jù)庫服務(wù):

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

刪除當(dāng)前數(shù)據(jù)文件:

rm -rf /home/q/percona-server/data/*

       恢復(fù)全備份日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/

       恢復(fù)增量備份日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ --incremental-dir=backup/

       恢復(fù)增量備份數(shù)據(jù)文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/

數(shù)據(jù)驗(yàn)證:

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

 

測試結(jié)果:

       經(jīng)驗(yàn)證,增量備份沒有問題。存在的不足是,恢復(fù)的時(shí)候,首先數(shù)據(jù)目錄必須為空,其次,恢復(fù)的時(shí)候需要單獨(dú)拷貝增量備份的表結(jié)構(gòu)。也就是說,在恢復(fù)階段,需要將數(shù)據(jù)目錄清空;數(shù)據(jù)恢復(fù)后,需要單獨(dú)拷貝增量備份文件夾下的表結(jié)構(gòu)。

3)全庫備份,創(chuàng)建數(shù)據(jù)庫,增量備份,修改表結(jié)構(gòu),增量備份,恢復(fù)測試

       全庫備份

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup backup/

創(chuàng)建數(shù)據(jù)庫

mysql -uroot -S/tmp/mysql.sock -e'create database backup_test_tmp;'

mysql -uroot -S/tmp/mysql.sock -e'create table backup_test_tmp.test (id int);'

mysql -uroot -S/tmp/mysql.sock -e'insert into backup_test_tmp.test values(1),(2),(3),(4),(5);'

       增量備份

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --incremental --incremental-basedir=backup/ backup/

修改數(shù)據(jù)表結(jié)構(gòu)

mysql -uroot -S/tmp/mysql.sock -e 'alter table backup_test.test add email varchar(20) default "null";'

       增量備份

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --incremental --incremental-basedir=backup/ backup/

關(guān)閉數(shù)據(jù)庫服務(wù):

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

刪除當(dāng)前數(shù)據(jù)文件:

rm -rf /home/q/percona-server/data/*

       恢復(fù)全備份日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/

       恢復(fù)增量備份1日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ --incremental-dir=backup/

恢復(fù)增量備份2日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --apply-log --user=backup backup/ --incremental-dir=backup/

       恢復(fù)增量備份數(shù)據(jù)文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --copy-back --user=backup backup/

數(shù)據(jù)驗(yàn)證:

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

 

測試結(jié)果:

       經(jīng)驗(yàn)證,增量備份沒有問題。存在的不足是,恢復(fù)的時(shí)候,首先數(shù)據(jù)目錄必須為空,其次,恢復(fù)的時(shí)候需要單獨(dú)拷貝最后一次增量備份的表結(jié)構(gòu)。也就是說,在恢復(fù)階段,需要將數(shù)據(jù)目錄清空;數(shù)據(jù)恢復(fù)后,需要單獨(dú)拷貝最后一次增量備份文件夾下的表結(jié)構(gòu)。

4)全備份某庫,修改庫,增量備份,恢復(fù)測試

       全備份某庫

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --database=backup_test backup/

       修改庫

mysql -uroot -S/tmp/mysql.sock -e 'alter table backup_test.test add address varchar(20) default "null";'

       增量備份

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --database=backup_test --incremental --incremental-basedir=backup/ backup/

關(guān)閉數(shù)據(jù)庫服務(wù):

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

刪除當(dāng)前數(shù)據(jù)文件:

rm -rf /home/q/percona-server/data/backup_test/*

       恢復(fù)全備份日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --apply-log --user=backup backup/

       恢復(fù)增量備份日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --apply-log --user=backup backup/ --incremental-dir=backup/

       恢復(fù)增量備份數(shù)據(jù)文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --copy-back --user=backup backup/

數(shù)據(jù)驗(yàn)證:

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

 

測試結(jié)果:

       經(jīng)驗(yàn)證,增量備份沒有問題。存在的不足是,恢復(fù)的時(shí)候,首先數(shù)據(jù)目錄必須為空,其次,恢復(fù)的時(shí)候需要單獨(dú)拷貝增量備份的表結(jié)構(gòu)。也就是說,在恢復(fù)階段,需要將現(xiàn)有的數(shù)據(jù)目錄改名為臨時(shí)目錄;在恢復(fù)之后,將原數(shù)據(jù)目錄(現(xiàn)臨時(shí)目錄)下的其他庫的內(nèi)容拷貝到數(shù)據(jù)目錄下即可。數(shù)據(jù)恢復(fù)后,還需要單獨(dú)拷貝增量備份文件夾下的表結(jié)構(gòu)。

5)innodb_file_per_table參數(shù)驗(yàn)證

       修改配置文件

在配置文件中添加innodb_file_per_table配置參數(shù)。

       重啟數(shù)據(jù)庫server

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

創(chuàng)建測試庫backup_test

mysql -uroot -S/tmp/mysql.sock -e'create database backup_test;'

mysql -uroot -S/tmp/mysql.sock -e'create table backup_test.test (id int);'

mysql -uroot -S/tmp/mysql.sock -e'insert into backup_test.test values(1),(2),(3),(4),(5);'

備份backup_test庫

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test --user=backup backup/

修改庫

mysql -uroot -S/tmp/mysql.sock -e 'alter table backup_test.test add phone varchar(20) default "null";'

       增量備份

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --database=backup_test --incremental --incremental-basedir=backup/ backup/

關(guān)閉數(shù)據(jù)庫服務(wù):

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

刪除當(dāng)前數(shù)據(jù)文件:

rm -rf /home/q/percona-server/data/backup_test/*

       恢復(fù)全備份日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --apply-log --user=backup backup/

       恢復(fù)增量備份日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --apply-log --user=backup backup/ --incremental-dir=backup/

       恢復(fù)增量備份數(shù)據(jù)文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test --copy-back --user=backup backup/

數(shù)據(jù)驗(yàn)證:

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test;'

 

測試結(jié)果:

       經(jīng)驗(yàn)證,增量備份沒有問題。存在的不足是,恢復(fù)的時(shí)候,首先數(shù)據(jù)目錄必須為空,其次,恢復(fù)的時(shí)候需要單獨(dú)拷貝增量備份的表結(jié)構(gòu)。也就是說,在恢復(fù)階段,需要將現(xiàn)有的數(shù)據(jù)目錄改名為臨時(shí)目錄;在恢復(fù)之后,將原數(shù)據(jù)目錄(現(xiàn)臨時(shí)目錄)下的其他庫的內(nèi)容拷貝到數(shù)據(jù)目錄下即可。數(shù)據(jù)恢復(fù)后,還需要單獨(dú)拷貝增量備份文件夾下的表結(jié)構(gòu)。

3、差分備份測試

       差分備份實(shí)際是一次增量備份操作,該過程包含在增量備份測試中,再次不再重復(fù)測試。

 

測試myisam

1、全備份測試

       創(chuàng)建myisam數(shù)據(jù)表

mysql -uroot -S/tmp/mysql.sock -e'create table backup_test.test_myisam (id int) engine=myisam;'

mysql -uroot -S/tmp/mysql.sock -e'insert into backup_test.test_myisam values(1),(2),(3),(4),(5);'

       全備份數(shù)據(jù)表

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --database=backup_test.test_myisam backup/

關(guān)閉數(shù)據(jù)庫服務(wù):

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

刪除當(dāng)前數(shù)據(jù)文件:

rm -rf /home/q/percona-server/data/backup_test/test_myisam*

       恢復(fù)日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test_myisam --apply-log --user=backup backup/

       恢復(fù)數(shù)據(jù)文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test_myisam --copy-back --user=backup backup/

數(shù)據(jù)驗(yàn)證:

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test_myisam;'

 

測試結(jié)果:

       經(jīng)驗(yàn)證,備份恢復(fù)正確。

2、增量備份測試

全備份數(shù)據(jù)表

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --database=backup_test.test_myisam backup/

修改數(shù)據(jù)表結(jié)構(gòu)

mysql -uroot -S/tmp/mysql.sock -e 'alter table backup_test.test_myisam add name varchar(20) default "null";'

       增量備份

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --user=backup --database=backup_test.test_myisam --incremental --incremental-basedir=backup/backup/

關(guān)閉數(shù)據(jù)庫服務(wù):

kill -9 $(ps -ef|grep "mysql"|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

刪除當(dāng)前數(shù)據(jù)文件:

rm -rf /home/q/percona-server/data/backup_test/test_myisam*

       恢復(fù)全備份日志文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test_myisam --apply-log --user=backup backup/

       恢復(fù)增量備份日志文件

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test_myisam --apply-log --user=backup backup/ --incremental-dir=backup/

       恢復(fù)數(shù)據(jù)文件:

innobackupex --defaults-file=/home/q/percona-server/etc/my.cnf --database=backup_test.test_myisam --copy-back --user=backup backup/

數(shù)據(jù)驗(yàn)證:

mysqld_safe --defaults-file=/home/q/percona-server/etc/my.cnf &

mysql -uroot -S/tmp/mysql.sock -e'select * from backup_test.test_myisam;'

 

測試結(jié)果:

       經(jīng)驗(yàn)證,備份恢復(fù)正確。

3、差分備份測試

差分備份實(shí)際是一次增量備份操作,該過程包含在增量備份測試中,再次不再重復(fù)測試。

 

測試總結(jié)

設(shè)置以上場景,經(jīng)測試,發(fā)現(xiàn)xtrabackup備份恢復(fù)工具仍然存在一些潛在的問題,但是這些問題完全可以通過規(guī)避或者完善腳本的方式,來改進(jìn)和避免存在的問題。

 

實(shí)現(xiàn)原理

對于InnoDB,XtraBackup基于InnoDB的crash-recovery功能進(jìn)行備份。

crash-recovery是這樣的:InnoDB維護(hù)了一個(gè)redo log,又稱為 transaction log,也叫事務(wù)日志,它包含了InnoDB數(shù)據(jù)的所有改動情況。InnoDB啟動的時(shí)候先去檢查datafile和transaction log,然后應(yīng)用所有已提交的事務(wù)并回滾所有未提交的事務(wù)。

XtraBackup在備份的時(shí)候并不鎖定表,而是一頁一頁地復(fù)制InnoDB的數(shù)據(jù),與此同時(shí),XtraBackup還有另外一個(gè)線程監(jiān)視著transactions log,一旦log發(fā)生變化,就把變化過的log pages復(fù)制走(因?yàn)閠ransactions log文件大小有限,寫滿之后,就會從頭再開始寫,新數(shù)據(jù)可能會覆蓋到舊的數(shù)據(jù),所以一旦變化就要立刻復(fù)制走)。在全部數(shù)據(jù)文件復(fù)制完成之后,停止復(fù)制logfile。

XtraBackup采用了其內(nèi)置的InnoDB庫以read-write模式打開InnoDB的數(shù)據(jù)文件,然后每次讀寫1MB(1MB/16KB=64page)的數(shù)據(jù),一頁一頁地遍歷,同時(shí)用InnoDB的buf_page_is_corrupted()函數(shù)檢查此頁的數(shù)據(jù)是否正常,如果正常則進(jìn)行復(fù)制,如不正常則重新讀取,最多重讀10次,如果還是失敗,則備份失敗退出。復(fù)制transactions log的原理也是一樣的,只不過每次讀寫512KB(512KB/16KB=32page)的數(shù)據(jù)。

由于XtraBackup其內(nèi)置的InnoDB庫打開文件的時(shí)候是rw的,所以運(yùn)行XtraBackup的用戶,必須對InnoDB的數(shù)據(jù)文件具有讀寫權(quán)限。

由于XtraBackup要從文件系統(tǒng)中復(fù)制大量的數(shù)據(jù),所以它盡可能地使用posix_fadvise(),來告訴OS不要緩存讀取到的數(shù)據(jù)(因?yàn)檫@些數(shù)據(jù)不會重用到了),從而提升性能。如果要緩存的話,大量的數(shù)據(jù)會對OS的虛擬內(nèi)存造成很大的壓力,其它進(jìn)程(如mysqld)很有可能會被swap出去,這樣就出問題了。同時(shí),XtraBackup在讀取數(shù)據(jù)的時(shí)候還盡可能地預(yù)讀。

由于不鎖表,所以復(fù)制出來的數(shù)據(jù)是不一致的,數(shù)據(jù)的一致性是在恢復(fù)的時(shí)候使用crash-recovery進(jìn)行實(shí)現(xiàn)的。

對于MyISAM,XtraBackup還是首先鎖定所有的表,然后復(fù)制所有文件。

 

應(yīng)用場景

       基于以上原理,xtrabackup備份恢復(fù)工具比較適合數(shù)據(jù)增長型數(shù)據(jù)庫。對于數(shù)據(jù)增長型的庫,由于數(shù)據(jù)的增長導(dǎo)致數(shù)據(jù)備份和恢復(fù)的空間和時(shí)間上的壓力較大。而xtrabackup有增量備份的功能,在短時(shí)間內(nèi)可以通過進(jìn)行增量備份來保證數(shù)據(jù)的安全性。而長期來看,仍然需要間斷性的進(jìn)行全庫備份。此外,由于xtrabackup對innodb的數(shù)據(jù)庫不進(jìn)行鎖定,因此對要求不影響線上服務(wù)的數(shù)據(jù)備份和恢復(fù)較適合。

       而對于數(shù)據(jù)量無明顯增長,且更新為主的數(shù)據(jù)更新型數(shù)據(jù)庫,xtrabackup顯得過于復(fù)雜。xtrabackup操作反而不如mysqldump的性能高。

 

建議

       通過以上測試,有以下建議,供DBA參考:

1、改進(jìn)和完善innobackupex腳本,或者編寫備份恢復(fù)腳本。避免備份中存在的不足和可能出現(xiàn)的問題

新聞名稱:xtrabackup備份恢復(fù)測試
文章出自:http://aaarwkj.com/article42/jeggec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、自適應(yīng)網(wǎng)站標(biāo)簽優(yōu)化、企業(yè)建站、靜態(tài)網(wǎng)站做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
内射性感黑丝少妇av| 日韩一区二区三精品| 清纯唯美校园春色亚洲激情 | 国产三级久久精品三级91| 日韩欧美国产麻豆91在线精品| 中文字幕精品一区二区介绍| 日本一级黄色影视大全| 婷婷五五月深爱开心激情| 情侣自拍偷拍亚洲天堂区| 国产亚洲欧美另类网爆| 亚洲人妻一区二区三区久久精品| 午夜福利激情视频在线| 国产精品一区波多野结衣| 日韩中文字幕综合不卡| 欧美精品一区二区三区黄片| 国产成人综合亚洲不卡| 欧美亚洲国产日韩另类| 97视频精品免费观看| 欧美成人精品欧美一级黄片| 搡老女人老91妇女老熟女| 日本新任女教师在线播放| 欧洲亚洲国产一区二区| 国产高清在线不卡一区| av在线中文字幕乱码| 亚洲成人午夜激情的三级网| 国产精品v一区二区三区| sedoge在线播放免费有码| 国产日韩亚洲欧美精品专区 | 福利av一区二区三区| 久久国产精品乱码电影| 国产精品一区二区三区播放| 亚洲精品福利在线视频| 免费av不卡一区二区| 日本一级黄色影视大全| 中文字幕一区二区不卡顿| 久久精品国产亚洲av无| 国产黄色免费精品网站| 双高干文男女主都很强| 国产自拍在线视频精品| 亚洲男人天堂中文字幕| 一级片欧美女人性生活片|