您的位置:首页 > 数据库 > MySQL

mysql备份热备工具

2011-03-03 10:24 351 查看
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.00sec)
11
12
mysql>
select
*
from
color;
13
+
------+-------+
14
|id|
name
|
15
+
------+-------+
16
|1|red|
17
|2|green|
18
+
------+-------+
19
2
rows
in
set
(0.00sec)
现在我们来备份这两个数据库。操作的语句如下:

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=
"testmyisam_test"
/home/thwu/backup/innobackupex/2>/home/thwu/backup/innobackupex/backup1.log
2
3
xtrabackupVerundefinedRevundefined
for
5.0.84pc-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:Thelatestcheckpoint(
for
incremental):
'0:44243'
14
xtrabackup:Stoppinglogcopyingthread.
15
xtrabackup:Transactionlogoflsn(044243)to(044032)wascopied.
上面提示备份过程,记录下bin-log的位置,以后恢复的时候就会从这个位置开始重做,以至完全恢复。下面是备份生成的文件:

1
thwu@ubuntu:~/backup/innobackupex$
ls
2
2010-11-10_16-57-29backup1.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.cnfibdata1myisam_testmysql-stderrmysql-stdout
test
xtrabackup_checkpointsxtrabackup_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,刚恢复好的又被删除了。

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

1
innobackupex-1.5.1--defaults-
file
=/home/thwu/programs/mysql/my.cnf--no-lock--user=root--port=8099--password=
"xxxx"
--databases=
"testmyisam_test"
--stream=
tar
/home/thwu/backup/innobackupex/2>/home/thwu/backup/innobackupex/backup2.log|
gzip
>/home/thwu/backup/innobackupex/2010_11_16.
tar
.gz
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: