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

[经验分享] Innobackupex MySQL 全备、增备及恢复

[复制链接]

尚未签到

发表于 2018-10-5 08:45:25 | 显示全部楼层 |阅读模式
  一、安装xtrabackup
  shell> wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.8-1.el6.x86_64.rpm
  rpm -ivh percona-xtrabackup-24-2.4.8-1.el6.x86_64.rpm
  注:如果需要依赖软件,请自行安装
  yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses-devel zlib-devel
  二、innobackupex 全备
  参数:
  --incremental-basedir=/db/db_backup/  第一次增备指定全备路径,第二次增备指定第一次增备的路径
  --incremental 参数说明这是一次增备,并指定增备路径
  --no-lock 不允许使用flush tables with read lock表锁。如果你的所有表是INNODB并且你不关心二进制日志备份的位置。如果有任何DDL语句被执行或任何非INNODB表上的update操作,这个选项就不能使用
  --no-timestamp 如果不加的话会在备份目录下生成一个备份时间的目录,备份数据存在该目录下
  --use-memory=4G 该参数只能和参数--apply-log配合使用,被用于xtrabackup做creash恢复时准备锁使用的内存量
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  全备:
  shell> innobackupex --user=user --password=passwd --defaults-file=/etc/my.cnf --no-lock /db/db_backup/full_backup/3306
  #如果你需要做成自动脚本,请在脚本里加上判断备份的文件大小,如果有问题你还可以通过发给你的邮件来知道是否备份有问题
  三、全备恢复
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  shell > /etc/init.d/mysql.server stop  # 首先关闭数据库
  shell > cd /db/backup_db  # 切换到备份目录
  shell > mv /usr/local/mysql/data data.old  # 将原来的数据目录备份一下
  shell > innobackupex --apply-log alldatabase  # 在备份上应用日志,一般没有看到报错且最后显示 OK 就没有问题 ( --use-memory 使用该参数加快速度 )
  12:07:33 completed OK!
  shell > innobackupex --copy-back alldatabase  # 将备份还原到 my.cnf 指定的 datadir 中,不指定 --defaults-file,默认 /etc/my.cnf
  Error: datadir must be specified.  # 报错信息显示,在默认配置文件 /etc/my.cnf 中,没有找到 datadir 配置项
  shell > vim /etc/my.cnf  # 加入 datadir 配置项
  datadir         = /usr/local/mysql/data
  shell > innobackupex --copy-back alldatabase  # 再次执行 copy 动作,没有报错且显示 OK
  10:17:52 completed OK!
  shell > ll -d /usr/local/mysql/data
  drwxr-x--- 6 root root 4096 07月 10 18:17 /usr/local/mysql/data
  shell > chown -R mysql.mysql /usr/local/mysql/data  # 修改数据目录权限
  shell > /etc/init.d/mysql.server start
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  注意:
  1.innobackupex进行备份是将数据库所有的库都进行了备份,如果需要单独还原某个备份库,请恢复到别的数据库上,单独备份出来
  2.如果数据库没有多大,建议使用mysqldump进行备份
  四、innobackupex增量备份
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  第一次增备:
  shell> innobackupex --defaults-file=/etc/my.cnf --no-timestamp --incremental /db/backup/increment_backup/3306/incre01/ --no-lock --incremental-basedir=/db/db_backup/full_backup/3306/2018-07-13_09-15-01
  第二次增量备份:
  innobackupex --user=user --password=password --no-timestamp --no-lock --incremental-basedir=/db/backup/increment_backup/3306/incre01/ --incremental /db/backup/increment_backup/3306/incre02
  #第二次增备是在第一次增备的基础上,所以 --incremental-basedir 指定的是第一次增备目录,最后指定的第二次增备目录
  备份目录下的文件可以看出是增备还是全备
  shell>cat xtrabackup_checkpoints
  backup_type = incremental   #这个提示这是一次增量备份
  from_lsn = 23780427057
  to_lsn = 23782487265
  last_lsn = 23782487265
  compact = 0
  recover_binlog_info = 0
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  注意:
  1.做几次增量备份是针对数据库每次数量量比较大的数据库,如果每次增长量不大,建议直接从全备上直接进行增量备份(注意做好目录区别)
  2.如果写脚本做自动备份,请做好判断,另外需要增加对磁盘空间的判断,如果磁盘空间不足,请删除N天前的备份
  五、增量备份恢复
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  shell > /etc/init.d/mysql.server stop  # 关闭数据库
  shell > cd /data/backup_db
  shell > mv /usr/local/mysql/data data.old02  # 备份原有数据库
  shell > innobackupex --apply-log --redo-only /db/db_backup/full_backup/3306/2018-07-13_09-15-01  # 指定全备目录,--redo-only 对已提交的事务进行前滚,仅最后一次增备恢复不需要添加该参数
  shell > innobackupex --apply-log --redo-only /db/db_backup/full_backup/3306/2018-07-13_09-15-01 --incremental-dir=/db/backup/increment_backup/3306/incre01/  # --incremental-dir 指定第一次增备目录 ( 绝对路径 )
  shell > innobackupex --apply-log /db/db_backup/full_backup/3306/2018-07-13_09-15-01 --incremental-dir=/db/backup/increment_backup/3306/incre02/  # 指定第二次增备目录,最后一次增备还原不需要添加 --redo-only 参数
  shell > innobackupex --copy-back /db/db_backup/full_backup/3306/2018-07-13_09-15-01  # 最后一步,复制整合后的全备文件,位置为 my.cnf 中 datadir 指定路径
  shell > chown -R mysql.mysql /usr/local/mysql/data
  shell > /etc/init.d/mysql.server start  # 启动数据库,查看数据是否恢复
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  完成之后,请查看下数据是否恢复
  +++++++++++++++++++++
  本文转自:
  https://www.cnblogs.com/wangxiaoqiangs/p/5961413.html
  http://www.dataguru.cn/thread-450844-1-1.html


运维网声明 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-612474-1-1.html 上篇帖子: mysql基本操作-数据表操作 下篇帖子: 远程访问mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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