Mydumper

Mydumper是一個針對MySQL和Drizzle的高性能多線程備份和恢復工具。開發人員分別來自MySQL,Facebook,SkySQL公司。目前已經在有一些大型產品業務上測試並使用了Mydumper。分穩定版和開發版兩種,目前最新穩定版是0.2.3和最新開發版是0.5.1。恢復時可使用myloader工具。


Mydumper主要特性:


  • 輕量級C語言寫的代碼

  • 比mysqldump接近快10倍的速度

  • 事務性和非事務性表一致的快照(適用於0.22+)

  • 快速的文件壓縮(File compression on-the-fly)

  • 支持導出binlog

  • 多線程恢復( 0.2.1+)

  • 可以用守護進程的工作方式,定時的掃描和輸出連續的二進制日誌

  • 開源 (GNU GPLv3)

mydumper工作步驟:
2133063O6-0.jpg
wget http://launchpadlibrarian.net/77098505/mydumper-0.5.1.tar.gz
我在CentOS 6.0上測試的,安裝前

#yum install glib2-devel mysql-devel zlib-devel pcre-devel

#apt-get install libglib2.0-dev libmysqlclient15-dev zlib1g-dev libpcre3-dev //Ubuntu/Debian用戶

#tar -xzvf mydumper-0.5.1.tar.gz

#cd mydumper-0.5.1

#cmake .

#make;make install

# mydumper -u root -p 123456 -P 3307 -B test_innodb -o /backup/database/export-20111119

[root@localhost export-20111119]# ls

metadata test_innodb.t_innodb-schema.sql test_innodb.t_innodb.sql

[root@localhost export-20111119]# cat metadata

Started dump at: 2011-11-19 16:55:28

SHOW MASTER STATUS:

Log: mysql-bin.000019

Pos: 106

Finished dump at: 2011-11-19 16:55:28

# myloader -u root -p 123456 -P 3307 -d /backup/database/export-20111119/ –overwrite-tables


mydumper主要參數

–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, -k 可以設置kill長查詢

–verbose, -v 0 = silent, 1 = errors, 2 = warnings, 3 = info,默認是2

–binlogs, -b 導出binlog

–daemon, -D 啓用守護進程模式

–snapshot-interval, -I dump快照間隔時間,默認60s

–logfile, -L mysqldumper日誌輸出,一般在Daemon模式下使用



myloader 大多參數和mydumper一樣

–directory, -d 要還原的數據目錄

–overwrite-tables, -o Drop any existing tables when restoring schemas


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

1、備份數據庫;

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

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


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

 DBUser=root

 DBPasswd=password


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



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