MySQL备份与恢复之物理备份xtrabackup

安装perl模块

yum install perl-DBD*
yum install perl-Time-*

安装xtrabackup

rpm包
[root@cluster4 x86_64]# ls -lrt
total 46512
-rw-r--r-- 1 root root  7098196 Aug  5 10:08 percona-xtrabackup-2.1.4-656.rhel6.x86_64.rpm
-rw-r--r-- 1 root root  9344980 Aug  5 10:09 percona-xtrabackup-test-2.1.4-656.rhel6.x86_64.rpm
-rw-r--r-- 1 root root 31178884 Aug  5 10:11 percona-xtrabackup-debuginfo-2.1.4-656.rhel6.x86_64.rpm

安装
[root@cluster4 x86_64]# rpm -ivh *.rpm
warning: percona-xtrabackup-2.1.4-656.rhel6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
Preparing...                ########################################### [100%]
   1:percona-xtrabackup     ########################################### [ 33%]
   2:percona-xtrabackup-test########################################### [ 67%]
   3:percona-xtrabackup-debu########################################### [100%]
[root@cluster4 x86_64]# xtrabackup  --version
xtrabackup version 2.1.4 for Percona Server 5.1.70 unknown-linux-gnu (x86_64) (revision id: 656)

2个工具

xtrabackup:不能备份Myisam
innobackupex:可以备份Myisam,实质是加read锁

innobackupex完全备份与恢复

全量备份

创建目录
/opt/dbdata/mysql_3306/backup
配置my.cnf文件(其中my.cnf中需要添加以下配置项,或者单独设定一个my.cnf文件,内容如下:)
[mysqld]
datadir=/opt/dbdata/mysql_3306
innodb_data_home_dir=/opt/dbdata/mysql_3306
innodb_data_file_path=ibdata1:10M:autoextend
innodb_log_group_home_dir=/opt/dbdata/mysql_3306
innodb_log_files_in_group=2
innodb_log_file_size=56623104
innodb_page_size=16384
innodb_undo_tablespaces=0
执行备份
innobackupex --user=root /opt/dbdata/mysql_3306/backup/full  --no-timestamp --defaults-file=/etc/my.cnf

完全恢复

  1. 关闭数据库
  2. 原数据库目录更名
  3. 新建同名数据库目录
  4. 执行恢复
如果不是在原服务器上执行恢复的话,就不用步骤1和2。
如果不是恢复在原数据库端口port和数据目录datadir下,需要修改my.cnf文件。具体参考下文。
关闭数据库
[root@cluster4 mysql_3306]# mysqladmin -uroot shut
修改目录名
[root@cluster4 mysql_3306]# mv mysql_3306 mysql_3306_old
新建数据目录
[root@cluster4 mysql_3306]#mkdir -p mysql_3306
开始恢复
[root@cluster4 dbdata]# innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /opt/dbdata/mysql_3306/backup/full/
注意这里的 my.cnf和原库的my.cnf保持一致即可。或者只需将原my.cnf的mysqld部分拷贝到一个新文件中,在defaults-files中指定。可以将原数据库恢复到你需要的port和datadir中。(各种恢复模式通用)
修改权限
chown -R mysql:mysql mysql_3306
打开数据库
. mysqld_multi start 1

恢复完成!

innobackupex增量备份与恢复


创建备份目录
# mkdir /opt/dbdata/hotbackup
base备份
# innobackupex --user=root --defaults-file=/etc/my.cnf /opt/dbdata/hotbackup/base  --no-timestamp 
增量备份一
# innobackupex --user=root --defaults-file=/etc/my.cnf /opt/dbdata/hotbackup/incremental1 --incremental-base=/opt/dbdata/hotbackup/base --no-timestamp --incremental
增量备份二
# innobackupex --user=root --defaults-file=/etc/my.cnf /opt/dbdata/hotbackup/incremental2 --incremental-base=/opt/dbdata/hotbackup/incremental1 --no-timestamp --incremental


base恢复
# innobackupex --apply-log --redo-only --use-memory=2G /opt/dbdata/hotbackup/base/
恢复增量一
# innobackupex --apply-log --redo-only --use-memory=2G  /opt/dbdata/hotbackup/base --incremental-dir=/opt/dbdata/hotbackup/incremental1
恢复增量二
# innobackupex --apply-log --use-memory=2G  /opt/dbdata/hotbackup/base --incremental-dir=/opt/dbdata/hotbackup/incremental2


全部恢复
# innobackupex --apply-log --use-memory=2G /opt/dbdata/hotbackup/base/
至此,只是将数据恢复到了备份目录/opt/dbdata/hotbackup/base下。需要将数据cp到指定的datadir目录中


数据恢复到数据文件目录
# mysqladmin -uroot shut
# mv mysql_3306 mysql_3306_bk2
# mkdir mysql_3306




#innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /opt/dbdata/hotbackup/base/
chown -R mysql:mysql mysql_3306
chmod -R 755 mysql_3306
mysqld_multi start 1


恢复完成!


innobackupex增量备份与基于时间点的恢复

innobackupex point to time recovery

备份和恢复策略和上述保持一致,注意以下事项:
根据需要恢复到的时间点,来确定需要恢复哪些增量。
在备份的目录中找到binlog文件,用下面命令去查找都需要哪些binlog。
起始点的binlog在最后一个增量备份目录下下的xtrabackup_binlog_info中

分析binlog(binlog都在备份目录中)
mysqlbinlog --start-position=xxxxx mysql-bin.000062 | less
mysqlbinlog --start-datetime="2014-09-06 09:00:00" mysql-bin.000062 | less
mysqlbinlog --start-position=xxxx --stop-position=xxxx mysql-bin.000062 | less


开始基于时间点或者位置的恢复
mysqlbinlog --start-position=xxx   mysql-bin.000139|mysql -uroot -p -S /opt/dbdata/mysql_3306/sock/mysql.sock
mysqlbinlog --stop-position=xxx    mysql-bin.000140|mysql -uroot -p -S /opt/dbdata/mysql_3306/sock/mysql.sock


恢复完成后授权,打开数据库。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值