你的位置:首页 > 软件开发 > 数据库 > 使用 xtrabackup 进行MySQL数据库物理备份

使用 xtrabackup 进行MySQL数据库物理备份

发布时间:2015-11-07 23:00:07
0. xtrabackup的功能能实现的功能:非阻塞备份innodb等事务引擎数据库、备份myisam表会阻塞(需要锁)、支持全备、增量备份、压缩备份、快速增量备份(xtradb,原理类似于oracle:tracking 上次备份之后发生修改的page.)、percona支持归档 ...
0. xtrabackup的功能1> 第一步prepare(两次prepare,第一次应用备份期间产生的redo log,进行前滚和回滚:replay在redo log中已经提交的事务,rollback没有提交的事务)直接将上面prepare好的所有文件,复制到mysqld的datadir目录(会读取my.cnf中的配置信息)。
[root@localhost mysql]# innobackupex --copy-back /backup/xtrabackup/full/2015-11-05_22-38-55/ --user=bkpuser --password=digdeep 151106 11:07:38 innobackupex: Starting the copy-back operationIMPORTANT: Please check that the copy-back run completes successfully.      At the end of a successful copy-back run innobackupex      prints "completed OK!".innobackupex version 2.3.2 based on MySQL server 5.6.24 Linux (i686) (revision id: 306a2e0)151106 11:07:38 [01] Copying ib_logfile0 to /var/lib/mysql/ib_logfile0151106 11:07:40 [01]    ...done151106 11:07:40 [01] Copying ib_logfile1 to /var/lib/mysql/ib_logfile1151106 11:07:41 [01]    ...done151106 11:07:41 [01] Copying ibdata1 to /var/lib/mysql/ibdata1151106 11:07:45 [01]    ...done151106 11:07:45 [01] Copying ./xtrabackup_info to /var/lib/mysql/xtrabackup_info151106 11:07:45 [01]    ...done151106 11:07:45 [01] Copying ./mysql/slave_master_info.ibd to /var/lib/mysql/mysql/slave_master_info.ibd151106 11:07:45 [01]    ...done[... ...]151106 11:07:57 [01] Copying ./t/db.opt to /var/lib/mysql/t/db.opt151106 11:07:57 [01]    ...done151106 11:07:57 [01] Copying ./t/t.frm to /var/lib/mysql/t/t.frm151106 11:07:57 [01]    ...done151106 11:07:57 completed OK![root@localhost mysql]# pwd/var/lib/mysql[root@localhost mysql]# lsaazj ibdata1 ib_logfile0 ib_logfile1 mysql performance_schema t xtrabackup_binlog_pos_innodb xtrabackup_info
启动成功之后,datadir目录下各种文件都产生了:[root@localhost mysql]# innobackupex --incremental /backup/xtrabackup/incr2 --incremental-basedir=/backup/xtrabackup/incr1/2015-11-06_11-33-16/ --user=bkpuser --password=digdeep1> 应用全备的redo log:下面我们来看如何还原:(root@localhost)[t]mysql>create database partial;(root@localhost)[t]mysql>use partial;(root@localhost)[partial]mysql>alter table partial.city discard tablespace;然后将 city.exp 和 city.ibd 拷贝到 /var/lib/mysql/partial/ 目录下,并修改权限:[root@localhost partial]# chown -R mysql:mysql /var/lib/mysql然后 可以看到import 成功了。部分恢复成功。 2> 再来一个增量:3> 再来一个增量:4> 备份完成之后,我们再来操作 t 表:此时的状态: 2)应用第一次增量备份的redo log:3)应用第二次增量备份的 redo log,并且仅限回滚(去掉 --redo-only选项):此时已经恢复到了最后一次备份完成时的状态了。可以看到对应的binlog postion为:mysql-bin.000002        482修改权限:启动msyqld:  mysqld_safe --user=mysql &如我们所期待的结果一样。说明到此时,前面的操作完全是正确的。(root@localhost)[(none)]mysql>source /var/lib/mysql/bin.sql然后在查看 t 表数据:一切完美完成,数据库被我们回复到了最新的状态。--lock-wait-timeout=60 该选项表示:我们在FTWRL时,如果有长查询,那么我们可以最多等待60S的时间,如果60秒之内长查询执行完了,我们就可以成功执行FTWRL了,如果60秒之内没有执行完,那么就直接报错退出,放弃。默认值为03> 并行优化:3> 备份slave: 

原标题:使用 xtrabackup 进行MySQL数据库物理备份

关键词:MYSQL

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。