無(wú)標(biāo)題文章

普通文件方式

簡(jiǎn)單數(shù)據(jù)的導(dǎo)入和導(dǎo)出

編輯配置文件my.cnf添加如下配置項(xiàng)

[mysqld]

secure_file_priv = 保存到本地目錄

例如

secure_file_priv = /tmp

配置完成后需要重啟服務(wù)

本地目錄需要給mysql用戶授予讀寫權(quán)限

登錄到服務(wù)器,可以驗(yàn)證配置項(xiàng)是否生效

SELECT@@GLOBAL.secure_file_priv;或者SHOWVARIABLESLIKE"secure_file_priv";

假如沒(méi)有使用此配置項(xiàng),查詢到的值為NULL替裆。

mysql> SELECT @@GLOBAL.secure_file_priv;+---------------------------+| @@GLOBAL.secure_file_priv |+---------------------------+| NULL? ? ? ? ? ? ? ? ? ? ? |+---------------------------+1rowinset (0.00sec)

執(zhí)行下面的導(dǎo)入導(dǎo)出語(yǔ)句時(shí)就會(huì)報(bào)如下錯(cuò)誤

ERROR1290(HY000): The MySQL server is runningwiththe --secure-file-priv option so it cannot executethisstatement

導(dǎo)出

select *fromschool.classinto outfile"/tmp/class2.db";

導(dǎo)入

導(dǎo)入到數(shù)據(jù)文件中的列必須和表中的一一對(duì)應(yīng)。包含id列的值杯聚。

實(shí)例文件

5,云計(jì)算1809

6,云計(jì)算1901

7,云計(jì)算1902

導(dǎo)入語(yǔ)句

載入外部“形式整齊”的數(shù)據(jù)(csv 格式的文件,沒(méi)有域之家用逗號(hào)隔開(kāi)): load data infile'文件完整名(含路徑)'into table 表名fields terminated by'域分隔符'optionally? ? enclosed? by'"'ignore 1 lines;

optionally? ? enclosed? by '"' 用于識(shí)別域值的界定符

ignore 1 lines;? 忽略第一行

MySQL 邏輯備份 mysqldump

邏輯備份特點(diǎn)

備份的是建表抒痒、建庫(kù)幌绍、插入等操作所執(zhí)行SQL語(yǔ)句(DDL DML DCL),適用于中小型數(shù)據(jù)庫(kù)故响。

效率相對(duì)較低

在日常工作中傀广,我們會(huì)使用 mysqldump 命令創(chuàng)建SQL格式的轉(zhuǎn)儲(chǔ)文件來(lái)備份數(shù)據(jù)庫(kù)〔式欤或者我們把數(shù)據(jù)導(dǎo)出后做數(shù)據(jù)遷移伪冰,主從復(fù)制等操作。mysqldump是一個(gè)邏輯備份工具,復(fù)制原始的數(shù)據(jù)庫(kù)對(duì)象定義和表數(shù)據(jù)產(chǎn)生一組可執(zhí)行的SQL語(yǔ)句樟蠕。 默認(rèn)情況下,生成insert語(yǔ)句贮聂,也能生成其它分隔符的輸出或XML格式的文件靠柑。

特點(diǎn)

自動(dòng)記錄position位置。

show master? status\G;

可用性吓懈,一致性

鎖表機(jī)制

用法

mysqldump-h服務(wù)器-u用戶名-p密碼? 數(shù)據(jù)庫(kù)名? > 備份文件.sql/*查看幫助*/mysqldump--help

日常用法

備份所有庫(kù)

// 先配置用戶名和密碼shell> vi ~/.mysql_user[mysqldump]user=rootpassword=123shell> mysqldump --defaults-file=~/.mysql_user -h172.16.153.10 --all-databases > `date +%FT%H_%M_%S`dump_all.sql# 不包含 INFORMATION_SCHEMA,performance_schema,sys

備份指定的多個(gè)庫(kù)

// 為了考慮篇幅歼冰,請(qǐng)自行添加指定用戶名密碼參數(shù)和指定服務(wù)器的參數(shù)

// --defaults-file=~/.mysql_user -hip

shell> mysqldump --databases db1 db2 db3 > `date +%FT%H_%M_%S`dump_all.sql

備份指定庫(kù)的指定幾個(gè)表

