MySQL延时备份的实现

日期: 2011-02-24 作者:陶会祥 来源:TechTarget中国 英文

  在实际工作中,经常有一不小心误删除数据库或表而后悔莫及的事件发生,这有没有后悔药可吃呢?今天介绍的延时备份就可以做到。

  延时备份让slave滞后于master一段时间,当你误操作时只要立即停止slave的同步,即可轻松地从延时备份库中找回你误删的数据。

  下面介绍使用maatkit工具集中mk-slave-delay来实现延时备份。

  1、 maatkit工具集简介

  官方:http://www.maatkit.org/doc/

  maatkit是一个包括多个实用MySQL的工具集,使用它们,可以让你的MySQL服务器使用起来更加方便也更加安全。maatkit是开源的软件,你可以自由的改进软件并将自己作出的改进版本向社会发行传播。

  maatkit工具目前包含26个不同功能的工具。

  主要有:

  mk-archiver,mk-audit,mk-find,mk-kill,mk-heartbeat,mk-query-digest,mk-parallel-dump,mk-parallel-restore,mk-show-grants ,mk-slave-delay,mk-slave-move,mk-slave-restart等工具。

  顾名思义mk-slave-delay是延时备份工具。mk-slave-delay控制MySQL slave端,使它滞后于其master。

  2、 maatkit安装

  下载:http://code.google.com/p/maatkit/

  安装步骤:

  tar -zxf maatkit-.tar.gz

  cd maatkit-

  perl Makefile.PL

  make install

  ###

  # make install

  ….

  Installing /usr/bin/mk-index-usage

  Installing /usr/bin/mk-slave-delay

  Installing /usr/bin/mk-archiver

  Installing /usr/bin/mk-checksum-filter

  Installing /usr/bin/mk-slave-prefetch

  Installing /usr/bin/mk-log-player

  Installing /usr/bin/mk-query-profiler

  Installing /usr/bin/mk-slave-move

  Installing /usr/bin/mk-query-digest

  Installing /usr/bin/mk-show-grants

  Installing /usr/bin/mk-parallel-restore

  Installing /usr/bin/mk-profile-compact

  Installing /usr/bin/mk-find

  Installing /usr/bin/mk-table-checksum

  Installing /usr/bin/mk-fifo-split

  Installing /usr/bin/mk-error-log

  Installing /usr/bin/mk-visual-explain

  Installing /usr/bin/mk-variable-advisor

  Installing /usr/bin/mk-kill

  Installing /usr/bin/mk-heartbeat

  Installing /usr/bin/mk-purge-logs

  Installing /usr/bin/mk-query-advisor

  Installing /usr/bin/mk-parallel-dump

  Installing /usr/bin/mk-merge-mqd-results

  Installing /usr/bin/mk-duplicate-key-checker

  Installing /usr/bin/mk-upgrade

  Installing /usr/bin/mk-deadlock-logger

  Installing /usr/bin/mk-slave-restart

  Installing /usr/bin/mk-slave-find

  Installing /usr/bin/mk-loadavg

  Installing /usr/bin/mk-table-sync

  3、 文档帮助

  man /usr/bin/mk-slave-delay

  /usr/bin/mk-slave-delay –help

  4、 mk-slave-delay使用

  示例:

  mk-slave-delay –delay 1m –interval 15s –run-time 10m slavehost

  延时运行10分钟,slave滞后master1分钟,15秒检查下次延时情况。

  详细参数说明:

  Usage: mk-slave-delay [OPTION…] SLAVE-HOST [MASTER-HOST]

  Options:

  –ask-pass Prompt for a password when connecting to MySQL

  –charset=s -A Default character set

  –config=A Read this comma-separated list of config files; if

  specified, this must be the first option on the command

  line

  –[no]continue Continue replication normally on exit (default yes)

  –daemonize Fork to the background and detach from the shell

  –defaults-file=s -F Only read mysql options from the given file

  –delay=m How far the slave should lag its master (default 1h).

  Optional suffix s=seconds, m=minutes, h=hours, d=days;

  if no suffix, s is used.

  –help Show help and exit

  –host=s -h Connect to host

  –interval=m How frequently mk-slave-delay should check whether the

  slave needs to be started or stopped (default 1m).

  Optional suffix s=seconds, m=minutes, h=hours, d=days;

  if no suffix, s is used.

  –log=s Print all output to this file when daemonized

  –password=s -p Password to use when connecting

  –pid=s Create the given PID file when daemonized

  –port=i -P Port number to use for connection

  –quiet -q Don’t print informational messages about operation

  –run-time=m How long mk-slave-delay should run before exiting.

  Optional suffix s=seconds, m=minutes, h=hours, d=days;

  if no suffix, s is used.

  –set-vars=s Set these MySQL variables (default wait_timeout=10000)

  –socket=s -S Socket file to use for connection

  –use-master Get binlog positions from master, not slave

  –user=s -u User for login if not current user

  –version Show version and exit

  5、 延时原理

  mk-slave-delay 定时地 starts /stops slave的sql_thread,以使其达到滞后master的目的。

  2011-02-15T14:46:19 START SLAVE until master 2011-02-15T06:46:17 apollo226-bin.000290/779116659

  2011-02-15T14:46:19 START SLAVE until master 2011-02-15T06:46:18 apollo226-bin.000290/781852897

  6、 应用布署

  脚本my_slave_delay.sh集中控制延时备份DB服务器.

  服务器信息以host_ip port 的格式存在delay_host配置文件中。

  head delay_host.txt

  10.xx.xx.xxx 3601

  usage1: sh my_slave_delay.sh

  usage2: sh my_slave_delay.sh [delay_host] [delay] [interval]

  my_slave_delay核心代码:

  delay_host=$1

  delay_host=${delay_host:-”delay_host.txt”}

  delay=$2

  delay=${delay:-”8h”}

  interval=$3

  interval=${interval:-”2m”}

  log_file=”my_slave_delay.log”

  my_slave_delay(){

  cat $delay_host |grep -v ‘#’ | while read host port

  do

  echo ” /usr/bin/mk-slave-delay -h $host -P $port –interval=$interval –delay=$delay &”

  echo ” /usr/bin/mk-slave-delay -h $host -P $port –interval=$interval –delay=$delay &”>>$log_file

  /usr/bin/mk-slave-delay -h $host -P $port –interval=$interval –delay=$delay &

  sleep 1

  done

  }

  ### 取消延时

  my_slave_start(){

  echo “my_slave_start”

  ps aux |grep “mk-slave-delay -h” -i |grep -v “grep” | awk ‘{print $2,$14,$16}’ | while read pid host port ;

  do

  echo “stop slave delay <$host:$port>”;

  kill -9 $pid

  echo “slave start sql_thread <$host:$port>”

  echo “slave start sql_thread;” | mysql -h $host -P$port -N

  done;

  echo “my_slave_start done.”

  }

  7、 参考

  http://www.maatkit.org/doc/mk-slave-delay.html

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐

  • Notre Dame对云端SQL Server性能基准的探索实践

    确立SQL Server的性能基准,对于云端迁移来说是至关重要的第一步,一位来自于University of Notre Dame 的DBA表示,他正在试图通过数据库监控软件,找出SQL server的性能基准。

  • DBA必须掌握的数据库恢复管理技术

    如果没有备份副本,数据库管理员就无法还原数据库,所以DBA在恢复之前倾向于考虑备份是合乎逻辑的。 但是,对我来说,这种逻辑一直是错误的。

  • DBA也要和领导抢饭碗?

    数据库架构师Ziaul Mannan 认为,DBA有成为高管的潜在可能,而这种潜力在过去往往被忽视,他还将证明DBA技能到领导力的转变是可行的。

  • Oracle备份和恢复简史

    这些年来,Oracle数据库备份和恢复方式已经发生了重大变化,特别是在Recovery Manager(RMAN)功能有了进一步改善之后。