1、利用系統自帶的工具實現徹底備份:mysqldumpmysql
數據備份方式:sql
物理備份:直接拷貝庫或表對應的文件。限於myisam,跨平臺性差數據庫
邏輯備份:執行備份時,根據已有的數據,生成對應的sql命令,把sql保存到指定的文件裏服務器
一、備份全部的數據庫:ide
mysqldump -hlocalhost -uroot -p12345678 --all-databases > /opt/$(date +%F).sql工具
//--all-databases--全部數據庫 /opt/$(date +%F).sql 重定向到以日期命名的文件spa
二、備份指定的數據庫:命令行
mysqldump -hlocalhost -uroot -p12345678 db1 db2 > /opt/$(date +%F).sql日誌
三、徹底恢復:首先要確保庫存在,沒有先建立
orm
mysql -hlocalhost -uroot -p12345678 db88 < /opt/123.sql
四、徹底恢復也能夠在mysql命令行裏進行:source /opt/2018-01-22.sql
五、徹底備份能夠用定時計劃任務來進行
if [ ! -d /data ];then //首先判斷該目錄是否存在,不存在則建立
mkdir /data
fi
mysqldump -uroot -p12345678 test > /data/$(date +%F)-test.sql
2、啓用binlog日誌實現實時增量備份
差別備份:備份自徹底備份後,全部產生的數據
增量備份:備份自上一次備份後,全部新產生的數據
一、二進制日誌,記錄除查詢以外的sql命令
因爲mysql默認沒有啓用binlog日誌,故需在配置文件裏面修改
日誌文件,不能大於500M,mysqlbinlog server51-bin.000001 //查看日誌命令
server_id=51 //服務器編號,惟一
log-bin=/mysqllog/server51 //啓用logbin日誌文件,指定其路徑和文件名,必需要給mysql賬號權限
binlog-format="mixed" //指定日誌文件格式,有三種格式
二、日誌文件記錄sql命令的方式
時間: 180127 23:23:29 server id 51
偏移量: at 313
三、恢復數據
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 //指定日誌文件和登錄的用戶名和密碼
四、 手動生成新的日誌文件 binlog
刷新日誌:flush logs;
登錄時建立:mysql -uroot -p123456 -e "flush logs"
導出備份數據庫時:mysqldump -uroot -p123456 --flush-logs db4 > /root/db4.sql
重啓服務器時生成新的日誌文件
五、如何刪除日誌
mysql> reset master; //刪除全部的日誌,生成一個新的日誌文件
mysql> purge master logs to "日誌文件名"; //刪除單個日誌文件
mysql> purge master logs to "plj.000006"; //刪除指定日誌文件以前全部的日誌文件