zoukankan      html  css  js  c++  java
  • xtrabackup

    01. 基础知识

       如果备份的是从库,且备份的时候,主从延迟特别大,那么备份的时间点就会不准确,因此真正的备份的时间点一般是延迟的。

    (1)innobackupex:是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力,因此一般都用该脚本进行热备数据。

    (2)xtrabackup:只能备份innoDB和xtraDB两种数据引擎的表,而不能备份MyISAM数据表,因此一般不用,作为innobackupex的一部分。

    (3)innobackupex工具使用:

             --defaults-file=/home/work/mysql_3307/etc/my.cnf

             --host=10.10.10.10

             --port=3307

             --user=mysqlbackup

             --password=123456

             --slave-info

             --defaults-file=/home/work/mysql_3307/etc/my.cnf

             --defaults-file=/home/work/mysql_3307/etc/my.cnf

             /home/data/hostname_22_3307/2020-04-15_00-06-30

    innobackupex    --defaults-file=/home/work/mysql_3307/etc/my.cnf --user=mysqlbackup --password=... --host=127.0.0.1 --slave-info --ibbackup=xtrabackup --stream=xbstream --tmpdir=/home/work/tmp_xbm_33

    (4) innobackupex --apply-log  /home/data/hostname_22_3307/2020-04-15_00-06-30

        一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。
    因此,此时数据文件仍处理不一致状态。此选项作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。
    在apply log完成之后,我们发现xtrabackup_checkpoints 中的backup_type从 full-backuped变成了 full-prepared

    02. 备份原理

    03. 文件介绍

    (1)sys,mysql,performance_schema,用户数据库等:数据库的拷贝
    ib_buffer_pool
    ibdata1:备份共享表空间
    undo001,undo002,undo002:备份undo log
    ################################
    xtrabackup_logfile:备份redo log
    这个文件相当的重要,这个文件记录的是从备份开始到备份结束所有的redo日志;
    xtrabackup在apply log的时候需要读取该文件,进行redo前滚。
    ################################
    xtrabackup_binlog_info:

    文件记录的是备份完成的那个时间点的binlog位点。如果备份的是主库数据,则change位置点为xtrabackup_binlog_info
    若未开启gtid,则内容如下:
    mysql-bin.000332    28370863
    若开启gtid,则内容如下:
    mysql-bin.000009    788080016    b172206b-7035-11ea-8f2b-e4434bcaccee:1-333346

    ############################
    xtrabackup_binlog_pos_innodb:
    只是记录innodb和xtradb的binlog位点,myisam产生的binlog不会计算在内;
    因此xtrabackup_binlog_pos_innodb的信息和第一次全备的xtrabackup_binlog_info文件中的信息是一致的。
    若有非innodb存储引擎的事务,则binlog位点可能与xtrabackup_binlog_info不同,一般两者相同:
    mysql-bin.000332 28370863


    ##########################
    xtrabackup_slave_info:
    要生成该文件,需要在备份时添加参数--slave-info。一般情况下都是备份的从库数据,xtrabackup_slave_info记录了主库复制的位置点。
        若未开启gtid,则记录完成备份时,主库的点位,内容如下:
    CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.002406', MASTER_LOG_POS=515291508
        若开启了gtid,则记录完成备份时,主库的gtid_purged,内容如下:
    SET GLOBAL gtid_purged='b172206b-7035-11ea-8f2b-e4434bcaccee:1-333346';
    CHANGE MASTER TO MASTER_AUTO_POSITION=1

    ##########################
    xtrabackup_info:
    backup_type = log-applied
    from_lsn = 0
    to_lsn = 3021212303418
    last_lsn = 3022371220298
    compact = 0
    recover_binlog_info = 0
    [root@c3-dba-storage34 2020-04-15_00-06-30]# cat xtrabackup_info
    uuid = e33f1cf9-7e85-11ea-ba16-90e2bad1cd48
    name = 
    tool_name = innobackupex
    tool_command = --defaults-file=/home/work/mysql/etc/my.cnf --user=mysqlbackup --password=... --host=127.0.0.1 --slave-info --ibbackup=xtrabackup --stream=xbstream --tmpdir=/home/work/tmp_xbm_3306/2020-04-15_00-06-36 .
    tool_version = 2.4.7
    ibbackup_version = 2.4.7
    server_version = 5.7.25-28-log
    start_time = 2020-04-15 00:06:36
    end_time = 2020-04-15 03:26:49
    lock_time = 0
    binlog_pos = filename 'mysql-bin.000332', position '28370863'
    innodb_from_lsn = 0
    innodb_to_lsn = 3021212303418
    partial = N
    incremental = N
    format = xbstream
    compact = N
    compressed = N
    encrypted = N

    xtrabackup_checkpoints:
    提供的信息有:
    备份状态:
    如果是全量备份,backup_type = full-backuped
    如果是增量备份,backup_type = incremental。备份集的状态在apply log后会改变,后面会说明
    备份起始lsn:



    内容如下:
    backup_type = log-applied
    from_lsn = 0
    to_lsn = 3021212303418
    last_lsn = 3022371220298
    compact = 0
    recover_binlog_info = 0

    解释如下:
    # from_lsn = 0由于是全量备份,所以数据是从LSN=0开始的;


    backup-my.cnf:

    # This MySQL options file was generated by innobackupex.
    
    # The MySQL server
    [mysqld]
    innodb_checksum_algorithm=crc32
    innodb_log_checksum_algorithm=strict_crc32
    innodb_data_file_path=ibdata1:100M:autoextend
    innodb_log_files_in_group=3
    innodb_log_file_size=4294967296
    innodb_fast_checksum=false
    innodb_page_size=16384
    innodb_log_block_size=512
    innodb_undo_directory=./
    innodb_undo_tablespaces=0
    server_id=177093683
    
    redo_log_version=1
    
    
    1、备份到本地目录:/home/work/tmp/backup/
    xtrabackup  --backup  --target-dir=/home/work/tmp/backup/  --user=mysqlbackup --password=123456  --host=127.0.0.1 --port=3306   --slave-info
    
    2、应用本地目录/home/work/tmp/backup/中的备份日志,确保数据一致,提交完成的事务,回滚未完成的事务。
    xtrabackup --prepare --target-dir=/home/work/tmp/backup/





  • 相关阅读:
    CTF -攻防世界-crypto新手区(5~11)
    CTF密码学常见加密解密总结
    CTF -攻防世界-crypto新手区(1~4)
    跨域问题解决
    npm使用记录
    dva控制元素动态消失隐藏
    maven安装记录
    postgreSQL记录
    关于System.__ComObject一些问题
    论文中表格跨页处理
  • 原文地址:https://www.cnblogs.com/igoodful/p/12714306.html
Copyright © 2011-2022 走看看