创新路
我们一直在努力

mysql备份-innobackupex

一、安装软件

    1.rpm -ivh  libev-4.15-1.el6.rf.x86_64.rpm

    2.yum -y  install   perl-DBD-mysql   perl-Digest-MD5

    3.rpm  -ivh  percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

    4.rpm  -ql  percona-xtrabackup-24

    提供2个备份命令

        /usr/bin/innobackupex命令集成了命令xtrabackup,所以可以支持MYISAM存储引擎

        /usr/bin/xtrabackup命令仅支持InnoDB和XtraDB存储引擎的表

二、innobackupex备份命令格式

    innobackupex  <选项>

    常用选项  

        –user  用户名    

        –password  密码     

        –databases="库名"     

        –no-timestamp  不使用时间戳做备份文件的子目录名

        –databases="库名"  //单个库    

        –databases= "库名1  库名2"  //多个库    

        –databases="库名.表名"  /表

        –redo-only 日志合并 

        –apply-log 准备还原 ( 回滚日志 ) 

        –copy-back 恢复数据  

        –incremental 目录名 增量备份

        –incremental–basedir=目录名 增量备份时,指定上一次备份数据存储的目录名

        –incremental-dir= 目录名 准备恢复数据时,指定增量备份数据存储的目录名

        –export 导出表信息           import 导入表空间(sql命令使用)

 

三、innobackupex完全备份/恢复

    1.完全备份

    innobackupex –user root –password 654321 –databases="mysql performance_schema sys gamedb" /allbak  –no-timestamp

    //备份4个库的所有数据,/allbak自己定义,必须为空,可以没有该文件夹,可以多层文件夹 ,不使用databases指定库备份所有数据库数据

 

    2.完全恢复(要求数据库目录是空的) 

    思路:重做日志(–apply-log)    恢复数据(–copy-back)    重启数据库服务

    (1)innobackupex  –user root –password 123456 –apply-log /12/buydbfull/   //重做日志,使得数据文件处于一致性状态

    (2)systemctl stop mysqld.service             //停住服务

    (3)rm   -rf  /var/lib/mysql/*                  //清空数据库目录

    (4)innobackupex  –user root –password 123456  –copy-back  /allbak     //恢复数据

    (5)chown  -R  mysql:mysql  /var/lib/mysql    //修改权限

    (6)systemctl  restart  mysqld       //重启服务

    (7)mysql   -uroot  -p123456        //进入数据库验证

 

三、innobackupex增量备份/恢复

    backup-my.cnf   //执行备份命令分配的系统资源     ibdata1.delta    //.delta说明是增量备份  

    xtrabackup_checkpoints:记录备份类型 和lsn范围(提取的事务日志文件中LSN:日志序列号)   lsn对比确定增量数据

    backup_type: full-backuped(未重做日志)   full-prepared(已重做日志)   log-applied(重做合并日志)

 

    1.增量备份

    (1)做首次备份(完全备份)

    innobackupex –user root –password 123456 –databases="mysql sys buydb performance_schema" /12/fullsb –no-timestamp

    (2)插入新记录,执行增量备份    存放目录 /new1dir

        –incremental  目录名   #增量备份    –incremental-basedir=目录名  #增量备份时,指定上一次备份文件存储的目录名

        insert  into  ss  values(8080),(8080);

        innobackupex –user root –password 123456 –databases="mysql sys buydb performance_schema"  –incremental /12/new1dir –incremental-basedir=/12/fullsb –no-timestamp 

         插入新记录,执行增量备份    存放目录 /new2dir

        insert  into  ss   values(8099),(8099);

        innobackupex –user root –password 123456 –databases="mysql sys buydb performance_schema"  –incremental /12/new2dir –incremental-basedir=/12/new1dir –no-timestamp

 

    2.增量恢复

    思路:重做合并日志     停止服务  清空数据库目录   恢复数据  启动服务

            –apply-log准备恢复数据  –redo-only合并日志 –incremental-dir=目录名 #增量恢复数据时指定备份目录名称  –copy-back 恢复数据

     (1)innobackupex –user root –password 123456 –apply-log –redo-only  /12/fullsb   //按顺序重做合并日志,同时也会合并备份数据

     (2)innobackupex –user root –password 123456 –apply-log –redo-only  /12/fullsb    –incremental-dir=/12/new1dir

     (3)innobackupex –user root –password 123456 –apply-log –redo-only  /12/fullsb    –incremental-dir=/12/new2dir

     (4)systemctl  stop mysqld.service     //停止服务

     (5)rm   -rf   /var/lib/mysql/*          //清空数据库目录

     (6)innobackupex  –copy-back /12/fullsb/      //拷贝备份文件到数据库目录

     (7)chown  -R  mysql:mysql  /var/lib/mysql    //修改文件的所有者/组mysql

     (8)systemctl   restart  mysqld                //重启数据库服务

     (9)mysql   -uroot   -p654321        //进入数据库验证

 

四、使用完全备份文件恢复单个表

    –export  导出表信息      *.ibd   表空间文件

    mysql> alter  table  库.表  discard  tablespace;  删除表空间

    mysql> alter  table  库.表  import   tablespace;  导入表空间

 

    innobackupex –user root –password 123456 –databases="buydb" /12/buydb1  –no-timestamp  //完全备份

drop table buydb.b;       //误删除b表

     mysql> create table b (name char(15));   //按照备份时的表结构创建删除的表

    innobackupex –user root –password 123456 –databases="buydb" –apply-log  –export  /12/buydb1 //使用备份文件导出表信息

    mysql> alter table buydb.b discard tablespace;   //删除创建表的表空间文件

    cp /12/buydb1/buydb/b.{cfg,exp,ibd}  /var/lib/mysql/buydb/    //把导出的表信息文件,拷贝到对应的数据库目录下

    chown  mysql:mysql  /var/lib/mysql/buydb/b.*           //修改权限

    mysql> alter table b import tablespace;    //导入表空间

    mysql> select   * from  studb.a;          //验证

    rm -rf /var/lib/mysql/buydb/b.{cfg,exp}    //删除不必要的表

未经允许不得转载:天府数据港官方信息博客 » mysql备份-innobackupex

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机