MySQL之备份和恢复(msyqldump、LVM、xtrabackup)(4)

XtraDB
        增强功能的InnoDB,若想使用则在编译mysql时替换掉InnoDB引擎。
   
    安装:
        #yum localinstall percona-xtrabackup-xxxx.rpm

二进制文件:
        /usr/bin/innobackupex perl脚本,调用具体的工具完成操作。

备份目录中文件:
        xtrabackup_checkpoints 记录备份类型(完全|增量...)、备份状态(prepared状态等)、日志序列号(LSN)等。

LSN:InnoDB每个储存数据的数据块都有对应的日志序列号,如果块中的数据发生了改变,则对应的LSN会+1

内容如下:
                backup_type=
                from_lsn=  起始的LSN号,完全备份从0开始
                to_lsn= 结束的LSN号
                last_lsn= 最后一次的LSN号,如果是增量备份则会从此号开始。

xtrabackup_binlog_info 二进制日志文件和位置
        xtrabackup_binlog_pos_innodb 二进制文件和位置以及用于InnoDB或XtraDB的二进制文件和位置
        xtrabackup_binary 备份时使用的具体工具
        xtrabackup_logfile
        backup~my.cnf 备份命令用到的配置选项信息


    #innobackupex [OPTION] DIR
        [OPTION]
            --user=DBUSERNAME
            --password=DBUSERPASSWD
            --host=DBHOST
            --port=DBSERVERPORT
            --no-timestamp 禁止自动生成以时间命名的文件夹
            --apply-log 对备份好的数据进行准备
            --use-memory NUM 指定准备时占用的内存大小,默认不指定为100M
            --copy-back 恢复完全数据
            --incremental  增量备份
            --incremental-basedir=FULLBACKUPDIR 指定完全备份文件路径
            --incremental-dir=INCRBACKUPDIR 指定增量备份的文件路径
            --redo-only 指定只进行redo操作。
            --export  执行导出操作
            --incremental-force-scan 增量备份时强制扫描全部的数据页。在mariadb上增量备份不指定此参数会报错。

实例:
        1.创建专门用于备份的mysql账号:
            mysql>CREATE USER 'bkuser'@'localhost' IDENTIFIED BY '123456'
            mysql>REVOKE ALL PRIVILEGES,GRANT OPTION FROM 'bkuser';
            mysql>GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT ON *.* TO 'bkuser';
            mysql>FLUSH PRIVILEGES;

2.完全备份:
            #innobackupex --user=bkuser --password=123456 --host=localhost  /root/backup/xtrabackup/full/
            或
            #innobackupex --user=root --password=123456 --host=localhost  /root/backup/xtrabackup/full/

4.第一次增量备份:
            对MyISAM只能是完全备份。
            #innobackupex --incremental /backup/xtrabackup/incr/ --incremental-basedir=/root/backup/xtrabackup/full/xxxxx/

5.第二次增量备份:
            第一次增量备份完成后,再进行增量备份的时候。--incremental-basedir要指定增量备份的目录而不是完全备份的目录

#innobackupex --incremental /backup/xtrabackup/incr/ --incremental-basedir=/root/backup/xtrabackup/incr/xxxxx1/


            以后增量备份只要指定上次增量即可


        6.准备:
            备份好的数据不能直接还原,其中可能有部分事务没有提交或正在进行。已经执行的的事务同步到数据中,正在执行的事务进行回滚。

完全备份准备:
                #innobackupex --apply-log --redo-only /root/backup/xtrabackup/xxxxx/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e625e449a7fd39c619fdce28de2b182a.html