Mysql數(shù)據(jù)庫(kù)的備份和還原

2017年2月23日12:08:16 發(fā)表評(píng)論 3,896 ℃

MySQL備份和還原

備份:副本

Raid1,Raid10:保證硬件損壞而不會(huì)業(yè)務(wù)中止

備份類型:

熱備份:讀、寫不受影響

溫備份:僅可以執(zhí)行讀操作

冷備份:離線備份,讀、寫操作均中止

物理備份:復(fù)制數(shù)據(jù)文件

邏輯備份:將數(shù)據(jù)導(dǎo)出至文本文件中

完全備份:備份全部數(shù)據(jù)

增量備份:僅備份上次完全備份或增量備份以后變化的數(shù)據(jù)

差異備份:僅備份上次完全備份以來(lái)變化的數(shù)據(jù)

在線:物理完全備份

備份:數(shù)據(jù)、配置文件、日志、事務(wù)日志

MyISAM:溫備份

InnoDB:xtrabackup,mysaldump

物理備份:速度快

邏輯備份:速度慢、丟失浮點(diǎn)精度,方便使用文本處理工具直接對(duì)其處理,可移植能力強(qiáng)

備份策略:完全+增量;完全+差異

每周完全+每日增量

完全備份:mysqldump

增量備份:備份二進(jìn)制日志文件(flush logs)

MySQL備份工具:

mysqldump:邏輯備份工具、MyISAM(溫)、InnoDB(熱備份)

mysqlhotcopy:物理備份工具、溫備份

文件系統(tǒng)工具:

cp:冷備份

lv:邏輯卷的快照功能,幾乎熱備

mysql>flush tables;

mysql>lock tables

創(chuàng)建快照:釋放鎖,而后復(fù)制數(shù)據(jù)

第三組工具:

ibbackup:商業(yè)工具

xtrabackup:開(kāi)源工具

mysqldump :邏輯備份

備份單個(gè)數(shù)據(jù)庫(kù),或庫(kù)中特定表

mysqldump DB_NAME [tb1] [tb2]

--master-data={0|1|2}

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

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

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

--lock-all-tables :鎖定所有表

--flush-logs:執(zhí)行日志flush

--single-transaction啟動(dòng)熱備(指定的數(shù)據(jù)庫(kù)中的表類型為InnoDB)

--all-databases:備份所有庫(kù)

--databases DB_NAME,DB_NAME2,...:備份指定庫(kù)

--events :備份事件

--routines:備份存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)

--triggers:備份觸發(fā)器

mysqldump(完全備份)+二進(jìn)制日志文件

完全+增量

mysqldump --master-data=2 --lock-all-tables --flush-logs --databases DB_NAME >/mysqlback/db_nam-date

備份

select * into outfile '/path/to/somefile.txt' from tb_name [where clause];

還原

load data infile '/path/to/somefile.txt' into table tb_name;

使用lvm快照進(jìn)行數(shù)據(jù)庫(kù)備份

前提:

1、數(shù)據(jù)文件要在邏輯卷上

2、此邏輯卷所在卷組必須有足夠空間使用快照卷

3、數(shù)據(jù)文件和事務(wù)日志要在同一個(gè)邏輯卷上

步驟:

1、打開(kāi)會(huì)話,施加讀鎖,鎖定所有表;

mysql> FLUSH TABLES WITH READ LOCK;

mysql> FLUSH LOGS;

2、通過(guò)另一個(gè)終端,保存二進(jìn)制日志文件及相關(guān)位置信息;

# mysql -uroot -p -e 'SHOW MASTER STATUS\G' > /path/to/master.info

3、創(chuàng)建快照卷

# lvcreate -L # -s -p r -n LV_NAME /path/to/source_lv

4、釋放鎖

mysql> UNLOCK TABLES;

5、掛載快照卷,備份

mount 

cp

6、刪除快照卷;

7、增量備份二進(jìn)制日志;

二進(jìn)制日志相關(guān)的幾個(gè)選項(xiàng):

innodb_support_xa={TRUE|FLASE}

存儲(chǔ)引擎事務(wù)在存儲(chǔ)引擎內(nèi)部被賦予了ACID屬性,分布式(XA)事務(wù)是一種高層次的事務(wù),它利用“準(zhǔn)備”然后“提交”(prepare-then-commit)兩段式的方式將ACID屬性擴(kuò)展到存儲(chǔ)引擎外部,甚至是數(shù)據(jù)庫(kù)外部。然而,“準(zhǔn)備”階段會(huì)導(dǎo)致額外的磁盤刷寫操作。XA需要事務(wù)協(xié)調(diào)員,它會(huì)通知所有的參與者準(zhǔn)備提交事務(wù)(階段1)。當(dāng)協(xié)調(diào)員從所有參與者那里收到“就緒”信息時(shí),它會(huì)指示所有參與者進(jìn)行真正的“提交”操作。

此變量正是用于定義InnoDB是否支持兩段式提交的分布式事務(wù),默認(rèn)為啟用。事實(shí)上,所有啟用了二進(jìn)制日志的并支持多個(gè)線程同時(shí)向二進(jìn)制日志寫入數(shù)據(jù)的MySQL服務(wù)器都需要啟用分布式事務(wù),否則,多個(gè)線程對(duì)二進(jìn)制日志的寫入操作可能會(huì)以與原始次序不同的方式完成,這將會(huì)在基于二進(jìn)制日志的恢復(fù)操作中或者是從服務(wù)器上創(chuàng)建出不同原始數(shù)據(jù)的結(jié)果。因此,除了僅有一個(gè)線程可以改變數(shù)據(jù)以外的其它應(yīng)用場(chǎng)景都不應(yīng)該禁用此功能。而在僅有一個(gè)線程可以修改數(shù)據(jù)的應(yīng)用中,禁用此功能是安全的并可以提升InnoDB表的性能。作用范圍為全局和會(huì)話級(jí)別,可用于選項(xiàng)文件,屬動(dòng)態(tài)變量。

sync_binlog = 1

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫(kù)、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評(píng)論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: