xtrabackup 联机备份
2015-12-25 19:17
267 查看
1、安装xtrabackup [root@CentOS tmp]# cd /tmp/ [root@CentOS tmp]# ll percona-xtrabackup-2.3.2-Linux-i686.tar.gz -rw-r--r--. 1 root root 26387491 12月 21 22:24 percona-xtrabackup-2.3.2-Linux-i686.tar.gz [root@CentOS tmp]# tar zxf percona-xtrabackup-2.3.2-Linux-i686.tar.gz -C /usr/local/ [root@CentOS tmp]# cd /usr/local/ [root@CentOS local]# mv percona-xtrabackup-2.3.2-Linux-i686/ xtrabackup [root@CentOS local]# chown -R mysql:mysql xtrabackup [root@CentOS local]# cd xtrabackup/bin/ [root@CentOS bin]# ll 总用量 64064 lrwxrwxrwx. 1 mysql mysql 10 12月 21 22:33 innobackupex -> xtrabackup ##能够备份所有使用MyISAM、InnoDB及XtraDB引擎的表对象。 -rwxr-xr-x. 1 mysql mysql 4144096 10月 17 02:47 xbcloud -rwxr-xr-x. 1 mysql mysql 3020 10月 17 02:46 xbcloud_osenv -rwxr-xr-x. 1 mysql mysql 4029390 10月 17 02:47 xbcrypt -rwxr-xr-x. 1 mysql mysql 4073236 10月 17 02:47 xbstream ##可以压缩xtrabackup输出的信息,相当于linux中tar命令的增强版。 -rwxr-xr-x. 1 mysql mysql 53340808 10月 17 02:49 xtrabackup ##专用于备份innoDB及XtraDB引擎对象。 [root@CentOS bin]# vi /etc/profile export PATH=/usr/local/xtrabackup/bin:$PATH [root@CentOS bin]# source /etc/profile 2、xtrabackup命令全备 ##xtrabackup必须在mysql的服务端执行。 xtrabackup命令有两种模式: --backup 创建备份集。 --prepare 准备备份集。 ##这里没有指定数据库,默认就是全备。 # xtrabackup \ --defaults-file=/mydata/data/3306/my.cnf \ --backup \ --target-dir=/mydata/data/3306/xtrabackup/bak_20151221 \ --user=root \ --password=123 \ --socket=/mydata/data/3306/mysql_3306.sock [root@CentOS xtrabackup]# ll bak_20151221/ ##指定的bak_20151221,最后生成的其实是一个目录。 总用量 77864 -rw-r-----. 1 root root 386 12月 21 23:15 backup-my.cnf -rw-r-----. 1 root root 79691776 12月 21 23:15 ibdata1 drwx------. 2 root root 4096 12月 21 23:15 mysql drwx------. 2 root root 4096 12月 21 23:15 performance_schema drwx------. 2 root root 4096 12月 21 23:15 test drwx------. 2 root root 4096 12月 21 23:15 xtrabackup -rw-r-----. 1 root root 21 12月 21 23:15 xtrabackup_binlog_info -rw-r-----. 1 root root 117 12月 21 23:15 xtrabackup_checkpoints -rw-r-----. 1 root root 603 12月 21 23:15 xtrabackup_info -rw-r-----. 1 root root 2560 12月 21 23:15 xtrabackup_logfile ##xtrabackup命令创建的是一个有限的备份集(仅包含于InnoDB引擎相关的内容),而非完成备份集,如果要创建数据库的完整备份集,那就得用innobackupex命令。 3、innobackupex命令全备 ##使用innobackupex创建一份完整的全量备份: ##xtrabackup要求用户明确指定目标路径,二对于innobackupex并不需要特别明确,只要指定父目录即可。 # innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock /mydata/data/3306/xtrabackup [root@CentOS xtrabackup]# ll 2015-12-21_23-57-52/ ##innobackupex自动创建了以[日期_时间]组合命名的目录 总用量 77860 -rw-r-----. 1 root root 386 12月 21 23:57 backup-my.cnf -rw-r-----. 1 root root 79691776 12月 21 23:57 ibdata1 drwx------. 2 root root 4096 12月 21 23:57 mysql drwx------. 2 root root 4096 12月 21 23:57 performance_schema drwx------. 2 root root 4096 12月 21 23:57 test drwx------. 2 root root 4096 12月 21 23:57 xtrabackup -rw-r-----. 1 root root 21 12月 21 23:57 xtrabackup_binlog_info -rw-r-----. 1 root root 117 12月 21 23:57 xtrabackup_checkpoints -rw-r-----. 1 root root 570 12月 21 23:57 xtrabackup_info -rw-r-----. 1 root root 2560 12月 21 23:57 xtrabackup_logfile 4、innobackupex命令增量备份 ##使用innobackupex创建增量备份: # innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock --incremental --incremental-basedir=/mydata/data/3306/xtrabackup/2015-12-21_23-57-52 /mydata/data/3306/xtrabackup ##--incremental 告诉innobackupex这次是增量 ##--incremental-basedir 指定一个全量备份的路径,作为增量的基础。 ##--incremental-lsn 如果知道了备份开始时的LSN,就不需要全量备份作为基础了,指定参数--incremental-lsn即可。 [root@CentOS xtrabackup]# cd 2015-12-22_00-05-48 [root@CentOS 2015-12-22_00-05-48]# ll 总用量 328 -rw-r-----. 1 root root 386 12月 22 00:05 backup-my.cnf -rw-r-----. 1 root root 294912 12月 22 00:05 ibdata1.delta -rw-r-----. 1 root root 44 12月 22 00:05 ibdata1.meta drwx------. 2 root root 4096 12月 22 00:05 mysql drwx------. 2 root root 4096 12月 22 00:05 performance_schema drwx------. 2 root root 4096 12月 22 00:05 test drwx------. 2 root root 4096 12月 22 00:05 xtrabackup -rw-r-----. 1 root root 21 12月 22 00:05 xtrabackup_binlog_info -rw-r-----. 1 root root 123 12月 22 00:05 xtrabackup_checkpoints -rw-r-----. 1 root root 663 12月 22 00:05 xtrabackup_info -rw-r-----. 1 root root 2560 12月 22 00:05 xtrabackup_logfile ##对于MyISAM引擎表对象来说,其实也是全量备份,而对于InnoDB引擎的表对象来说,多个两个扩展名为<table_name>.delta和<table_name>.meta的文件。 [root@CentOS 2015-12-22_00-05-48]# cd test/ [root@CentOS test]# ll t3.* -rw-r-----. 1 root root 8586 12月 22 00:05 t3.frm -rw-r-----. 1 root root 32768 12月 22 00:05 t3.ibd.delta -rw-r-----. 1 root root 45 12月 22 00:05 t3.ibd.meta 5、innobackupex命令执行恢复 恢复操作分为两个步骤: 准备恢复(prepare):对于xtrabackup名利就是参数--prepare;对于innobackupex命令来说,对应的参数是--apply-log 执行恢复(copy-back):xtrabackup命令没有执行恢复相关的参数,只能手动恢复。对于innobackupex命令来说,对应的参数就是--copy-back,它的功能就是将指定的备份集,恢复到datadir目录。 ##首先对全量备份做恢复的准备工作: # innobackupex --defaults-file=/mydata/data/3306/my.cnf --apply-log --redo-only /mydata/data/3306/xtrabackup/2015-12-21_23-57-52 ##--apply-log 代表对备份集做恢复准备工作 ##--redo-only 如果进行准备工作的备份集操作完成后,还有其他增量备份集待准备,那么就必须指定本参数。 ##继续应用增量备份集 # innobackupex --defaults-file=/mydata/data/3306/my.cnf --apply-log /mydata/data/3306/xtrabackup/2015-12-21_23-57-52 --incremental-dir=/mydata/data/3306/xtrabackup/2015-12-22_00-05-48 ##--incremental-dir 指定要处理的增量备份机路径 ##执行copy-back # innobackupex --defaults-file=/mydata/data/3306/my.cnf --copy-back /mydata/data/3306/xtrabackup/2015-12-21_23-57-52 6、备份恢复的例子: ##首先全备3306数据库:(需要注意,如果准备恢复失败,备份集是不能回退的,所以备份集也是需要备份的。) # innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock /mydata/data/backup ##然后再数据库中做一些变更,再增量备份3306数据库: # innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock --incremental --incremental-basedir=/mydata/data/backup/2015-12-22_19-05-59 /mydata/data/backup ##全备准备恢复: # innobackupex --defaults-file=/mydata/data/3307.bak/my.cnf --apply-log /mydata/data/backup/2015-12-22_19-05-59 ##现假设3307库只剩下my.cnf配置文件,把3306恢复到3307: # innobackupex --defaults-file=/mydata/data/3307.bak/my.cnf --copy-back /mydata/data/backup/2015-12-22_19-05-59 # cp /mydata/data/3307.bak/* /mydata/data/3307/ # chown -R mysql:mysql * 7、备份恢复的例子: ##首先全备3306数据库: # innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock /mydata/data/backup ##然后再数据库中做一些变更,再增量备份3306数据库: # innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock --incremental --incremental-basedir=/mydata/data/backup/2015-12-22_19-05-59 /mydata/data/backup ##全备准备恢复: # innobackupex --defaults-file=/mydata/data/3307.bak/my.cnf --apply-log --redo-only /mydata/data/backup/2015-12-22_19-05-59 ##增量准备恢复: # innobackupex --defaults-file=/mydata/data/3307.bak/my.cnf --apply-log /mydata/data/backup/2015-12-22_19-05-59 --incremental-dir=/mydata/data/backup/2015-12-22_19-08-22 ##有时候“全备准备恢复”需要重复执行了两遍,因为第一遍没有生成日志文件,第二遍才会生成。注意第二遍执行“全备准备恢复”就不要加参数:--redo-only ##再次全备准备恢复:(其实也可以不用执行第二遍“全备准备恢复”来生成日志文件,在mysql启动的时候会自动生成) # innobackupex --defaults-file=/mydata/data/3307.bak/my.cnf --apply-log /mydata/data/backup/2015-12-22_19-05-59 ##现假设3307库只剩下my.cnf配置文件,把3306恢复到3307: # innobackupex --defaults-file=/mydata/data/3307.bak/my.cnf --copy-back /mydata/data/backup/2015-12-22_19-05-59 # cp /mydata/data/3307.bak/* /mydata/data/3307/ # chown -R mysql:mysql * 8、打包和压缩备份集 # innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock --stream=tar /tmp | gzip -> /mydata/data/backup/xtra_fullbackup.tar.gz
相关文章推荐
- Objective-C学习篇第八弹:协议的概念和使用
- web性能测试基于自己的网站
- 导入环信SDK时碰到这个样的一个问题
- android的gralloc分析
- GitLab完整搭建(版本6.3.1)
- opencv中VideoCapture的使用——打开网络摄像头/图像序列
- 2015苏州大学ACM-ICPC集训队选拔赛(1) 1001 1002 1010
- codevs 1222 信与信封问题(二分图的完美匹配)
- 从netty-example分析Netty组件续
- 线程间通信的消息机制的Message和Handler
- Java中如何把两个数组合并为一个
- mysql php使用
- CSS组件
- Oracle 数据库重放(Database Replay)功能演示
- oracle 多表条件查询 集合查询并分页
- v8资源
- WebStorm ES6 语法支持设置
- Mesos框架简介
- 如何正确使用log4j
- 需要注意学习.net过程的要点