shell>mysqldumpdb1t1t3t7>dump.sql

其他參數(shù)

--master-data=0|1|2

服務(wù)器的二進(jìn)制日志必須打開(kāi)

0? ? 不記錄二進(jìn)制日志文件及位置:

1? ? 以CHANGE MASTER TO 的方式記錄位置,可用于恢復(fù)后直接啟動(dòng)從服務(wù)器:

2? 以CHANGE MASTER TO 的方式記錄位置耻警,但默認(rèn)被注釋:

--dump-slave 用于在slave上dump數(shù)據(jù)隔嫡,建立新的slave。因?yàn)槲覀冊(cè)谑褂胢ysqldump時(shí)會(huì)鎖表甘穿,所以大多數(shù)情況下腮恩,我們的導(dǎo)出操作一般會(huì)在只讀備庫(kù)上做,為了獲取主庫(kù)的Relay_Master_Log_File(二進(jìn)制日志)和Exec_Master_Log_Pos(主服務(wù)器二進(jìn)制日志中數(shù)據(jù)所處的位置)温兼,需要用到這個(gè)參數(shù)庆揪,不過(guò)這個(gè)參數(shù)只有在5.7以后的才會(huì)有

--no-data, -d 不導(dǎo)出任何數(shù)據(jù),只導(dǎo)出數(shù)據(jù)庫(kù)表結(jié)構(gòu)

--lock-all-tables:鎖定所有表 對(duì)MyISAM引擎的表開(kāi)始備份前妨托,先鎖定所有表。

優(yōu)勢(shì)

mysqldump的優(yōu)勢(shì):

可以查看或者編輯十分方便吝羞,它也可以靈活性的恢復(fù)之前的數(shù)據(jù)兰伤。

不關(guān)心底層的存儲(chǔ)引擎,既適用于支持事務(wù)的钧排,也適用于不支持事務(wù)的表敦腔。

不過(guò)它不能作為一個(gè)快速備份大量的數(shù)據(jù)或可伸縮的解決方案。如果數(shù)據(jù)庫(kù)過(guò)大,即使備份步驟需要的時(shí)間不算太久,但有可能恢復(fù)數(shù)據(jù)的速度也會(huì)非常慢,因?yàn)樗婕暗腟QL語(yǔ)句插入磁盤I/O,創(chuàng)建索引等等恨溜。 對(duì)于大規(guī)模的備份和恢復(fù),更合適的做法是物理備份,復(fù)制其原始格式的數(shù)據(jù)文件,可以快速恢復(fù)符衔。

恢復(fù)

shell>mysql

或者,在mysql中糟袁,使用source命令:

mysql>sourcedump.sql

如果文件是不包含CREATE DATABASEUSE語(yǔ)句的單數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ) 判族,請(qǐng)首先創(chuàng)建數(shù)據(jù)庫(kù)(如有必要):

shell> mysqladmin create db1

然后在加載轉(zhuǎn)儲(chǔ)文件時(shí)指定數(shù)據(jù)庫(kù)名稱:

shell>mysqldb1

或者,在mysql中創(chuàng)建數(shù)據(jù)庫(kù)项戴,將其選為默認(rèn)數(shù)據(jù)庫(kù)形帮,然后加載轉(zhuǎn)儲(chǔ)文件:

mysql> CREATE DATABASEIFNOT EXISTS db1;mysql>USEdb1;mysql>source dump.sql

Example

shell> mysql --defaults-file=~/.mysql_user < /backup/2016-12-08-04-mysql-all.sql

MySQL 物理備份: Innobackupex 和 xtrabackup(熱備)

Percona XtraBackup是一款基于MySQL的熱備份的開(kāi)源實(shí)用程序,它可以備份5.1到5.7版本上InnoDB,XtraDB,MyISAM存儲(chǔ)引擎的表周叮, Xtrabackup有兩個(gè)主要的工具:xtrabackup辩撑、innobackupex 。

第一種安裝方式: 使用YUM方式安裝

地址

https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

確保安裝 EPEL 源

yum installhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

安裝libev

為了成功安裝Percona XtraBackup libev包需要先安裝仿耽。

yum? install -y libev

安裝Percona存儲(chǔ)庫(kù)

yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

測(cè)試存儲(chǔ)庫(kù)的可用性

