设为首页 收藏本站
查看: 827|回复: 0

[经验分享] xtrabackup对MySQL进行备份和恢复(centos 6.6)

[复制链接]

尚未签到

发表于 2018-4-28 10:06:41 | 显示全部楼层 |阅读模式
  1、xtrabackup使用范围
  xtrabackup:用于热备份innodb, xtradb引擎的数据表,不能备份其他类型的表,也不能备份数据表结构;
  innobackupex:将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力(主要应用该脚本)。

  

  2、xtrabackup的安装
  wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.2/RPM/rhel6/i686/percona-xtrabackup-2.1.2-612.rhel6.i686.rp
  

  rpm -ivh percona-xtrabackup-2.1.2-612.rhel6.i686.rpm
  说明:rpm安装的依赖包根据提醒安装既可。
  

  3、安装好软件后,就可以直接使用
  eg1:完整备份数据库
  innobackupex --user=root --password=xxxxx --defaults-file=/etc/my.cnf --database=phpcms /mybak/
  

  说明:
  /etc/my.cnf,需要配置datadir路径
[mysqld]

  datadir = /usr/local/mysql/data   #在[mysqld]单元末尾中添加数据库存放的文件
  ---------------------------------------------------------------------------
  --database=phpcms #表示需要备份的数据库,如果不加表示备份所有数据库(既完整备份)
  /tmp/             #备份的目标位置
  ---------------------------------------------------------------------------
[root@mysql 2015-10-19_21-06-56]# ll                          #备份的信息

  total 18468
  -rw-r--r-- 1 root root      260 Oct 19 21:06 backup-my.cnf
  -rw-r----- 1 root root 18874368 Oct 19 21:06 ibdata1
  drwxr-xr-x 2 root root    16384 Oct 19 21:06 phpcms
  -rw-r--r-- 1 root root       13 Oct 19 21:06 xtrabackup_binary
  -rw-r--r-- 1 root root       23 Oct 19 21:06 xtrabackup_binlog_info
  -rw-r----- 1 root root       89 Oct 19 21:06 xtrabackup_checkpoints
  -rw-r----- 1 root root     2560 Oct 19 21:06 xtrabackup_logfile
  

  eg2:备份打包
  innobackupex --user=root --password=xxxxxxx --defaults-file=/etc/my.cnf --database=phpcms --stream=tar /mybak > /mybak/phpcms.tar
  

  说明:
  --stream=tar #表示打包方式
  

  eg3:完整备份并打包压缩
  innobackupex --user=root --password=xxxxxxx --defaults-file=/etc/my.cnf --database=phpcms --stream=tar /mybak/ | gzip > /mybak/phpcms.tar.gz
  

  eg4:远程备份打包
  innobackupex --user=root --password=xxxxxx --defaults-file=/etc/my.cnf --database=phpcms --stream=tar /mybak/ | ssh root@192.168.1.124 cat ">"  /tmp/phpcms.tar
  

  说明:
  root@192.168.1.124's password: >> log scanned up to (1668412)
[01] Streaming ./ibdata1

  >> log scanned up to (1668412)
  >> log scanned up to (1668412)
  >> log scanned up to (1668412)   #一直在不断扫描,在这期间需输入远程备份主机的密码(现实环境还是通过证书验收)
  

  eg5:增量备份
  innobackupex --user=root --password=xxxxxx --database=phpcms --incremental
  --incremental-basedir=/mybak/2015-10-19_21-06-56/ /mybak/add/
  

  #增量备份主要是通过lsn的表示进行判断(针对innodb引擎
[root@mysql 2015-10-19_21-06-56]# cat xtrabackup_checkpoints

  backup_type = full-prepared           #全局备份
  from_lsn = 0
  to_lsn = 1668412
  last_lsn = 1668412                    #结束位置
  compact = 0
  

[root@mysql 2015-10-19_21-48-20]# cat xtrabackup_checkpoints

  backup_type = incremental            #增量备份
  from_lsn = 1668412                   #“开始位置”和上面“结束位置”一致
  to_lsn = 1768416
  last_lsn =1768416
  compact = 0
  

  说明:
  注意:innobackupex 增量备份仅针对InnoDB这类支持事务的引擎,对于MyISAM等引擎,则仍然是全备。
  

  

  4、数据还原
  eg1:完整备份恢复
  

  第一步:删除需要恢复得数据库
  /etc/init.d/mysql stop

  mv /usr/local/mysql/data/ /usr/local/mysql/data/
  mkdir /usr/local/mysql/data/                    #恢复得时候,该目录必须为空
  

  第二步:然后将备份文件中的日志应用到备份文件中的数据文件
  

  innobackupex --user=root --password=xxxxxx --defaults-file=/etc/my.cnf --apply-log /mybak/2015-10-19_21-06-56/  

  

  这里的--apply-log指明是将日志应用到数据文件上,完成之后将备份文件中的数据恢复到数据库中:
  --defaults-file:数据还原的目标位置
  

  innobackupex --user=root --password=xxxxxx --defaults-file=/etc/my.cnf --copy-back /mybak/2015-10-19_21-06-56/
  --copy-back指明是进行数据恢复。数据恢复完成之后,需要修改相关文件的权限mysql数据库才能正常启动。
  

  chown -R mysql:mysql /usr/local/mysql/data/
  service mysql start
  

  注意:如果数据在远程主机上,首先将完整备份复制到本地主机上,如果是tar包,则需要先解包,解包命令为:tar –izxvf dbbackup20110809.tar,这里必须使用-i参数。然后执行恢复操作。
  

  eg2:恢复单个数据库
  1、cp /etc/my.cnf /mybak/
  2、vim /mybak/my.cnf
  3、vim /mybak/my.cnf
  datadir = /usr/local/mysql/data/phpcms   #确保该目录为空
  4、然后执行如下操作
  innobackupex --user=root --password=xxxxxx --defaults-file=/mybak/my.cnf --apply-log /mybak/2015-10-19_21-06-56/
  innobackupex --user=root --password=xxxxxx --defaults-file=/mybak/my.cnf --copy-back /mybak/2015-10-19_21-06-56/
  5、将恢复后的数据,copy到指定的目录即可  

  

  eg3:增量备份恢复:

  

  增量备份恢复的步骤和完整备份恢复的步骤基本一致,只是应用日志的过程稍有不同。增量备份恢复时,是先将所有的增量备份挨个应用到完整备份的数据文件中,然后再将完整备份中的数据恢复到数据库中。命令如下:
  

  应用第一个增量备份
  innobackupex --user=root --password=xxxxxx --defaults-file=/etc/my.cnf --apply-log /mybak/2015-10-19_21-06-56/ --incremental-dir=/mybak/add/2015-10-19_21-48-20/  

  应用第二个增量备份
  innobackupex --user=root --password=xxxxxx --defaults-file=/etc/my.cnf --apply-log /mybak/2015-10-19_21-06-56/ --incremental-dir=/mybak/add/2015-10-19_21-48-54/
  将完整备份中的数据恢复到数据库中
  innobackupex --user=root --password=xxxxxx --defaults-file=/etc/my.cnf --copy-back /mysqlbackup/full/2015-10-19_21-06-56/
  其中,--incremental-dir指定要恢复的增量备份的位置
  


  

  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-453022-1-1.html 上篇帖子: 配置Centos 6.5的yum源 下篇帖子: Centos 6.5配置IP地址
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表