萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> Mydumper安裝和使用教程

Mydumper安裝和使用教程

   Mydumper是一個針對MySQL和Drizzle的高性能多線程備份和恢復工具。開發人員主要來自MySQL,Facebook,SkySQL公司。目前已經在一些線上使用了Mydumper。雖然MySQL數據庫備份工具有其自帶的mysqldump,屬於mysql官方的一款備份工具。但是第三方備份工具mydumper憑借優越的特點為更多人所使用。

Mydumper安裝和使用教程  三聯

  1、Mydumper安裝

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

  # wget http://launchpad.net/mydumper/0.5/0.5.1/+download/mydumper-0.5.1.tar.gz

  # tar zxvf mydumper-0.5.1.tar.gz -C ../software/

  # cmake .

  # make

  # make install

  2、在mysql數據庫中創建一個測試庫和表(進入mysql數據庫)

  create database test;

  create table test (a int);

  mydumper參數介紹:

  -B, --database 需要備份的庫

  -T, --tables-list 需要備份的表,用,分隔

  -o, --outputdir 輸出目錄

  -s, --statement-size Attempted size of INSERT statement in bytes, default 1000000

  -r, --rows 試圖分裂成很多行塊表

  -c, --compress 壓縮輸出文件

  -e, --build-empty-files 即使表沒有數據,還是產生一個空文件

  -x, --regex 支持正則表達式

  -i, --ignore-engines 忽略的存儲引擎,用,分隔

  -m, --no-schemas 不導出表結構

  -k, --no-locks 不執行臨時共享讀鎖 警告:這將導致不一致的備份

  -l, --long-query-guard 長查詢,默認60s

  --kill-long-queries kill掉長時間執行的查詢(instead of aborting)

  -b, --binlogs 導出binlog

  -D, --daemon 啟用守護進程模式

  -I, --snapshot-interval dump快照間隔時間,默認60s,需要在daemon模式下

  -L, --logfile 日志文件

  -h, --host

  -u, --user

  -p, --password

  -P, --port

  -S, --socket

  -t, --threads 使用的線程數,默認4

  -C, --compress-protocol 在mysql連接上使用壓縮

  -V, --version

  -v, --verbose 更多輸出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2

  myloader參數介紹:

  -d, --directory 導入備份目錄

  -q, --queries-per-transaction 每次執行的查詢數量, 默認1000

  -o, --overwrite-tables 如果表存在刪除表

  -B, --database 需要還原的庫

  -e, --enable-binlog 啟用二進制恢復數據

  -h, --host

  -u, --user

  -p, --password

  -P, --port

  -S, --socket

  -t, --threads 使用的線程數量,默認4

  -C, --compress-protocol 連接上使用壓縮

  -V, --version

  -v, --verbose 更多輸出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2

  mydumper輸出文件:

  metadata:元數據 記錄備份開始和結束時間,以及binlog日志文件位置。

  table data:每個表一個文件

  table schemas:表結構文件

  binary logs: 啟用--binlogs選項後,二進制文件存放在binlog_snapshot目錄下

  daemon mode:在這個模式下,有五個目錄0,1,binlogs,binlog_snapshot,last_dump。

  備份目錄是0和1,間隔備份,如果mydumper因某種原因失敗而仍然有一個好的快照,

  當快照完成後,last_dump指向該備份。

  time mydumper -B test -o /tmp/test2.bak -r 5000

  mydumper備份腳本

  #!/bin/bash

  #[email protected]

  ########腳本說明

  #1.默認讀取當前目錄下database.txt文件,備份部分數據庫

  #2.如果database.txt為空,則執行全備或備份指定的個別數據庫

  #set parameter

  mydumper=/usr/local/bin/mydumper #根據自己的實際情況設置

  dir_backup=/backup #根據自己的實際情況設置

  mysql_host=localhost #根據自己的實際情況設置

  mysql_port=33306 #根據自己的實際情況設置

  mysql_user=root #根據自己的實際情況設置

  mysql_pass=123456 #根據自己的實際情況設置

  now_date=`date +%Y%m%d%H%M`

  if [ ! -d $dir_backup ]; then

  echo -e "e[1;31m 保存備份的主目錄:$dir_backup不存在,將自動新建. e[0m"

  mkdir -p ${dir_backup}

  fi

  export black='33[0m'

  export boldblack='33[1;0m'

  export red='33[31m'

  export boldred='33[1;31m'

  export green='33[32m'

  export boldgreen='33[1;32m'

  export yellow='33[33m'

  export boldyellow='33[1;33m'

  export blue='33[34m'

  export boldblue='33[1;34m'

  export magenta='33[35m'

  export boldmagenta='33[1;35m'

  export cyan='33[36m'

  export boldcyan='33[1;36m'

  export white='33[37m'

  export boldwhite='33[1;37m'

  cecho ()

  ## -- Function to easliy print colored text -- ##

  # Color-echo.

  # 參數 $1 = message

  # 參數 $2 = color

  {

  local default_msg="No message passed."

  message=${1:-$default_msg} # 如果$1沒有輸入則為默認值default_msg.

  color=${2:-black} # 如果$1沒有輸入則為默認值black.

  case $color in

  black)

  printf "$black" ;;

  boldblack)

  printf "$boldblack" ;;

  red)

  printf "$red" ;;

  boldred)

  printf "$boldred" ;;

  green)

  printf "$green" ;;

  boldgreen)

  printf "$boldgreen" ;;

  yellow)

  printf "$yellow" ;;

  boldyellow)

  printf "$boldyellow" ;;

  blue)

  printf "$blue" ;;

  boldblue)

  printf "$boldblue" ;;

  magenta)

  printf "$magenta" ;;

  boldmagenta)

  printf "$boldmagenta" ;;

  cyan)

  printf "$cyan" ;;

  boldcyan)

  printf "$boldcyan" ;;

  white)

  printf "$white" ;;

  boldwhite)

  printf "$boldwhite" ;;

  esac

  printf "%sn" "$message"

  tput sgr0# tput sgr0即恢復默認值

  printf "$black"

  return

  }

  cechon ()

  # Color-echo.

  # 參數1 $1 = message

  # 參數2 $2 = color

  {

  local default_msg="No message passed."

  # Doesn't really need to be a local variable.

  message=${1:-$default_msg} # 如果$1沒有輸入則為默認值default_msg.

  color=${2:-black} # 如果$1沒有輸入則為默認值black.

  case $color in

  black)

  printf "$black" ;;

  boldblack)

  printf "$boldblack" ;;

  red)

  printf "$red" ;;

  boldred)

  printf "$boldred" ;;

  green)

  printf "$green" ;;

  boldgreen)

  printf "$boldgreen" ;;

  yellow)

  printf "$yellow" ;;

  boldyellow)

  printf "$boldyellow" ;;

  blue)

  printf "$blue" ;;

  boldblue)

  printf "$boldblue" ;;

  magenta)

  printf "$magenta" ;;

  boldmagenta)

  printf "$boldmagenta" ;;

  cyan)

  printf "$cyan" ;;

  boldcyan)

  printf "$boldcyan" ;;

  white)

  printf "

copyright © 萬盛學電腦網 all rights reserved