shell> yumlist| grep percona

應(yīng)該輸出如下信息

...percona-xtrabackup-20.x86_642.0.8-587.rhel5percona-release-x86_64percona-xtrabackup-20-debuginfo.x86_642.0.8-587.rhel5percona-release-x86_64percona-xtrabackup-20-test.x86_642.0.8-587.rhel5percona-release-x86_64percona-xtrabackup-21.x86_642.1.9-746.rhel5percona-release-x86_64percona-xtrabackup-21-debuginfo.x86_642.1.9-746.rhel5percona-release-x86_64percona-xtrabackup-22.x86_642.2.13-1.el5percona-release-x86_64percona-xtrabackup-22-debuginfo.x86_642.2.13-1.el5percona-release-x86_64percona-xtrabackup-debuginfo.x86_642.3.5-1.el5percona-release-x86_64percona-xtrabackup-test.x86_642.3.5-1.el5percona-release-x86_64percona-xtrabackup-test-21.x86_642.1.9-746.rhel5percona-release-x86_64percona-xtrabackup-test-22.x86_642.2.13-1.el5percona-release-x86_64...

安裝軟件

shell> yum install percona-xtrabackup-24

驗(yàn)證安裝

image.png

第二種安裝方式:下載對(duì)應(yīng)版本的軟件包合冀,在本地安裝

點(diǎn)擊下載頁(yè)面,選擇對(duì)應(yīng)版本后進(jìn)行下載

image.png

示例:

下載2.4.4版本

wgethttps://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

安裝

yumlocalinstallpercona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

注意:像這樣手動(dòng)安裝軟件包時(shí)项贺,您需要確保解決所有依賴項(xiàng)并自行安裝缺少的軟件包君躺。

卸載

yum remove percona-xtrabackup

80 版本

注意:

這個(gè)版本只支持 MySQL8.0的數(shù)據(jù)進(jìn)行備份峭判,不支持 MySQL8.0版本之前的數(shù)據(jù)進(jìn)行備份。

# 安裝倉(cāng)庫(kù)文件yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm# 啟用倉(cāng)庫(kù)percona-releaseenable-only tools release#安裝軟件yum install percona-xtrabackup-80

報(bào)錯(cuò)解決

來(lái)自file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona 的無(wú)效 GPG 密鑰:No key foundingiven key data

或者

源"CentOS 7 - Percona"的 GPG 密鑰已安裝晰洒,但是不適用于此軟件包朝抖。請(qǐng)檢查源的公鑰 URL 是否配置正確。 失敗的軟件包是:Percona-Server-shared-56-5.6.43-rel84.3.el7.x86_64 GPG? 密鑰配置為:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona

修改倉(cāng)庫(kù)文件percona-release.repo不使用密鑰認(rèn)證

image.png

再次安裝會(huì)看到如下報(bào)錯(cuò)信息

Transaction check error:? file /etc/my.cnffrominstallofPercona-Server-shared-56-5.6.43-rel84.3.el7.x86_64 conflictswithfilefrompackage mysql-community-server-5.7.25-1.el7.x86_64錯(cuò)誤概要-------------

需要安裝如下軟件

yum install -y? mysql-community-libs-compat

注意:

這個(gè)軟件的源是mysql57-community

[mysql57-community]name=MySQL5.7Community Serverbaseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql文件內(nèi)容如下:

點(diǎn)我傳送門

再執(zhí)行安裝命令

yum install percona-xtrabackup-24

日常操作

條件:

在 MySQL 服務(wù)器本地安裝 Xtrbackup 并執(zhí)行相關(guān)操作谍珊。

給執(zhí)行備份到用戶進(jìn)行相應(yīng)的授權(quán)治宣。

配置選項(xiàng)

配置選項(xiàng)可以在sh命令行中直接使用,也可以在my.cnf文件中配置

# my.cnf 文件的配置[xtrabackup]target_dir = /backups/mysql/# 備份數(shù)據(jù)放置的位置

假如是編譯安裝的 mysql 砌滞,需要在配置文件my.cnf中指定 socket 文件的路徑侮邀。

[xtrabackup]socket =/tmp/mysql.sock

1. 全備

下面的命令均假設(shè)沒(méi)有在my.cnf中配置任何關(guān)于 xtrabackup 的選項(xiàng)

