mysql系列之5--完全备份和增量备份
一、利用系統(tǒng)自帶的工具實現(xiàn)完全備份:mysqldump
數(shù)據(jù)備份方式:
? ? ? ? ?物理備份:直接拷貝庫或表對應的文件。限于myisam,跨平臺性差
? ? ? ? ?邏輯備份:執(zhí)行備份時,根據(jù)已有的數(shù)據(jù),生成對應的sql命令,把sql保存到指定的文件里
1、備份所有的數(shù)據(jù)庫:
? ? ? ??mysqldump -hlocalhost -uroot -p12345678 ??--all-databases?> /opt/$(date +%F).sql
? ?? ?//--all-databases--所有數(shù)據(jù)庫?/opt/$(date +%F).sql 重定向到以日期命名的文件
2、備份指定的數(shù)據(jù)庫:
? ?mysqldump -hlocalhost -uroot -p12345678 ? db1 db2??> /opt/$(date +%F).sql
3、完全恢復:首先要確保庫存在,沒有先創(chuàng)建
? ??mysql -hlocalhost -uroot -p12345678 db88 < /opt/123.sql
4、完全恢復也可以在mysql命令行里進行:source ?/opt/2018-01-22.sql
5、完全備份可以用定時計劃任務來進行
? ???if [ ! -d /data ];then ? ?//首先判斷該目錄是否存在,不存在則創(chuàng)建
? ? ? ? ? mkdir /data
? ? ?fi
? ? mysqldump -uroot -p12345678 test > /data/$(date +%F)-test.sql
二、啟用binlog日志實現(xiàn)實時增量備份??
差異備份:備份自完全備份后,所有產(chǎn)生的數(shù)據(jù)
增量備份:備份自上一次備份后,所有新產(chǎn)生的數(shù)據(jù)
? 1、二進制日志,記錄除查詢之外的sql命令
? ? ? 由于mysql默認沒有啟用binlog日志,故需在配置文件里面修改
? ? ??日志文件,不能大于500M,mysqlbinlog server51-bin.000001 //查看日志命令
? ? ??server_id=51 ? ? ? ? ? ? ? ? ? ? ? //服務器編號,唯一
? ? ? log-bin=/mysqllog/server51 ?//啟用logbin日志文件,指定其路徑和文件名,必須要給mysql帳號權(quán)限
? ? ? binlog-format="mixed" ? ? ? ?//指定日志文件格式,有三種格式
?2、日志文件記錄sql命令的方式
? ? ? ?時間:?180127 23:23:29 server id 51
? ? ? ?偏移量: ?at 313
?3、恢復數(shù)據(jù)
? ?A、偏移量恢復:
? ? mysqlbinlog ?--start-position=378 ?--stop-position=534 ?/mysqllog/server51.000001 ? ???| ?mysql -uroot ?-p12345678?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 起始偏移量 ? ? ? ? ? ? ? ? ? ? ? ? ? 終止偏移量 ? ? ? ? ? ? ? ? ? ? ? binlog日志文件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 登陸的帳號和密碼
? ? B、時間恢復
? ? ? ??mysqlbinlog --start-datetime="2018-1-27 23:22:22" --stop-datetime="2018-1-27 23:23:29" ?//指定起始時間和終止時間
? ? ? ? ? /mysqllog/server51.000001 ? | ?mysql -uroot ?-p12345678 ? ?//指定日志文件和登陸的用戶名和密碼
??4、 ?手動生成新的日志文件 ? binlog
? ? ? ? ?刷新日志:flush logs;
? ? ? ? ?登陸時創(chuàng)建:mysql ?-uroot ?-p123456 ? -e ?"flush logs"
? ? ? ? ?導出備份數(shù)據(jù)庫時:mysqldump ?-uroot ?-p123456 ?--flush-logs ?db4 ?> /root/db4.sql
? ? ? ? ?重啟服務器時生成新的日志文件
?5、如何刪除日志
?mysql> reset ? master; ? ? ? ?//刪除所有的日志,生成一個新的日志文件
?mysql> purge ?master ?logs ?to ?"日志文件名"; ? //刪除單個日志文件
?mysql> purge ?master ?logs ?to "plj.000006"; ? ? //刪除指定日志文件之前所有的日志文件
轉(zhuǎn)載于:https://blog.51cto.com/453412/2065955
總結(jié)
以上是生活随笔為你收集整理的mysql系列之5--完全备份和增量备份的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: URAL 1635 Mnemonics
- 下一篇: 自定义Exchange2003未送达报告