萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> linux中mydumper 多線程快速備份,恢復mysql數據庫

linux中mydumper 多線程快速備份,恢復mysql數據庫

mydumper比mysql中自帶的功能性能要強很多它可以實現多線程數據備份與恢復,下面本教程就來介紹mydumper安裝,備份及自動備份腳本的例子,希望此例子對各位會帶來幫助

mydumper 安裝

1、先安裝cmake,因為這個軟件要用cmake編譯

 代碼如下 復制代碼

# apt-get install cmake

2、接下來安裝mydumper兼容包,這個很關鍵,因為根據官網文檔,centos/redhat等其他系統需要的包名是不同的,可根據實際系統去查閱官網資料:

 代碼如下 復制代碼 # apt-get install libglib2.0-dev libmysqlclient15-dev zlib1g-dev libpcre3-dev

3、下載源碼安裝包:

#wget http://launchpad.net/mydumper/0.2/0.2.3/+download/mydumper-0.2.3.tar.gz

4、解壓包

 代碼如下 復制代碼

#tar xzvf mydumper-0.2.3.tar.gz

5、進入解壓目錄,准備開始安裝

 代碼如下 復制代碼 #cd mydumper-0.2.3/

6、用cmake進行編譯,注意後面有個字符"."(其實就是英文的句號),別落下了啊

 代碼如下 復制代碼 #cmake .

7、安裝

 代碼如下 復制代碼 #make
#make install

到這裡就已經安裝完畢了。

簡單的備份恢復測試

備份

 代碼如下 復制代碼

mydumper –kill-long-queries -u root -B dbname -T db-tables-name -p ‘password’ -v 2 -c -t 8 –outputdir=/home/backup/20120615/

恢復備份

 代碼如下 復制代碼

myloader -d /home/backup/20120615/ -o -B dbname  -u root -p ‘passwd’ -t 4 &

myloader 大多參數和mydumper一樣
–directory, -d 要還原的數據目錄
–overwrite-tables, -o Drop any existing tables when restoring schemas

下面是各項常用參數解釋:

–host, -h 連接的mysql服務器
–user, -u 用戶備份的連接用戶
–password, -p
–port, -P 連接端口
–socket, -S 連接socket文件
–database, -B 需要備份的數據庫
–table-list, -T 需要備份的表,用,分隔
–outputdir, -o 輸出的目錄
–build-empty-files ,-e 如果表數據是空,還是產生一個空文件,默認無數據則只有表結構文件
–regex, -x 支持正則表達式,如mydumper –regex ’^(?!(mysql|test))’
–ignore-engines, -i 忽略的存儲引擎
–no-schemas, -m 不導出表結構
–long-query-guard 長查詢,默認60s,超過則通過mydumper
–kill-long-queries, 可以設置kill長查詢
–verbose, -v 0 = silent, 1 = errors, 2 = warnings, 3 = info,默認是2
–binlogs, -b 導出binlog www.111cn.net

–daemon, -D 啟用守護進程模式
–snapshot-interval, -I dump快照間隔時間,默認60s
–logfile, -L mysqldumper日志輸出,一般在Daemon模式下使用


動備份mysql的shell腳本 

該腳本基本功能如下(如果允許的話請自行增加異地/異機災備):

1、備份數據庫;

2、加上了過期代碼,保留了7天的備份,以免硬盤被撐爆了,有需求的請自行增減時間;

3、通過對比可得知數據庫備份使用了多長時間。

 

 代碼如下 復制代碼

#!/bin/bash
#This is a ShellScript for auto DB-Backup
#201204 by szy
#Setting
  DBName=test

  DBUser=root

  DBPasswd=password

www.111cn.net
 BackupPath=/home/backup/db
 LogFile=/home/backup/log/DBbackup.log


 NewFile="$BackupPath"/"$DBName1"/$(date +%y%m%d)

 OldFile="$BackupPath"/"$DBName1"/$(date +%y%m%d --date='7 days ago')

 

 echo "----------------Backup Start-------------------" >> $LogFile

 echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile

 echo "-----------------------------------------------------" >> $LogFile 


#Delect Old File
 if [ -d $OldFile ]
then
    rm -rf $OldFile >> $LogFile 2>&1
    echo "----------[$OldFile]Delete Old File Success!----------" >> $LogFile
else
    echo "----------[$DBName]No Old Backup File!-------------" >> $LogFile
fi


#Backup

 echo "----------------------$DBName----------------------" >> $LogFile
 echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile

 if [ -d $NewFile ]
then
   echo "----------[$NewFile]The Backup File is exists,Can't Backup!----------" >> $LogFile 
else
mkdir $NewFile
 mydumper --kill-long-queries -u $DBUser -B $DBName -p $DBPasswd -v 2 -c -t 8 --outputdir=$NewFile
 fi

 echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
 echo "--------------This ShellScript End-------------------" >> $LogFile

 

copyright © 萬盛學電腦網 all rights reserved