要執(zhí)行備份需要指定 備份數(shù)據(jù)放置的位置,就是目錄贝润,假如目錄不存在绊茧,則會(huì)自動(dòng)創(chuàng)建;==注意這個(gè)目錄不會(huì)被遞歸創(chuàng)建打掘,僅僅會(huì)創(chuàng)建最后一級(jí)目錄华畏;==假如存在,就會(huì)直接開(kāi)始備份尊蚁,并且不會(huì)覆蓋原來(lái)的數(shù)據(jù)亡笑。

開(kāi)始備份

shell> xtrabackup --backup --user=root --password='123'--target-dir=/backups/full# 備份完成后,可以看到備份時(shí)的LSN號(hào)横朋,當(dāng)下次進(jìn)行增量備份時(shí)仑乌,xtrabackup就只備份大于此號(hào)的page即可。

查看備份文件

[root@mysql-master ~]# ls -lh /backups/full總用量 13M-rw-r----- 1 root root? 487 8月? 18 09:44 backup-my.cnf-rw-r----- 1 root root? 293 8月? 18 09:44 ib_buffer_pool-rw-r----- 1 root root? 12M 8月? 18 09:44 ibdata1drwxr-x--- 2 root root 4.0K 8月? 18 09:44 mysqldrwxr-x--- 2 root root? 88 8月? 18 09:44 one_dbdrwxr-x--- 2 root root 8.0K 8月? 18 09:44 performance_schemadrwxr-x--- 2 root root? 58 8月? 18 09:44 shark_dbdrwxr-x--- 2 root root 8.0K 8月? 18 09:44 sys-rw-r----- 1 root root? 115 8月? 18 09:44 xtrabackup_checkpoints-rw-r----- 1 root root? 446 8月? 18 09:44 xtrabackup_info-rw-r----- 1 root root 2.5K 8月? 18 09:44 xtrabackup_logfile

進(jìn)入目錄后琴锭,可以看到一些目錄晰甚,這些目錄與我們數(shù)據(jù)庫(kù)的名稱相同,沒(méi)錯(cuò)决帖,這些就是各個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)文件備份目錄厕九。

還有一個(gè)innodb的共享表空間文件,ibdata1地回,注意止剖,如果想要使用xtrabackup備份眾多數(shù)據(jù)庫(kù)中的某一個(gè),那么必須保證在創(chuàng)建這個(gè)數(shù)據(jù)庫(kù)時(shí)落君,已經(jīng)開(kāi)啟了innodb_file_per_table參數(shù)穿香,否則將無(wú)法單獨(dú)備份數(shù)據(jù)庫(kù)服務(wù)器中的某一個(gè)數(shù)據(jù)庫(kù)。

除了剛才描述的這些數(shù)據(jù)文件绎速,xtrabackup還為我們生成了一些文件皮获,我們來(lái)看看這些文件都有什么用(不同版本的xtrabackup生成的文件可能不同)。

backup-my.cnf

此文件中包含了my.cnf中的一些設(shè)置信息纹冤,但是洒宝,并不是my.cnf中的所有信息都會(huì)包含在此文件中购公,此文件中只包含了備份時(shí)需要的信息。

xtrabackup_binlog_info

需要開(kāi)啟二進(jìn)制日志

此文件中記錄了備份開(kāi)始時(shí)二進(jìn)制日志文件的"位置(position)"

xtrabackup_checkpoints

此文件中記錄此次備份屬于那種類型的備份宏浩,是全量還是增量,備份時(shí)起始的LSN號(hào)碼靠瞎,結(jié)束的LSN號(hào)碼等信息神凑。

xtrabackup_info

本次備份的概要信息,此文件中的信息還是比較全面的何吝。

xtrabackup_logfile

記錄了備份過(guò)程中的日志溉委,在對(duì)數(shù)據(jù)進(jìn)行prepare時(shí)需要通過(guò)日志將數(shù)據(jù)還原成一致的可用的數(shù)據(jù)。

準(zhǔn)備恢復(fù)的數(shù)據(jù)

使用 xtrabackup --backup 選項(xiàng)進(jìn)行備份后爱榕,并不能直接使用瓣喊,首先需要準(zhǔn)備它以便還原它。

