好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

无用mysql备份热备工具

无用mysql备份热备工具

xtrabackup是一个开源的MySQL热备份工具,可以实现不加锁备份。它可以备份InnoDB,XtraDB以及MyISAM。在 http://www.percona.com/docs/wiki/percona-xtrabackup:start 可以下载到最新的安装文件。ubuntu下的安装的方法见 http://uguptablog.blogspot.com/2010/01/intalling-xtrabackup-10-on-ubuntu-910.html

安装完之后会得到2个可执行文件innobackupex-1.5.1和xtrabakup,你可以拷贝到/usr/local/bin下面。xtrabakup只能备份InnoDB和XtraDB,而innobackupex-1.5.1是对xtrabackup的一个封装,可以用来备份MyISAM,但是不直接支持增量备份,xtraback直接支持增量备份。

1.innobackupex的使用
我们先创建两个数据库,一个test数据是已经有的,里面创建一个innodb表stu。然后创建一个myisam_test数据库,里面是一个mysiam类型的表color。

1 mysql>  select   *  from   stu; 2 + ------+------+ 3 | id   |  name   | 4 + ------+------+ 5 |    1 | a    | 6 |    2 | b    | 7 |    3 | c    | 8 |    4 | d    | 9 + ------+------+ 10 4  rows   in   set   (0.00 sec) 11   12 mysql>  select   *  from   color; 13 + ------+-------+ 14 | id   |  name    | 15 + ------+-------+ 16 |    1 | red   | 17 |    2 | green | 18 + ------+-------+ 19 2  rows   in   set   (0.00 sec)

现在我们来备份这两个数据库。操作的语句如下:

1 thwu@ubuntu:~/programs/mysql/bin$ innobackupex-1.5.1 --defaults- file =/home/thwu/programs/mysql/my.cnf --no-lock --user=root --port=8099 --password= "xxxx"   --databases= "test myisam_test" /home/thwu/backup/innobackupex/ 2>/home/thwu/backup/innobackupex/backup1.log 2   3 xtrabackup  Ver undefined Rev undefined  for 5.0.84 pc-linux-gnu (i686) 4 Copying /home/thwu/programs/mysql-5.1.48/var/ibdata1 5   to /home/thwu/backup/innobackupex/2010-11-10_16-57-29/ibdata1 6   ... done 7 Copying ./ test /innodb_monitor.ibd 8   to /home/thwu/backup/innobackupex/2010-11-10_16-57-29/ test /innodb_monitor.ibd 9   ... done 10 Copying ./ test /stu.ibd 11   to /home/thwu/backup/innobackupex/2010-11-10_16-57-29/ test /stu.ibd 12   ... done 13 xtrabackup: The latest check point ( for incremental):  '0:44243' 14 xtrabackup: Stopping log copying thread. 15 xtrabackup: Transaction log of lsn (0 44243) to (0 44032) was copied.

上面提示备份过程,记录下bin-log的位置,以后恢复的时候就会从这个位置开始重做,以至完全恢复。下面是备份生成的文件:

1 thwu@ubuntu:~/backup/innobackupex$  ls 2 2010-11-10_16-57-29  backup1.log 3 thwu@ubuntu:~/backup/innobackupex$  cd   2010-11-10_16-57-29/ 4 thwu@ubuntu:~/backup/innobackupex/2010-11-10_16-57-29$  ls 5 backup-my.cnf  ibdata1  myisam_test  mysql-stderr  mysql-stdout   test   xtrabackup_checkpoints  xtrabackup_logfile

备份后又插入几条数据:

1 insert   into   stu  values   (5,  'e' ), (6,  'f' ); 2 insert   into   color  values   (3,  'blue' ), (4, 'white' );

现在模拟恢复过程:

1 mysql>  drop   database   myisam_test; 2 mysql>  drop   database   test; 1 ./shutdown_mysql.sh 2 rm   ibdata1 3 rm   ib_logfile* 4 ./start_mysql.sh 5   6 #为恢复做准备,产生新的日志文件 7 innobackupex-1.5.1 --apply-log --defaults- file =/home/thwu/programs/mysql/my.cnf --no-lock --user=root --port=8099 --password= "xxxx" /home/thwu/backup/innobackupex/2010-11-10_16-57-29 8 #拷贝日志数据文件回原来的位置 9 innobackupex-1.5.1 --copy-back --defaults- file =/home/thwu/programs/mysql/my.cnf --no-lock --user=root --port=8099 --password= "xxxx" /home/thwu/backup/innobackupex/2010-11-10_16-57-29 10   11 ./shutdown_mysql.sh 12 #根据需要改mysql数据文件目录的权限 13 ./start_mysql.sh

现在就恢复到了备份的那一时刻,注意恢复的过程要启动MySQL。要想恢复到现在,还需要根据前面的bin-log的位置对后面的内容进行重做,这个和逻辑备份是一样的,请参考 http://www.sugarsfree.org/?p=254 ,像我们这种使用drop属于误操作,需要根据位置进行恢复,跳过误操作的语句。
不然恢复的时候又重做了drop,刚恢复好的又被删除了。

压缩备份:
压缩备份其实就是将备份的数据进行压缩,恢复的时候先tar izxvf解压一下再恢复,后面就一样了。命令为:

1 innobackupex-1.5.1 --defaults- file =/home/thwu/programs/mysql/my.cnf --no-lock --user=root --port=8099 --password= "xxxx"   --databases= "test myisam_test"   --stream= tar   /home/thwu/backup/innobackupex/ 2>/home/thwu/backup/innobackupex/backup2.log | gzip   > /home/thwu/backup/innobackupex/2010_11_16. tar .gz

查看更多关于无用mysql备份热备工具的详细内容...

  阅读:49次

上一篇: sun告文

下一篇:mysql时区设置