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