• MySQL热备工具Xtrabackup的使用


      InnoDB有个商业的InnoDB Hotbackup,可以对InnoDB引擎的表实现在线热备。而percona出品的Xtrabackup,是InnoDB Hotbackup的一个开源替代品,可以在线对InnoDB/XtraDB引擎的表进行物理备份。mysqldump支持在线备份,不过是逻辑备份,效率比较差。当数据量比较小时,mysqldump还可以胜任,当数据量大时,恢复时间却让人无法忍受,于是开源工具xtrabackup就应运而生,xtrabackup属于物理备份,效率很不错。
    xtrabackup提供了两种命令行工具:
    xtrabackup:用于备份InnoDB引擎的数据(不会备份myisam比如mysql权限相关表等,也不会自动copy frm文件);
    innobackupex:一个perl脚本,在执行过程中会调用xtrabackup命令,用该命令即可以备份InnoDB,也可以备份MyISAM/copy frm文件,只不过在备份myisam表时候会添加一个读锁。

    实验环境:
    CentOS Version:7.5
    MySQL Version:MySQL 5.7.32

    Xtrabackup安装

    RHEL 7

    # wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.23-16/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.23-16.1.el7.x86_64.rpm

    # wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.22/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.22-1.el7.x86_64.rpm

    RHEL 8

    # wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.23-16/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.23-16.1.el8.x86_64.rpm

    # wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.22/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.22-1.el8.x86_64.rpm

    # yum -y install libaio libaio-devel perl-Time-HiRes curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel perl-ExtUtils-MakeMaker perl-DBD-MySQL.* package bzr bison ncurses-devel zlib-devel
    # rpm -ivh percona-xtrabackup-24-2.4.22-1.el7.x86_64.rpm
    部分参数说明
    --user 指定执行备份的用户。
    --password 指定执行备份用户的密码。
    --defaults-file 指定mysql的选项文件路径。
    --no-timestamp 不要显示时间戳。
    --incremental 告诉xtrabackup这次是创建增量备份。
    --incremental-basedir 指定一个全量备份的路径作为增量备份的基础。
    --redo-only 如果进行准备工作完成后,还有其他的增量备份集待处理,就需要指定这个参数。
    --apply-log 从指定的选项文件中读取配置信息并应用日志等,这就意味对备份集做恢复的准备工作。
    --copy-back 将指定备份集恢复到指定的路径下。

    全备,数据备份到/data/backup/base
    # innobackupex --user=root --password=mysql --defaults-file=/etc/mysql/my.cnf --no-timestamp /data/backup/base

    对数据库进行修改
    mysql> create database sharelinux;
    use sharelinux;
    create table t1(id int,name varchar(10));
    insert into t1 values(1,'zhangsan'),(2,'lisi'),(3,'wangwu');
    select * from t1;

    第一次增量备份,增量备份目录/data/backup/incremental_1
    # innobackupex --user=root --password=mysql --defaults-file=/etc/mysql/my.cnf --no-timestamp --incremental-basedir=/data/backup/base --incremental /data/backup/incremental_1

    再次修改数据库
    mysql> create database db01;
    use db01;
    create table t2(id int,name varchar(10));
    insert into t2 values(1,'zhangsan'),(2,'lisi'),(3,'wangwu');
    select * from t2;

    第二次增量备份,备份目录/data/backup/incremental_2
    # innobackupex --user=root --password=mysql --defaults-file=/etc/mysql/my.cnf --no-timestamp --incremental-basedir=/data/backup/incremental_1 --incremental /data/backup/incremental_2

    模拟故障,删除数据库的数据文件
    # ls /usr/local/mysql/data/
    # rm -rf /usr/local/mysql/data/*

    # ls /usr/local/mysql/data/

    恢复准备
    # innobackupex --user=root --password=mysql --defaults-file=/etc/mysql/my.cnf --apply-log --redo-only /data/backup/base

    # innobackupex --user=root --password=mysql --defaults-file=/etc/mysql/my.cnf --apply-log --redo-only /data/backup/base --incremental-dir=/data/backup/incremental_1

    # innobackupex --user=root --password=mysql --defaults-file=/etc/mysql/my.cnf --apply-log /data/backup/base --incremental-dir=/data/backup/incremental_2

    数据恢复
    # innobackupex --user=root --password=mysql --defaults-file=/etc/mysql/my.cnf --copy-back /data/backup/base

    查看目录
    # ll /usr/local/mysql/data
    total 79916
    drwxr-x---. 2 root root 4096 Feb 1 16:18 db01
    -rw-r-----. 1 root root 79691776 Feb 1 16:18 ibdata1
    drwx------. 2 root root 4096 Feb 1 15:26 mysql
    drwxr-xr-x. 2 root root 4096 Feb 1 15:26 performance_schema
    drwxr-x---. 2 root root 4096 Feb 1 16:13 sharelinux
    drwxr-xr-x. 2 root root 4096 Feb 1 15:26 test
    -rw-r--r--. 1 root root 22 Feb 1 16:18 xtrabackup_binlog_info
    -rw-r-----. 1 root root 91 Feb 1 16:18 xtrabackup_checkpoints
    -rw-r--r--. 1 root root 722 Feb 1 16:18 xtrabackup_info
    -rw-r-----. 1 root root 2097152 Feb 1 16:09 xtrabackup_logfile
    drwx------. 2 root root 12288 Feb 1 15:26 zabbix

    # chown -R mysql:mysql /usr/local/mysql/data

    杀死MySQL进程,重启数据库

    # pkill mysqld
    # service mysqld start

    mysql> show databases;

    mysql> select * from sharelinux.t1; #第一次增量备份的数据

    mysql> select * from db01.t2; #第二次增量备份的数据

    https://blog.51cto.com/sharelinux/1740513

  • 相关阅读:
    修改Matlab 2012b默认工作路径
    win7,M​i​n​d​m​a​n​a​g​e​r​2​0​1​2使用模板时弹出Runtime error R6025解决方法
    Win7 Qt4.8.5+QtCreator2.8.0+mingw配置过程
    RabbitMQ介绍和延迟队列
    FastDFS介绍
    SpringMVC的工作流程
    spring mvc入参有Date类型
    spring 定时任务的 时间配置cron表达式
    Transactional介绍及使用
    spring cloud 集成rabbitMQ实现延时队列
  • 原文地址:https://www.cnblogs.com/OrcinusOrca/p/14765885.html
Copyright © 2020-2023  润新知