如果您嘗試使用這些數(shù)據(jù)文件啟動(dòng)InnoDB呆细,它將檢測(cè)損壞并自行崩潰,以防止您在損壞的數(shù)據(jù)上運(yùn)行八匠。

因?yàn)閭浞莩龅臄?shù)據(jù)是不一致的絮爷,我們需要將同時(shí)備份出的事務(wù)日志應(yīng)用到備份中,才能得到一份完整梨树、一致坑夯、可用的數(shù)據(jù),xtrabackup稱這一步操作為prepare抡四,直譯過(guò)來(lái)就是"準(zhǔn)備"柜蜈。

xtrabackup --prepare 步驟使文件在一個(gè)時(shí)刻完全一致

shell> xtrabackup --prepare --target-dir=/backups/full

如果你要備份的數(shù)據(jù)量巨大,那么備份時(shí)長(zhǎng)會(huì)變長(zhǎng)指巡,期間備份的事務(wù)日志容量有可能會(huì)很大。那么藻雪,我們可以使用--use-memory選項(xiàng)秘噪,加速準(zhǔn)備工作的完成,在不指定內(nèi)存大小的情況下勉耀,準(zhǔn)備工作默認(rèn)會(huì)占用100MB的內(nèi)存指煎,如果服務(wù)器有一定的空閑內(nèi)存蹋偏,那么我們可以讓xtrabackup使用指定大小的內(nèi)存完成準(zhǔn)備工作,以提升準(zhǔn)備工作完成的速度至壤,示例語(yǔ)句如下威始。

shell> xtrabackup --prepare --use-memory=512M --target-dir=/backups/full

==準(zhǔn)備備份時(shí)不建議中斷xtrabackup進(jìn)程,因?yàn)檫@可能會(huì)導(dǎo)致數(shù)據(jù)文件損壞像街,備份將無(wú)法使用黎棠。如果準(zhǔn)備過(guò)程中斷,則無(wú)法保證備份有效性宅广。==

準(zhǔn)備備份數(shù)據(jù)完成后葫掉,應(yīng)該會(huì)看到如下信息。

InnoDB: Starting shutdown...InnoDB: Shutdown completed;logsequence number 13596200180818 10:09:19 completed OK!

恢復(fù)

xtrabackup 在執(zhí)行copyback時(shí)會(huì)讀取數(shù)據(jù)庫(kù)的my.cnf中的配置跟狱,但是如果my.cnf中沒(méi)有配置datadir俭厚,那么--datadir選項(xiàng)必須存在,而且驶臊,datadir目錄必須為空目錄挪挤,其中不能存在數(shù)據(jù),否則在執(zhí)行上述命令時(shí)會(huì)報(bào)錯(cuò)关翎,--copy-back選項(xiàng)對(duì)應(yīng)的目錄就是我們準(zhǔn)備好的可用數(shù)據(jù)的目錄扛门。

為了能夠正常的恢復(fù)數(shù)據(jù),我們先確定數(shù)據(jù)庫(kù)服務(wù)已經(jīng)停止了纵寝,而且對(duì)應(yīng)的數(shù)據(jù)目錄中不存在數(shù)據(jù)论寨,然后進(jìn)行數(shù)據(jù)還原工作,刪除數(shù)據(jù)目錄中的文件與日志爽茴。

停止數(shù)據(jù)庫(kù)的服務(wù)

清理環(huán)境

修改權(quán)限

啟動(dòng)數(shù)據(jù)庫(kù)

