1. 程式人生 > >mysql全量備份和增量備份

mysql全量備份和增量備份

mysql全量備份指令碼

#!/bin/bash
Data_back="/data/data_backup/";
Date=`date +"%Y_%m_%d"`
mysqldump -uroot -proot  --quick --events --flush-logs  --single-transaction  XXXX> ${Data_back}XXXX_${Date}.sql

mysql增量備份指令碼

#!/bin/bash
Binlogdir="/usr/local/mysql/var/"
Binlogbackup="/data/data_binlog/"
Date=`date +"%Y_%m_%d
"` Binloglis=(`ls ${Binlogdir} | grep mysql-bin.0`) binlognum=${#Binloglis[@]} start_time=`date +%Y-%m-%d_%H:%M:%S` mysql -uroot -proot -e "flush logs;" echo -e "\n\n\n" echo "-------------binlog_back_up start at "${start_time}"-----------------------------------" for((i=0;i<$binlognum;i++));do if [ ${i} == `expr ${binlognum} - 1
` ] then echo ${Binloglis[i]}": last file" else backupfilename=${Binlogbackup}${Binloglis[i]} backfilename=${Binlogdir}${Binloglis[i]} if [ -e $backupfilename ] then echo ${backupfilename}": backup file exist" else cp $backfilename $backupfilename
if [ -e $backupfilename ] then echo ${backupfilename}": backup success" else echo ${backupfilename}": backup fail" fi fi fi done end_time=`date +%Y-%m-%d_%H:%M:%S` echo "-------------binlog_back_up start at "${end_time}"-----------------------------------"

binlog備份恢復操作

恢復資料從一個位置4到位置1285的資料
#mysqlbinlog --no-defaults --start-position="4" --stop-position="1285" /data/data_binlog/mysql-bin.000006 | mysql -u root -p

a、提取指定的binlog日誌
# mysqlbinlog /opt/data/APP01bin.000001  
# mysqlbinlog /opt/data/APP01bin.000001|grep insert  
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
insert into tb values(2,'jack')
 
b、提取指定position位置的binlog日誌
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001  
 
c、提取指定position位置的binlog日誌並輸出到壓縮檔案
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 |gzip >extra_01.sql.gz  
 
d、提取指定position位置的binlog日誌匯入資料庫
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 | mysql -uroot -p  
 
e、提取指定開始時間的binlog並輸出到日誌檔案
# mysqlbinlog --start-datetime="2014-12-15 20:15:23" /opt/data/APP01bin.000002 --result-file=extra02.sql  
 
f、提取指定位置的多個binlog日誌檔案
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 /opt/data/APP01bin.000002|more  
 
g、提取指定資料庫binlog並轉換字符集到UTF8
# mysqlbinlog --database=test --set-charset=utf8 /opt/data/APP01bin.000001 /opt/data/APP01bin.000002 >test.sql  
 
h、遠端提取日誌,指定結束時間
# mysqlbinlog -urobin -p -h192.168.1.116 -P3306 --stop-datetime="2014-12-15 20:30:23" --read-from-remote-server mysql-bin.000033 |more  
 
i、遠端提取使用row格式的binlog日誌並輸出到本地檔案
# mysqlbinlog -urobin -p -P3606 -h192.168.1.177 --read-from-remote-server -vv inst3606bin.000005 >row.sql ~