mysql备份与还原-mysqldump备份、mysql与source还原
以下都以在linux操作系統(tǒng)上的mysql為例
mysqldump備份
mysqldump實(shí)際就是將數(shù)據(jù)庫中的數(shù)據(jù)轉(zhuǎn)化為建庫、建表和插入記錄的sql語句
1.備份一個(gè)數(shù)據(jù)庫 [或其中幾個(gè)表],不指定表表示備份整個(gè)數(shù)據(jù)庫,指定表表示備份指定的表
在系統(tǒng)命令下:mysqldump -u用戶 -p密碼 庫 [表1? 表2? 表3?? …]? > /opt/backname.sql
[root@oldboy opt]# mysqldump -uroot -poldboy oldboy student >/opt/studentbak.sql
備份一個(gè)庫或其中的表時(shí),備份語句中不包含建庫語句,因此還原時(shí)需要指定數(shù)據(jù)庫
如果備份整個(gè)庫時(shí)加上-B參數(shù),備份語句中會(huì)包含建庫和切庫語句如mysqldump -uroot -poldboy -B oldboy,-B參數(shù)不適用于備份表
2.備份多個(gè)數(shù)據(jù)庫
在系統(tǒng)命令下:mysqldump -u用戶 -p密碼 --databases 庫1? 庫2? 庫3? … > /opt/backname.sql
? ? ? ? ? ? ? ? ? ? ? ? ?mysqldump -u用戶 -p密碼 --B 庫1? 庫2? 庫3? … > /opt/backname.sql
[root@oldboy opt]# mysqldump -uroot -poldboy --databases oldboy oldboy_utf8 >/opt/multidbback.sql
3.備份所有數(shù)據(jù)庫
在系統(tǒng)命令下:mysqldump -u用戶 -p密碼 --all-databases > /opt/backname.sql
[root@oldboy opt]# mysqldump -uroot -poldboy --all-databases >/opt/alldbback.sql
參考視頻?http://edu.51cto.com/course/808.html
?
備份時(shí)可同時(shí)對(duì)備份的結(jié)果通過gzip壓縮
mysqldump -uroot -poldboy oldboy student | gzip > /opt/studentbak.sql
?
mysql備份時(shí)常用參數(shù)
備份時(shí)加--compact參數(shù),會(huì)在備份結(jié)果中省去一些無用信息,簡(jiǎn)化輸出 ,一般在調(diào)試時(shí)使用,生產(chǎn)上不使用
[root@oldboy opt]# mysqldump -uroot -poldboy --compact oldboy > /opt/dbak.sql
備份時(shí)加-d參數(shù),只備份表結(jié)構(gòu),即--no-data
[root@oldboy opt]# mysqldump -uroot -poldboy -d oldboy student > /opt/dbak.sql
備份時(shí)加-t參數(shù),只備份數(shù)據(jù)
[root@oldboy opt]# mysqldump -uroot -poldboy -t oldboy student > /opt/tbak.sql
備份時(shí)加-B參數(shù),備份多個(gè)數(shù)據(jù)庫,即--databases
[root@oldboy opt]# mysqldump -uroot -poldboy -B --events |gzip > /opt/Abak.sql
備份時(shí)加-A參數(shù),備份所有數(shù)據(jù)庫,即--all-databases
[root@oldboy opt]# mysqldump -uroot -poldboy -A -B --events |gzip > /opt/Abak.sql
備份時(shí)加-F參數(shù),切割bin log,即--flush-logs
[root@oldboy opt]# mysqldump -uroot -poldboy -B -F oldboy|gzip > /opt/Abak.sql
備份時(shí)加--maste-date=1(或2,1指定logbin日志及位置時(shí)不注釋,2注釋)參數(shù),會(huì)在備份結(jié)果中指出從哪個(gè)binlog開始恢復(fù)
[root@oldboy opt]# mysqldump -uroot -poldboy --compact --master-data=1 oldboy > /opt/masterbak.sql
備份時(shí)加-x參數(shù),鎖表
備份時(shí)加-l參數(shù),只讀鎖表
備份時(shí)加--events參數(shù),備份數(shù)據(jù)庫事件
備份時(shí)加--single-transaction參數(shù)適合innoDB事務(wù)數(shù)據(jù)庫備份,原理是將本次會(huì)話的隔離級(jí)別設(shè)定為repeatable read,以確保本次會(huì)話dump時(shí),不會(huì)看到其他會(huì)話已經(jīng)提交了的數(shù)據(jù)
?
mysql備份還原
1.還原一個(gè)數(shù)據(jù)庫,需指定數(shù)據(jù)庫(如果備份時(shí)加了-B參數(shù),則不需要指定數(shù)據(jù)庫)
在linux系統(tǒng)下:mysql ?-u用戶 -p密碼 庫 < /opt/backname.sql
[root@oldboy opt]# mysql -uroot -poldboy oldboy? < /opt/testback.sql
2.還原多個(gè)數(shù)據(jù)庫:mysql ?-u用戶 -p密碼 < /opt/backname.sql
mysql -uroot -poldboy < /opt/twodbback.sql
?
source還原
在數(shù)據(jù)庫下:source 備份路徑及文件名
Mysql>source /opt/oldboyB.sql
如果備份文件中不包含建庫語句,則需先通過use切換到對(duì)應(yīng)的庫,再source還原
?
生產(chǎn)場(chǎng)景備份參數(shù)使用
myisam:mysqldump -uroot -poldboy -A -B -x --master-data=1 --events|gzip > /opt/all.sql.gz(混合引擎?zhèn)浞?#xff0c;以myisam為主)
?innodb:mysqldump -uroot -poldboy -A -B --master-data=1 --single-transaction --events|gzip > /opt/all.sql.gz
5.5.35以前默認(rèn)是myisam引擎,5.5.35以后默認(rèn)是innodb,現(xiàn)在推薦使用innodb方式備份
?
?
mysql的mysqldump備份合何時(shí)派上用場(chǎng)
1.遷移或者升級(jí)數(shù)據(jù)庫時(shí)
2.增加從庫的時(shí)候
3.人為的DDL、DML誤操作語句,主庫和從庫都會(huì)誤操作,因此需要備份
4.跨機(jī)房災(zāi)備,需要備份到異地
(因?yàn)橛布蛱厥猱惓G闆r導(dǎo)致主庫和從庫宕機(jī),主從可以互相切換,無需備份)
?
mysql增量恢復(fù)的必備條件:開啟binlog日志,存在一份全備和全備之后到出現(xiàn)問題時(shí)間點(diǎn)的所有增量binlog
通過將修改變量sql_log_bin為OFF,可臨時(shí)不記錄binlog,在用binlog進(jìn)行恢復(fù)時(shí)不將執(zhí)行的操作記錄到binlog
?
全量備份:備份數(shù)據(jù)庫中所有的數(shù)據(jù)
增量備份:上次全量備份之后、到下次備份時(shí)間點(diǎn)之間更新的數(shù)據(jù)。對(duì)于mysql來說,binlog就是增量數(shù)據(jù)。
一般由于人為或者程序邏輯的方式在數(shù)據(jù)庫執(zhí)行了誤操作
?
按天備份:
每天的24:00:00全量備份,每天的數(shù)據(jù)增量備份即binlog
優(yōu)點(diǎn):恢復(fù)時(shí)間短,維護(hù)成本低
缺點(diǎn):占用空間大,占用資源多,經(jīng)常鎖表影響用戶體驗(yàn)
按周備份
每周日24:00:00全量備份,每天的數(shù)據(jù)增量備份binlog
缺點(diǎn):占用空間小,占用資源少,無需鎖表,用戶體驗(yàn)好
缺點(diǎn):恢復(fù)時(shí)間長,維護(hù)麻煩,成本高
?
企業(yè)場(chǎng)景:
1.中小公司,全量一般是每天一次,在業(yè)務(wù)流量低估時(shí)執(zhí)行全備,備份時(shí)鎖會(huì)表
2.單臺(tái)數(shù)據(jù)庫,用rsync(配合定時(shí)任務(wù),或者inotify,主從輔助),把所有binog備份到遠(yuǎn)程服務(wù)器,盡量做主從復(fù)制
3.大公司周備,本周到下次周備之前都是增量備份,節(jié)省備份時(shí)間,減小備份壓力,但是增量binlog文件副本太多,還原麻煩
4.一般一主多從,會(huì)有一個(gè)從庫做備份,延遲同步
?
轉(zhuǎn)載于:https://www.cnblogs.com/Forever77/p/10049718.html
總結(jié)
以上是生活随笔為你收集整理的mysql备份与还原-mysqldump备份、mysql与source还原的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springcloud(十一):服务网关
- 下一篇: Nginx负载均衡、ssl原理,生成ss