shell> systemctl stop mysqld.serviceshell> rm -rf /var/lib/mysql/*shell> xtrabackup --copy-back --datadir=/var/lib/mysql --target-dir=/backups/full# 下面為完成后的輸出結(jié)果180818 10:59:25 [01]? ? ? ? ...done180818 10:59:25 completed OK!shell> chown? mysql.mysql -R /var/lib/mysql

或者使用rsync命令

shell> rsync -avrP /backup/ /var/lib/mysql/

shell> chown? mysql.mysql -R /var/lib/mysql

啟動(dòng)數(shù)據(jù)庫(kù)

shell> systemctl start mysqld.service

innobackuper 命令實(shí)現(xiàn)

shell> innobackupex --defaults-file=/etc/my.cnf --host=192.168.1.146 --user=root --password=123123 /backup

shell> nnobackupex --apply-log --use-memory=4G /backups/2018-08-17_15-53-11

shell> systemctl stop mysqld.service

shell> rm -rf /var/lib/mysql/*

shell> innobackupex --datadir=/var/lib/mysql --copy-back 2018-08-17_15-53-11

shell> chown? mysql.mysql -R /var/lib/mysql

shell> systemctl start mysqld.service

全量備份思路總結(jié)

執(zhí)行備份命令

指定 數(shù)據(jù)庫(kù)的用戶名和密碼

指定 備份目錄葬凳,注意只可以自動(dòng)創(chuàng)建最后一級(jí)的目錄

準(zhǔn)備備份的數(shù)據(jù)

就是指: --prepare 參數(shù), 保證數(shù)據(jù)的統(tǒng)一且完整性

停服務(wù),并且把 mysql 的數(shù)據(jù)目錄下的所有文件和文件夾清除室奏。

/var/lib/mysql/此目錄必須是空的

恢復(fù)數(shù)據(jù)

本質(zhì)上就是拷貝備份的文件到指定的 mysql 數(shù)據(jù)目錄下

修改 mysql 數(shù)據(jù)目錄的屬主和屬組為 MySQL 服務(wù)器進(jìn)程啟動(dòng)的用戶火焰,默認(rèn)是 mysql

啟動(dòng)服務(wù)

2. 增量備份

image.png

特點(diǎn):每次備份,都對(duì)自上一次備份(注意是上一次胧沫,不是第一次)到此時(shí)備份之間有變化的文件昌简,進(jìn)行備份。所 以備份體積小绒怨,備份速度快纯赎,但是恢復(fù)的時(shí)候,需要按備份時(shí)間順序南蹂,逐個(gè)備份版本進(jìn)行恢復(fù)址否,恢復(fù)時(shí)持續(xù)的時(shí)間長(zhǎng)。

無(wú)論xtrabackupinnobackupex工具支持增量備份,這意味著它們可以只復(fù)制自上次備份以來(lái)發(fā)生變化的數(shù)據(jù)佑附。

您可以在每個(gè)完整備份之間執(zhí)行許多增量備份樊诺,因此您可以設(shè)置備份過(guò)程,例如每周一次完整備份和每天增量備份音同,或每天完整備份和每小時(shí)增量備份词爬。

增量備份有效,因?yàn)槊總€(gè)InnoDB頁(yè)面都包含一個(gè)日志序列號(hào)或LSN权均。該LSN是整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的版本號(hào)顿膨。每個(gè)頁(yè)面的LSN顯示它最近的更改。

當(dāng)我們做過(guò)全量備份以后會(huì)在目錄下產(chǎn)生xtrabackup_checkpoints的文件 這里面記錄了lsn和備份方式叽赊,我們可以基于這次的全量做增量的備份恋沃。

shell> cat /backups/xtrabackup_checkpoints

backup_type = full-prepared

from_lsn = 0

to_lsn = 13593159

last_lsn = 13593168

compact = 0

recover_binlog_info = 0

增量備份實(shí)際上并不將數(shù)據(jù)文件與先前備份的數(shù)據(jù)文件進(jìn)行比較。事實(shí)上必指,如果你知道它的LSN囊咏,你可以使用xtrabackup --incremental-lsn來(lái)執(zhí)行增量備份,而不需要先前的備份塔橡。增量備份只是讀取頁(yè)面并將其LSN與最后一個(gè)備份的LSN進(jìn)行比較梅割。但是,您仍需要完整備份來(lái)恢復(fù)增量更改;如果沒(méi)有完整備份作為基礎(chǔ)葛家,增量備份將毫無(wú)用處户辞。

創(chuàng)建增量備份

要進(jìn)行增量備份,請(qǐng)像往常一樣以完整備份開(kāi)始, 使用下面的命令創(chuàng)建基礎(chǔ)的全量備份癞谒。

shell> xtrabackup --backup --user=root --password=123 --target-dir=/backups/base

現(xiàn)在您已擁有完整備份底燎,以后可以根據(jù)它進(jìn)行增量備份。

向數(shù)據(jù)庫(kù)中添加數(shù)據(jù)弹砚,以便于測(cè)試

mysql> select count(id) from shark_db.student;+-----------+| count(id) |+-----------+|? ? 99213 |+-----------+1rowinset (0.04sec)mysql> insert into shark_db.student (name,age,phone) values('xiguatian',20,13149876789);Query OK,1row affected (0.00sec)mysql> select count(id) from shark_db.student;+-----------+| count(id) |+-----------+|? ? 99214 |+-----------+1rowinset (0.03sec)

使用以下命令進(jìn)行增量備份:

shell> xtrabackup --backup --user=root --password=123 --target-dir=/backups/inc1 --incremental-basedir=/backups/base

該/data/backups/inc1/目錄現(xiàn)在應(yīng)包含增量文件

ls -lh /backups/inc1/

總用量 116K

-rw-r----- 1 root root? 487 8月? 18 11:40 backup-my.cnf

-rw-r----- 1 root root? 293 8月? 18 11:40 ib_buffer_pool

-rw-r----- 1 root root? 64K 8月? 18 11:40 ibdata1.delta

-rw-r----- 1 root root? 44 8月? 18 11:40 ibdata1.meta

drwxr-x--- 2 root root 4.0K 8月? 18 11:40 mysql

drwxr-x--- 2 root root? 144 8月? 18 11:40 one_db

drwxr-x--- 2 root root 8.0K 8月? 18 11:40 performance_schema

drwxr-x--- 2 root root? 88 8月? 18 11:40 shark_db

drwxr-x--- 2 root root 8.0K 8月? 18 11:40 sys

-rw-r----- 1 root root? 120 8月? 18 11:40 xtrabackup_checkpoints

-rw-r----- 1 root root? 498 8月? 18 11:40 xtrabackup_info

-rw-r----- 1 root root 2.5K 8月? 18 11:40 xtrabackup_logfile

這個(gè)時(shí)候去查看增量備份的xtrabackup_checkpoints,會(huì)發(fā)現(xiàn)同樣也記錄了LSN 等信息

shell> cat /backups/inc1/xtrabackup_checkpoints

backup_type = incremental

from_lsn = 13596423

to_lsn = 13596628

last_lsn = 13596637

compact = 0

recover_binlog_info = 0

// 這也意味著你可以在增量的備份上繼續(xù)增量的備份双仍。

from_lsn是備份的起始LSN,對(duì)于增量迅栅,它必須與前一個(gè)/基本備份的to_lsn(如果它是最后一個(gè)檢查點(diǎn))相同殊校。

上面的情況是晴玖,to_lsn(上一個(gè)檢查點(diǎn)LSN)和last_lsn(上次復(fù)制的LSN)之間存在差異读存,這意味著在備份過(guò)程中服務(wù)器上存在一些流量

模擬增加數(shù)據(jù)

mysql> insert into shark_db.student (name,age,phone) values('xiguatian3',21,13149876789);Query OK,1row affected (0.01sec)mysql> select count(id) from shark_db.student;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? +-----------+| count(id) |+-----------+|? ? 99215 |+-----------+1rowinset (0.03sec)

現(xiàn)在可以使用此目錄作為另一個(gè)增量備份的基礎(chǔ):

shell> xtrabackup --backup --user=root --password=123 --target-dir=/backups/inc2 --incremental-basedir=/backups/inc1

準(zhǔn)備增量備份的數(shù)據(jù)

增量備份的步驟與完全備份的步驟不同。在完全備份中呕屎,執(zhí)行兩種類型的操作以使數(shù)據(jù)庫(kù)保持一致:從日志文件中針對(duì)數(shù)據(jù)文件重播已提交的事務(wù)让簿,并回滾未提交的事務(wù)。在準(zhǔn)備增量備份時(shí)秀睛,必須跳過(guò)未提交事務(wù)的回滾尔当,因?yàn)閭浞輹r(shí)未提交的事務(wù)可能正在進(jìn)行中,并且很可能它們將在下一次增量備份中提交。您應(yīng)該使用該 選項(xiàng)來(lái)阻止回滾階段.

xtrabackup --apply-log-only

警告

如果不使用該 選項(xiàng)來(lái)阻止回滾階段椭迎,那么增量備份將毫無(wú)用處锐帜。回滾事務(wù)后畜号,無(wú)法應(yīng)用進(jìn)一步的增量備份缴阎。

要準(zhǔn)備數(shù)據(jù),需要從一開(kāi)始就準(zhǔn)備简软,現(xiàn)在回想一下我們都有那些備份

/backups/base

/backups/inc1

/backups/inc2

image.png

準(zhǔn)備基礎(chǔ)備份的數(shù)據(jù)

shell> xtrabackup --prepare --apply-log-only \--target-dir=/backups/base...省略...xtrabackup: starting shutdown with innodb_fast_shutdown = 1InnoDB: Starting shutdown...InnoDB: Shutdown completed;logsequence number 13596441InnoDB: Number of pools: 1180818 11:56:55 completed OK!

注意:

即使已跳過(guò)回滾階段蛮拔,此備份實(shí)際上也可以按原樣恢復(fù)。如果你恢復(fù)它并啟動(dòng)MySQL痹升,InnoDB將檢測(cè)到?jīng)]有執(zhí)行回滾階段建炫,它將在后臺(tái)執(zhí)行,因?yàn)樗ǔS糜趩?dòng)時(shí)的崩潰恢復(fù)疼蛾。它會(huì)通知您數(shù)據(jù)庫(kù)未正常關(guān)閉肛跌。

把第一次增量備份的數(shù)據(jù)合并到基礎(chǔ)備份的數(shù)據(jù)中

shell> xtrabackup? --prepare? --apply-log-only? --user=root --password=123? --target-dir=/backups/base? --incremental-dir=/backups/inc1

再把第二次增量備份的數(shù)據(jù)也合并到基礎(chǔ)備份的數(shù)據(jù)中

shell> xtrabackup --prepare --user=root --password=123? --target-dir=/backups/base? --incremental-dir=/backups/inc2

==注意: 最后一次操作不需要加--apply-log-only參數(shù)==

停止 MySQL 服務(wù),并刪除數(shù)據(jù)目錄和日志

shell> systemctl stop mysqld

shell> rm -rf /var/lib/mysql/*

開(kāi)始恢復(fù)合并后的全部數(shù)據(jù)的數(shù)據(jù)庫(kù)

shell> xtrabackup --copy-back? --datadir=/var/lib/mysql? --target-dir=/backups/base/

更改數(shù)據(jù)庫(kù)目錄的權(quán)限并啟動(dòng)數(shù)據(jù)庫(kù)

shell> chown mysql.mysql -R /var/lib/mysql

shell> systemctl start mysqld

關(guān)于加密備份据过、壓縮備份惋砂、部分備份

作者:xiguatian

鏈接:http://www.reibang.com/p/169f96c709b1

來(lái)源:簡(jiǎn)書

簡(jiǎn)書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處绳锅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末西饵,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鳞芙,更是在濱河造成了極大的恐慌眷柔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件原朝,死亡現(xiàn)場(chǎng)離奇詭異驯嘱,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)喳坠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門鞠评,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人壕鹉,你說(shuō)我怎么就攤上這事剃幌。” “怎么了晾浴?”我有些...
    開(kāi)封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵负乡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我脊凰,道長(zhǎng)抖棘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮切省,結(jié)果婚禮上最岗,老公的妹妹穿的比我還像新娘。我一直安慰自己朝捆,他們只是感情好仑性,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著右蹦,像睡著了一般诊杆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上何陆,一...
    開(kāi)封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天晨汹,我揣著相機(jī)與錄音,去河邊找鬼贷盲。 笑死淘这,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的巩剖。 我是一名探鬼主播铝穷,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼佳魔!你這毒婦竟也來(lái)了曙聂?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鞠鲜,失蹤者是張志新(化名)和其女友劉穎宁脊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體贤姆,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榆苞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了霞捡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坐漏。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖碧信,靈堂內(nèi)的尸體忽然破棺而出赊琳,到底是詐尸還是另有隱情,我是刑警寧澤音婶,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布慨畸,位于F島的核電站莱坎,受9級(jí)特大地震影響衣式,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一碴卧、第九天 我趴在偏房一處隱蔽的房頂上張望弱卡。 院中可真熱鬧,春花似錦住册、人聲如沸婶博。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)凡人。三九已至,卻和暖如春叹阔,著一層夾襖步出監(jiān)牢的瞬間挠轴,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工耳幢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岸晦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓睛藻,卻偏偏與公主長(zhǎng)得像启上,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子店印,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容