Mysql企業級數據備份還原

一:全量備份

使用mysqldump 每天對數據進行定點全量備份,並且刪除7天前的數據
實現方法,服務器crontab 定時執行備份shell;

#!/bin/bash  
baseDir="/home/backup/";  
cd "$baseDir";  
echo "開始備份數據庫";  
echo `mysqldump -h 127.0.0.1 -uroot -p123456 --default-character-set=utf8  test> test_dump_$(date +%Y%m%d_%H%M%S).sql`;
echo "備份數據庫test完成";
echo `mysqldump -h 127.0.0.1 -uroot -p123456 --default-character-set=utf8  test2> test2$(date +%Y%m%d_%H%M%S).sql`;
echo "備份數據test2完成";    
oldDate=`date --date='8 day ago' +%Y%m%d`;  
#刪除當前日期-8的備份  
echo `rm -rf test_dump_$oldDate*`;
echo `rm -rf test2_dump_$oldDate*`;
echo "刪除$oldDate的備份成功"  

上面shell 只要每天定時執行,即可全量備份對應的數據庫數據,並且刪除指定天數的備份數據,完成全量備份

crontab 添加下面的代碼,每天凌晨2點執行sql_back.sh

1 2 * * * sh /home/backup/sql_back.sh

二:日誌備份還原

全量備份只能備份前天數據,並且一般是在凌晨完成,那對當天數據則需要用日誌備份;
1:日誌備份設置
找到mysql的配置文件my.conf,修改或在添加下面的配置

binlog_format=mixed //日誌模式,必須調成mixed,row 模式用mysqlbinlog 還原的sql是無法直接執行恢復的!!
datadir = /www/server/data  //數據存儲文件,包括bin-log
log-bin=mysql-bin  //開啓log-bin 前綴名稱叫mysql-bin 目錄位置在上面配置
expire_logs_days=7  //設置biglog保留時間爲7天
max_binlog_size  = 100M    //超過max_binlog_size或超過6小時會切換到下一序號文件

注意:binlog_format 一定要調成mixed 才能還原sql

2:還原日誌
在誤操作後第一時間應該停止數據庫訪問,並記錄當前時間點,並執行下面sql使日誌文件分割保存

flush logs

通過mysqlbinlog工具進行日誌還原

查找mysqlbinlog 位置,然後cd 到對應位置

find / -name mysqlbinlog

根據時間點在日誌文件夾把需要還原的日誌備份出來,然後通過下面命令逐個恢復日誌sql

/www/server/mysql/bin/mysqlbinlog -v --base64-output=decode-rows --skip-gtids=true mysql-bin.000013 --database=test_db --start-datetime=‘2016-07-20 00:00:01’ --stop-datetime=‘2016-07-24 23:59:59’ > binglog000013.sql

最後先通過整體備份的sql還原數據庫,然後執行日誌文件還原的sql,這裏對應的時間點應該注意,把對應錯誤操作要去除

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章