溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

菜鳥學(xué)Linux 第078篇筆記 mysql 備份mysqldump

發(fā)布時間:2020-07-30 11:15:04 來源:網(wǎng)絡(luò) 閱讀:310 作者:Winthcloud 欄目:數(shù)據(jù)庫

菜鳥學(xué)Linux 第078篇筆記 mysql 備份mysqldump




內(nèi)容總覽

備份類型、備份類型詳解

備份工具

mysqldump實現(xiàn)備份還原






MySQL的備份和還原

備份:副本


RAID1,RAID10 保證硬件損壞而不會影響業(yè)務(wù)中止



備份類型

熱備份、溫備份、冷備份

熱備份:讀、寫不受影響

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

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


物理備份、邏輯備份

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

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


完全備份、增量備份和差異備份

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

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

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


增量和差異區(qū)別:增量是每次備份是比較與前一次的區(qū)別并進行備份

差異是與第一次完全備份作比較,并將有差異的備份

(差異相對浪費硬盤空間一些,易于管理)


備份可自由根據(jù)需求來組合

在線物理完全備份

在線邏輯增量備份...





熱備份(技術(shù)復(fù)雜度最高)

MyISAM lvm 熱備   溫備

InnoDB 支持熱備 xtrabackup, mysqldump

冷備 mysql --> 從



物理備份 速度快,移植性不是特別好

邏輯備份 速度慢,會丟失浮點數(shù)精度,

方便使用文本處理工具直接對其處理,可移植能力強




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

數(shù)據(jù)變量的頻度,和變化量

可以忍受的還原時長



備份的東東

數(shù)據(jù)、配置文件、二進制日志、事務(wù)日志


還原 測試,預(yù)演,多人分工,還原緊急處理方案



MySQL備份工具:

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

mysqlhostcopy  物理備份工具 溫備份


文件系統(tǒng)工具

cp 冷備

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

mysql> FLUSH TABLES;

mysql> LOCK TABLES;


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

InnoDB:


第三組工具:

ibbackup (InnoDB) 商業(yè)工具

xtrabackup 開源工具





mysqldump 邏輯備份

mysqldump (完全備份) + 二進制日志

完全+增量


mysqldump DB_NAME [tb1] [tb2] 


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

0 不記錄二進制日志文件及其事件位置

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

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


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


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


如果指定庫中的表類型均為InnoDB,可使用--single-transaction啟動熱備

(不要和--lock-all-tables一起使用)


--events

--routines

--triggers


備份多個庫

--all-databases  備份所有庫

--databases DB_NAME1,DB_NAME2 備份指定庫

(使用此種備份,恢復(fù)時則不需要自己手動新建數(shù)據(jù)庫名)




實驗備份和還原


備份策略: 每周完全+每日增量

完全備份:mysqldump

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



1.備份數(shù)據(jù)庫

完全備份(備份文件要放在其它硬盤這里做測試所以只是放在其它目錄里了)

# mysqldump -uroot -p --master-data=2 --flush-logs --all-databases \

--lock-all-tables > /root/all-dbs.sql 

(此為一行命令)

mysql> PURGE BINARY LOGS TO 'mysql-bin.000007'; (不建議刪除,只是為了做測試)

可以備份后再刪除掉


做增量備份(第二天)

mysql> FLUSH LOGS;

將滾動后的日志備份(直接復(fù)制即可) 前邊的目錄是二進制日志所放目錄

cp /mydata/data/mysql-bin.000007 /root/binary-`date +%Y-%m-%d`.sql

mysqlbinlog /mydata/data/mysql-bin.000007 > /root/monday-incremental.sql

(推薦此上條備份二進制日志文件)


第三天做增量和此一樣   模擬此天不小心把數(shù)據(jù)庫給刪除了

(但是造成不要把二進制日志刪除了哈,,這要沒了就掛了)

先將二進制文件復(fù)制出來

cp /mydata/data/mysql-bin.000008 > /root/mysql-bin.000008.sql

# rm -rf /mydata/data/* (模擬數(shù)據(jù)庫損壞)




還原數(shù)據(jù)庫

由于我模擬的太暴力直接把庫文件也給刪除了所以需要重新初始化數(shù)據(jù)庫

# killall mysqld

初始化數(shù)據(jù)庫

# ./scripts/mysql_install_db --user=mysql --datadir=/mydata/data


還原完全備份

# mysql -uroot -p < /root/all-dbs.sql


導(dǎo)入增量備份

# mysql -uroot -p < /root/monday-incremental.sql (使用的是mysqlbinlog)


最后一步把最后一次的二進制日志導(dǎo)入到數(shù)據(jù)庫

# mysqlbinlog mysql-bin.000008.sql | mysql -uroot -p

(到此步便為即時點還原)


mysqldump雖然可以實現(xiàn)備份還原,但是會丟失精度,只適合小型的數(shù)據(jù)庫



最后作業(yè) 

腳本完成完全備份

腳本完成增量備份

并添加至任務(wù)計劃讓其自動執(zhí)行備份

(目前個人未做出來)










向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI