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