zoukankan      html  css  js  c++  java
  • xtrabackup备份mysql

    innobackupex是xtrabackup内封装的一个脚本,里面能针对不同版本的mysql使用不同的脚本命令,以及针对myisam引擎和innodb引擎的处理,处理myisam要自己添加读锁。

    mysql用户备份需要的权限

    RELOAD, LOCK TABLES (除非指定 --no-lock 参数) 以便具备 flush tables with read lock 能力
    REPLICATION CLIENT 具备获得二进制日志文件备份能力
    CREATE TABLESPACE 具备恢复整个表空间,并导入表的能力
    SUPER 用于启动/关闭从服务器复制线程环境

    innobackupex命令参数

      --user   //指定备份mysql的mysql用户

      --password   //指定myqsl用户密码    

      --defaults-file    //  指定要备份的mysql实例的my.cnf文件,如果默认为/etc/my.cnf,次参数可以省略。  

      --no-timestamp //自定义生成目录,此目录先前不存在

      --use-memory=4G  //  此参数用来控制备份所使用到的内存大小,默认为100M! 一般与--apply-log一起使用。

      --apply-log    // 备份好后的数据并不能立即用于恢复,因为这些刚备份的数据里包含了未提交的数据,需要回滚,undo操作,也包括的已 完成的事务在重做日志文件中          并没有写入数据文件中,redo操作,保证数据文件的一致性。重做已经提交的事务和回滚未提交的事务.

      --copy-back   //用于恢复备份数据的

      --redo-only   //在做增量恢复时,增量备份的数据文件需要redo日志文件中的已提交的事务。此参数将会合并全备和增量备份的数据文件,最后一次  增量备份不需要此参          数。

      --compress   //压缩选项,此选项不兼容--stream=tar,只兼容--stream=xbstream。

      --slave-info  // 在备份从服务器时,使用此参数能记录master的日志和偏移量,用于做一个新的从服务器。一般情况下的全备份,master二进制日志文件以及偏移点会记录在          xtrabackup_binlog_info这个文件中。

      --database   //只备份指定数据库

      --socket        //指定mysql套接字文件位置

      --host    //指定mysql主机  

      --port    //指定mysql端口

      --stream=[tar]       //支持“流”功能,即可以将备份的数据通过STDOUT传输给tar程序进行归档,而不是默认的直接保存至某备份目录中

      --incremental-basedir 需要指定之前完整备份的目录
      --incremental  将会在改目录下生成新的目录用于存放增量备份数据

    完全备份过程:

    1.第一种是让innobackupex自己在backup目录下生成备份目录,第二种自定义生成备份目录

    1.[root@localhost ~]# innobackupex --user=root --password=666666 /backup/
    
    2.[root@localhost 2015-08-07_14-51-50]# innobackupex --user=root --password=666666  --no-timestamp /backup/`date +%F-%H-%M-%S
    成功标志
    150807 14:51:53  innobackupex: Connection to database server closed
    150807 14:51:53  innobackupex: completed OK!

    2. 查看事务终止线程的标志点,/backup/2015-08-07-14-57-56/xtrabackup_checkpoints

    [root@localhost 2015-08-07_14-51-50]# cat xtrabackup_checkpoints 
    backup_type = full-backuped
    from_lsn = 0
    to_lsn = 3425959
    last_lsn = 3425959
    compact = 0
    [root@localhost 2015-08-07_14-51-50]# 
    

     3.可以模拟在mysql中的表中插入数据,提交事务。

    mysql> insert into student (name) values ('david');
    Query OK, 1 row affected, 1 warning (0.10 sec)
    
    mysql> insert into student (name) values ('jane'); 
    Query OK, 1 row affected, 1 warning (0.00 sec)
    
    mysql> commit;
    Query OK, 0 rows affected (0.00 sec)
    mysql> select * from student; +----+-------+-----+------+ | id | name | age | Cid | +----+-------+-----+------+ | 1 | sean | 22 | 6 | | 5 | alice | 0 | NULL | | 6 | tom | 0 | NULL | | 7 | david | 0 | NULL | | 8 | jane | 0 | NULL | +----+-------+-----+------+ 5 rows in set (0.00 sec)

    4.删除所有数据库模拟损坏

    [root@localhost 2015-08-07_14-51-50]# innobackupex --copy-back /backup/2015-08-07_14-51-50/ 
    

    5.如果不做增量备份,要恢复的话需要执行--apply-log,这项必须要执行,让未提交的事务回滚,让已提交的事务重做。

    [root@localhost 2015-08-07_14-51-50]# innobackupex --apply-log /backup/2015-08-07_14-51-50/  
    

     6.然后恢复,只恢复到备份那一刻已经提交事务。

      注意事项:1.因为是全库恢复,需要保证mysql的datadir指定目录下面为空,否则会报错。

           2.关闭msyql ,否则会影响数据的准确性,有些没提交的事务还原时,也会被恢复。

           3.修改数据库目录为mysql权限     

    [root@localhost 2015-08-07_14-51-50]# innobackupex --user=root --password=666666 --copy-back /backup/2015-08-07_14-51-50/ 

    [root@localhost mydata]# chown -R mysql:mysql ./*

    mysql> select * from student;
    +----+-------+-----+------+
    | id | name  | age | Cid  |
    +----+-------+-----+------+
    |  1 | sean  |  22 |    6 |
    |  5 | alice |   0 | NULL |
    |  6 | tom   |   0 | NULL |
    +----+-------+-----+------+
    5 rows in set (0.00 sec)

     7.如果做增量备份,增量备份实在全备份的基础上进行备份的,只支持 innodb 引擎, MyISAM 引擎无法实现增量备份。

      这里从第3步的基础上做增量备份。

      --incremental-basedir 需要指定之前完整备份的目录,
       --incremental  将会在改目录下生成新的目录用于存放增量备份数据

    [root@localhost backup]# innobackupex --user=root --password=666666 --incremental /backup/ --incremental-basedir=/backup/2015-08-07_14-51-50/
    [root@localhost backup]# ll
    total 8
    drwxr-xr-x 9 root root 4096 Aug  7 15:16 2015-08-07_14-51-50      //完全备份目录
    drwxr-xr-x 9 root root 4096 Aug  7 16:15 2015-08-07_16-15-46      //增量备份目录
    [root@localhost backup]# 
    //查看checkpoints,可以看出是从3425959这个点的事务开始到3432586这个点的事务结束。
    [root@localhost 2015-08-07_16-15-46]# cat xtrabackup_checkpoints backup_type = incremental from_lsn = 3425959 to_lsn = 3432586 last_lsn = 3432586 compact = 0

    8.做第二次增量备份,之前模拟插入数据通第3步操作这次事务不提交。

    mysql> insert into student (name) values ('bruce');
    Query OK, 1 row affected, 1 warning (0.00 sec)
    
    mysql> select * from student;                      
    +----+-------+-----+------+
    | id | name  | age | Cid  |
    +----+-------+-----+------+
    |  1 | sean  |  22 |    6 |
    |  5 | alice |   0 | NULL |
    |  6 | tom   |   0 | NULL |
    |  7 | david |   0 | NULL |
    |  8 | jane  |   0 | NULL |
    | 10 | bruce |   0 | NULL |
    +----+-------+-----+------+
    6 rows in set (0.00 sec)
    

      9.做第二次增量备份,这里incremental-basedir指向第一次备份的路径

    [root@localhost backup]# innobackupex --user=root --password=666666 --incremental /backup/ --incremental-basedir=/backup/2015-08-07_16-15-46/
    // 查看chekpoints因为没有进行提交事务所以,事务起始点和结束点都没变
    [root@localhost 2015-08-07_16-44-04]# cat xtrabackup_checkpoints
    backup_type = incremental
    from_lsn = 3432586
    to_lsn = 3432586
    last_lsn = 3432586
    compact = 0

    10.增量备份恢复,分别对全备份和第一次增量备份执行--apply-log --redo-only 对以二次也就是最后一次增量备份执行--apply-log

    [root@localhost backup]# innobackupex --apply-log --user=root --password=666666 --redo-only  /backup/2015-08-07_14-51-50/
    
    [root@localhost backup]# innobackupex --apply-log --redo-only /backup/2015-08-07_14-51-50/ --incremental-dir=/backup/backup/2015-08-07_16-15-46/
    
    [root@localhost backup]# innobackupex --apply-log  /backup/2015-08-07_14-51-50/ --incremental-dir=/backup/2015-08-07_16-44-04/
    

     11.执行完10的操作接着就恢复和全恢复命令一样,因为上面的操作将增量备份的内容整合到第一个备份的文件中,注意修改数据文件属主为mysql。

    [root@localhost backup]# innobackupex --copy-back /backup/2015-08-07_14-51-50/
    

      

  • 相关阅读:
    ecshop 商品分类下的销售排行
    ecshop批量清除商品的精品新品热销属性
    ECSHOP二次开发之给商品增加新字段
    ECSHOP首页调用文章内的缩略图
    ECSHOP给分类添加代表图
    ECSHOP首页促销商品下显示促销时间
    鼠标点击后更换背景
    ECSHOP如何修改商品评论或留言的日期
    ECSHOP设置指定IP才能登录后台
    ecshop远程图片本地化保存相册图片
  • 原文地址:https://www.cnblogs.com/kankanhua/p/4711593.html
Copyright © 2011-2022 走看看