MySQL Xtrabackup备份和恢复
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。Xtrabackup有两个主要的工具:xtrabackup、innobackupex,其中xtrabackup只能备份InnoDB和XtraDB两种数据表,innobackupex则封装了xtrabackup,同时可以备份MyISAM数据表。
1.安装mysql http://instance.iteye.com/blog/1454027
2.安装Xtrabackup ,下载Xtrabackup
配置源
#vi /etc/yum.repos.d/percona.repo
[percona]
name = CentOS $releasever - Percona
baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/
enabled = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona
gpgcheck = 1
添加key
#cd /etc/pki/rpm-gpg
#wget http://www.percona.com/downloads/RPM-GPG-KEY-percona
安装Xtrabackup
yum install xtrabackup
备份及恢复 一. 整库备份及恢复
①备份
#innobackupex-1.5.1 --user=root --password=1234 --defaults-file=/etc/my.cnf /var/backups
②恢复
a. 停止 MySQL 服务:# /etc/init.d/mysqld stop
b. #innobackupex-1.5.1 --apply-log --defaults-file=/etc/my.cnf /var/backups/2012-03-20_19-30-04
# innobackupex-1.5.1 --copy-back --defaults-file=/etc/my.cnf /var/backups/2012-03-20_19-30-04
使用cd或者ls 命令看看你的数据库目录下是不是有文件了?
修改数据库文件权限,否则无法启动。(这步我是cd到原数据库目录下进行的)
#chown -R mysql:mysql *
重启数据库,看恢复是否成功。
二.全量备份及恢复
使用xtrabackup,仅限InnoDB和xtradb表,且注意mysql配置文件my.cnf中“default_table_type = InnoDB”否则不成功
①备份
#xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/var/backups/base/
②恢复
执行两次:
#xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/var/backups/base
#xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/var/backups/base
因为第二次prepare会帮助我们生成redo log文件,从而加快MySQL数据库启动的速度。
将数据库停掉,删除数据库下的ib*(ib开头的所有)文件。将/var/backups/base目录下的ib*文件拷贝到数据库目录。
#chown mysql:mysql ib*
重启数据库,看恢复是否成功。
三.增量备份及恢复
xtrabackup做增量仅限InnoDB和xtradb表,且注意mysql配置文件my.cnf中“default_table_type= InnoDB”否则不成功
做增量前当然要先进行全量备份,在全量的基础上来进行增量
首先进行全量备份
# xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/var/backups/base/
在全量备份的基础上进行增量
# xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/var/backups/1/ -- incremental-basedir=/var/backups/base
xtrabackup --defaults-file=配置文件 --target-dir=全量备份存储目录 --incremental-basedir=增量存储目录 --backup
注:/var/backups/1/是每次都需修改的。比如第二次增量就改成/var/backups/2
增量恢复。(步骤同全量恢复,只是在执行恢复命令的时候中间多一步)
# xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/var/backups/base
# xtrabackup --target-dir=/backups/base --prepare --incremental-dir=/var/backups/1
# xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/var/backups/base
将数据库停掉,删除数据库下的ib*文件。将/var/backups/base目录下的ib*文件拷贝到数据库目录。
#chown mysql:mysql ib*
重启数