美文网首页
xtrabackup的使用

xtrabackup的使用

作者: YSoSeriS | 来源:发表于2019-12-18 15:37 被阅读0次

    xtrabackup使用

    官方文档——————备份原理 备份操作

    1、备份原理

    xtrabackup 在备份 InnoDB 相关数据时,有2条线程,1条是 redo 拷贝线程,负责拷贝 redo 文件,1条是 ibd 拷贝线程,负责拷贝 ibd 文件;redo 拷贝线程只有一个,在 ibd 拷贝线程之前启动,在 ibd 线程结束后结束。xtrabackup 进程开始执行后,先启动 redo 拷贝线程,从最新的 checkpoint 点开始顺序拷贝 redo 日志;然后再启动 ibd 数据拷贝线程。
    注意:在备份过程中有ddl操作会导致备份失败:ddl操作不会纪录到redo log中,当执行了ddl语句修改表结构后再往该表写入数据,redo log会记录这些数据,在将这些数据导入数据文件时,会发现和数据文件中的表结构冲突。

    2、备份操作

    // 全局备份,备份加密的话加上--compress参数,使用备份时也需要先--decompress解密
    xtrabackup --defaults-file=/etc/my.cnf --backup --user=root --password=‘123456’ socket=/tmp/mysql.sock target-dir=/backup/2019_12_12(一般用日期当作备份名)
    

    3、备份恢复

    3.1、全恢复

    // 解密备份文件
    xtrabackup --decompress --target-dir=/backup/2019_12_12
    // 准备一个备份
    xtrabackup --prepare --target-dir=/backup/2019_12_12
    // 恢复备份
    xtrabackup --copy-back --target-dir=/backup/2019_12_12
    

    3. 2、恢复单库单表

    恢复单库或指定几个库的话,只需要将备份文件下的其他库移出去就好
    恢复单表:
    1、创建表(忘记表结构可以使用mysqlfrm解析备份里的frm文件 mysqlfrm —diagnostic ~/*.frm)
    2、删除表空间 alter table yourtable discard tablespace(实际效果是删除该库对应表的.ibd文件)
    3、将备份中对应的.ibd(数据文件)拷贝至所属数据库文件下,修改文件所属为mysql:mysql
    注意:主从结构不要忘了将这步操作在从库上也执行一遍
    4、导入表空间 alter table yourtable import tablespace

    3.3、恢复到指定时间点

    1、找到需要恢复的备份文件
    2、如果是加密的备份,使用xtrabackup --decompress --target-dir=/backup/2019_06_10 来解密
    (若报错:sh:qpress:command not found,需要安装qpress工具http://www.quicklz.com上可下载)
    xtrabackup —prepare —target-dir=/backup/2019_06_10 准备一个备份
    chown -R mysql:mysql 2019_06_10修改文件,后面直接会使用这个数据文件启动数据库检查是否恢复正确
    3、解密完成后,进入文件夹,cat xtrabackup_info文件,得到备份的信息

    xtrabackup_info
    4、使用mysqlbinlog --start-position=“备份结束的位置节点” --stop-datetime=“需要恢复的时间节点" /app/mysql/log/binlog/bin-log.002206 > /tmp/test.sql将全备结束和需恢复点之间的binlog转存为sql文件(若2个节点之间的内容包含了多个binlog,可以这样写bin-log.00220[5-6]*,表示002205和002206两个binlog文件)
    5、用mysqld --user=mysql --no-defaults --basedir=/app/mysql/dist --datadir=/backup/ -P3307来启动mysql
    no-defaults:不读取配置文件(my.cnf)
    basedir:mysql的配置目录
    datadir:mysql的数据目录
    -P:自定义端口,不要与原有数据库端口重复
    6、mysql -h127.0.0.1 -uadmin -ppassword -P3307登陆数据库,再source得到的sql文件,可能会报GTID的错误,可以忽略,数据还是能成功插入的(注意:登入后show databases查看是否为备份数据库的数据)
    image.png

    相关文章

      网友评论

          本文标题:xtrabackup的使用

          本文链接:https://www.haomeiwen.com/subject/zjjunctx.html