程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> 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 "$white" ;;

      boldwhite)

      printf "$boldwhite" ;;

      esac

      printf "%s" "$message"

      tput sgr0# tput sgr0即恢復默認值

      printf "$black"

      return

      }

      judegedate_01="judegedate01.`date +%y%m%d%h%m%s`.txt"

      schema_judege01="select schema_name from information_schema.schemata ;"

      mysql -h${mysql_host} -P${mysql_port} -u${mysql_user} -p${mysql_pass} -e"${schema_judege01}" >${judegedate_01}

      echo -e "e[1;31m The databases name in current instance is: e[0m"

      awk 'NR==2,NR==0 { print $1}' ${judegedate_01}

      echo " "

      #Get the current script path and create a file named database.txt

      #in order to save the backup databases name.

      filepath=$(cd "$(dirname "$0")"; pwd)

      if [ ! -s "${filepath}/database.txt" ];then

      echo "將在當前目錄下新建databases.txt."

      touch ${filepath}/database.txt

      echo "#Each line is stored a valid database name">${filepath}/database.txt

      chmod 700 ${filepath}/database.txt

      fi

      #Remove the comment line

      awk 'NR==2,NR==0 { print $1}' ${filepath}/database.txt> ${filepath}/tmpdatabases.txt

      #To determine whether a file is empty

      if [ -s ${filepath}/tmpdatabases.txt ];then

      #開始時間

      started_time=`date +%s`

      echo "備份開始

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved