Xtrabackup工具的介绍

xtrabackup是percona公司开发的一款自由、免费、开源的一款备份工具,他的备份特点就是:支持热备、备份速度快。

xtrabackup包含两个重要的工具:innobackupex和xtrabackup,两者的区别是:

  xtrabackup只能备份innodb数据表。

  innobackupex支持同时备份innodb和myisam引擎的表,但在备份myisam时需要加一个全局的读锁。

下面我们介绍一下innobackupex备份过程的原理:

原理如下:

innobackupex 在启动后,会先 fork 一个进程,启动 xtrabackup进程,然后就等待 xtrabackup 备份完 ibd 数据文件;
xtrabackup 在备份 InnoDB 相关数据时,是有2种线程的,1种是 redo 拷贝线程,负责拷贝 redo 文件,1种是 ibd 拷贝线程,负责拷贝 ibd 文件;redo 拷贝线程只有一个,在 ibd 拷贝线程之前启动,在 ibd 线程结束后结束。xtrabackup 进程开始执行后,先启动 redo 拷贝线程,从最新的 checkpoint 点开始顺序拷贝 redo 日志;然后再启动 ibd 数据拷贝线程,在 xtrabackup 拷贝 ibd 过程中,innobackupex 进程一直处于等待状态(等待文件被创建)。
xtrabackup 拷贝完成idb后,通知 innobackupex(通过创建文件),同时自己进入等待(redo 线程仍然继续拷贝);
innobackupex 收到 xtrabackup 通知后,执行FLUSH TABLES WITH READ LOCK (FTWRL),取得一致性位点,然后开始备份非 InnoDB 文件(包括 frm、MYD、MYI、CSV、opt、par等)。拷贝非 InnoDB 文件过程中,因为数据库处于全局只读状态,如果在业务的主库备份的话,要特别小心,非 InnoDB 表(主要是MyISAM)比较多的话整库只读时间就会比较长,这个影响一定要评估到。
当 innobackupex 拷贝完所有非 InnoDB 表文件后,通知 xtrabackup(通过删文件) ,同时自己进入等待(等待另一个文件被创建);
xtrabackup 收到 innobackupex 备份完非 InnoDB 通知后,就停止 redo 拷贝线程,然后通知 innobackupex redo log 拷贝完成(通过创建文件);
innobackupex 收到 redo 备份完成通知后,就开始解锁,执行 UNLOCK TABLES;
最后 innobackupex 和 xtrabackup 进程各自完成收尾工作,如资源的释放、写备份元数据信息等,innobackupex 等待 xtrabackup 子进程结束后退出。

上面的备份过程中:备份进程只在SQL命令时和数据库有交互,基本不影响数据库的运行。但是我们要明白,在备份非InnoDB时会有一段时间只读(如果没有myisam表,只读时间在几秒钟)。在备份InnoDB数据文件时,对数据库完全没有影响,是真正的热备。

那么xtrabackup备份InnoDB时是如何保证数据一致性的呢?

  InnoDB 和非 InnoDB 文件的备份都是通过拷贝文件来做的,但是实现的方式不同,前者是以page为粒度做的(xtrabackup),后者是 cp 或者 tar 命令(innobackupex),xtrabackup 在读取每个page时会校验 checksum 值,保证数据块是一致的,而 innobackupex 在 cp MyISAM 文件时已经做了flush(FTWRL),磁盘上的文件也是完整的,所以最终备份集里的数据文件都是写入完整的。

增量备份的原理:

innobackupex增量备份主要是针对InnoDB引擎而言,对于myisam和其他的引擎,它仍然是一个全拷贝的过程。

  InnoDB 每个 page 有个 LSN 号,LSN 是全局递增的,page 被更改时会记录当前的 LSN 号,page中的 LSN 越大,说明当前page越新(最近被更新)。每次备份会记录当前备份到的LSN(xtrabackup_checkpoints 文件中),增量备份就是只拷贝LSN大于上次备份的page,比上次备份小的跳过,每个 ibd 文件最终备份出来的是增量 delta 文件。

  MyISAM 是没有增量的机制的,每次增量备份都是全部拷贝的。

  增量备份过程和全量备份一样,只是在 ibd 文件拷贝上有不同。

增量恢复的原理:

恢复的目的是把备份集中的数据恢复到一个一致性位点,所谓一致就是指原数据库某一时间点各引擎数据的状态,比如 MyISAM 中的数据对应的是 15:00 时间点的,InnoDB 中的数据对应的是 15:20 的,这种状态的数据就是不一致的。PXB 备份集对应的一致点,就是备份时FTWRL的时间点,恢复出来的数据,就对应原数据库FTWRL时的状态。

  因为备份时 FTWRL 后,数据库是处于只读的,非 InnoDB 数据是在持有全局读锁情况下拷贝的,所以非 InnoDB 数据本身就对应 FTWRL 时间点;InnoDB 的 ibd 文件拷贝是在 FTWRL 前做的,拷贝出来的不同 ibd 文件最后更新时间点是不一样的,这种状态的 ibd 文件是不能直接用的,但是 redo log 是从备份开始一直持续拷贝的,最后的 redo 日志点是在持有 FTWRL 后取得的,所以最终通过 redo 应用后的 ibd 数据时间点也是和 FTWRL 一致的。

  所以恢复过程只涉及 InnoDB 文件的恢复,非 InnoDB 数据是不动的。备份恢复完成后,就可以把数据文件拷贝到对应的目录,然后通过mysqld来启动了。
上面介绍完了xtrabackup的原理之后,我们可以学习一下如何使用他们:
如何使用呢?
讲全备的过程。
1、我们这里使用yum源来一键安装。
shell> yum install xtrabackup -y

注意:这里需要给大家讲一下:使用yum源安装的xtrabackup是2.6版本的,这个版本可能比较旧,对于我的mysql5.7.24版本来说xtrabackup可能有点旧,所以无法使用,直接报版本过低的错误。后来我又在官网上下载最新的xtrabackup来使用。这里是先把旧的xtrabackup2.6版本给卸载了,然后下载2.7版本使用rpm -i方式安装:https://www.percona.com/downloads/XtraBackup/  (需要解决依赖,建议是先使用yum安装2.6版本,然后卸载2.6版本,再通过官网下载rpm2.6版本的包来安装即可)

2、使用mysql
这里使用xtrabackup的时候需要你提供mysql的账号密码才行。一般练习是使用root用户可以,但是生产环境下我们大多数使用一般用户,因此这个用户需要有这几个权限:(同时/etc/my.cnf要有innodb_file_per_table等参数指示。)
mysql>CREATE USER 'backup'@'%' IDENTIFIED BY '';
mysql>GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT,CREATE TABLESPACE,SUPER ON *.* TO 'backup'@'%';

3、接下来我们创建一个测试环境:(我这里使用root用户演示)

  1. 创建一个数据库“chen”,一个表“chaofeng”,然后插入一点数据

    MySQL [chen]> show tables;
    +----------------+
    | Tables_in_chen |
    +----------------+
    | chaofeng |
    +----------------+
    1 row in set (0.00 sec) MySQL [chen]> select * from chaofeng;
    +------+------+
    | id | name |
    +------+------+
    | 1 | chen |
    | 2 | chao |
    | 3 | feng |
    +------+------+
    3 rows in set (0.00 sec)
  2. 然后创建一个目录/data/mysql_bak,这个目录的作用是把xtrabackup的备份文件放在此处。因此这个目录要有mysql用户可以写入文件的权限。我这里把这个目录修改用户和组为mysql
    
    
    [root@:vg_adn_tidbCkhsTest /data]#mkdir /data/mysql_bak
    [root@:vg_adn_tidbCkhsTest /data]#chown mysql:mysql mysql_bak/
  3. 此时MySQL为运行状态。接着我们开始进行备份
    [root@:vg_adn_tidbCkhsTest /data]#innobackupex --user=root --password=1234567 -P 3306 -S /tmp/mysql.sock /data/mysql_bak
    181230 13:41:57 innobackupex: Starting the backup operation IMPORTANT: Please check that the backup run completes successfully.
    At the end of a successful backup run innobackupex
    prints "completed OK!". Unrecognized character \x01; marked by <-- HERE after <-- HERE near column 1 at - line 1374.
    181230 13:41:57 Connecting to MySQL server host: localhost, user: root, password: set, port: 3306, socket: /tmp/mysql.sock
    Using server version 5.7.24

    181230 13:41:59 [01] Copying ./performance_schema/session_variables.frm to /data/mysql_bak/2018-12-30_13-41-57/performance_schema/session_variables.frm
    181230 13:41:59 [01] ...done
    181230 13:41:59 [01] Copying ./chen/db.opt to /data/mysql_bak/2018-12-30_13-41-57/chen/db.opt
    181230 13:41:59 [01] ...done
    181230 13:41:59 [01] Copying ./chen/chaofeng.frm to /data/mysql_bak/2018-12-30_13-41-57/chen/chaofeng.frm
    181230 13:41:59 [01] ...done
    181230 13:41:59 Finished backing up non-InnoDB tables and files
    181230 13:41:59 Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...
    xtrabackup: The latest check point (for incremental): '2602112'
    xtrabackup: Stopping log copying thread.
    .181230 13:41:59 >> log scanned up to (2602121)

    181230 13:41:59 [00] ...done
    xtrabackup: Transaction log of lsn (2602112) to (2602121) was copied.
    181230 13:41:59 completed OK!

    当我们看到最后这一行内容的时候,表示备份成功。备份数据会在备份目录下创建一个以当前日期为名字的目录。如果不想要这样的以日期命名的目录。可以加上--no-timestamp参数。

  4. 我们来这个备份的目录看一下。
    [root@:vg_adn_tidbCkhsTest /data/mysql_bak]#ls
    2018-12-30_13-41-57/
    [root@:vg_adn_tidbCkhsTest /data/mysql_bak]#ls 2018-12-30_13-41-57/
    backup-my.cnf chen ib_buffer_pool ibdata1 mysql performance_schema sys xtrabackup_checkpoints xtrabackup_info xtrabackup_logfile
    我们对这几个配置文件解析一下:
    backup-my.cnf:备份命令用到的配置选项信息
    ibdata1:备份的表空间文件
    xtrabackup_info:备份用到的一些配置信息。
    xtrabackup_checkpoints:备份类型(如完全或增量)、备份状态、LSN等
    xtrabackup_logfile:备份的重做日志文件

  5、准备(prepare)一个完全备份

    一般情况下,在备份完成后,备份的数据尚且还不能用于恢复操作,因为备份数据的过程中可能包含还没有提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时的数据文件仍处于不一致状态。“准备”的主要作用就是通过回滚未提交的事务及同步已经提交的事务至数据文件也是的数据文件处于一致性状态。

    参数是--apply-log

  • [root@:vg_adn_tidbCkhsTest /data]#innobackupex --apply-log --use-memory=10G /data/mysql_bak/2018-12-30_13-41-57/
    181230 14:07:30 innobackupex: Starting the apply-log operation IMPORTANT: Please check that the apply-log run completes successfully.
    At the end of a successful apply-log run innobackupex
    prints "completed OK!".
    innobackupex version 2.4.6 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 8ec05b7)
    xtrabackup: cd to /data/mysql_bak/2018-12-30_13-41-57/
      InnoDB: FTS optimize thread exiting.
      InnoDB: Starting shutdown...
      InnoDB: Shutdown completed; log sequence number 2602536
      181230 14:07:38 completed OK!

  当看到最后一行的时候,表示备份成功了。

  6、再来看一下此目录下的文件

  • [root@:vg_adn_tidbCkhsTest:34.202.241.16:172.31.26.133 /data/mysql_bak/2018-12-30_13-41-57]#ls
    backup-my.cnf ib_buffer_pool ib_logfile0 ib_logfile2 mysql sys xtrabackup_info
    chen ibdata1 ib_logfile1 ibtmp1 performance_schema xtrabackup_checkpoints xtrabackup_logfile

    此时这个目录下面多了不少文件,并且体积也增大了。

  7、接下来我们就模拟一个数据库损坏来还原数据库。

   恢复备份到MySQL的数据文件目录,这一过程要关闭MySQL数据库,重命名原数据库文件目录,再创建一个新的数据文件目录,将备份数据复制到新的数据文件目录下,赋予权限,再启动MySQL数据库。

  • 接下来我们演示一下步骤

    [root@:vg_adn_tidbCkhsTest /data]#ls
    data_mysql data_mysql.csv data_tidb lost+found mysql_bak
    [root@:vg_adn_tidbCkhsTest /data]#mv data_mysql data_mysql_bak     #将原来的MySQL数据目录移动并重命名。
    [root@:vg_adn_tidbCkhsTest /data]#mkdir data_mysql                                      #重新创建MySQL的数据目录
    [root@:vg_adn_tidbCkhsTest /data]#innobackupex --copy-back --rsync /data/mysql_bak/2018-12-30_13-41-57/ #开始备份
    181230 14:55:35 innobackupex: Starting the copy-back operation IMPORTANT: Please check that the copy-back run completes successfully.
    At the end of a successful copy-back run innobackupex
    prints "completed OK!". innobackupex version 2.4.6 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 8ec05b7)
    181230 14:55:35 [] Copying ib_logfile0 to /data/data_mysql/ib_logfile0
    181230 14:55:35 [] ...done
    181230 14:55:35 [] Copying ib_logfile1 to /data/data_mysql/ib_logfile1
    181230 14:55:36 [] ...done
    181230 14:55:37 [] Copying ib_logfile2 to /data/data_mysql/ib_logfile2
    181230 14:55:38 [] ...done
    181230 14:55:38 [] Copying ibdata1 to /data/data_mysql/ibdata1
    181230 14:55:38 [] ...done
    181230 14:55:38 [] Copying ./xtrabackup_info to /data/data_mysql/xtrabackup_info

    181230 14:55:39 [01] Copying ./chen/chaofeng.frm to /data/data_mysql/chen/chaofeng.frm
      181230 14:55:39 [01] ...done
      181230 14:55:39 completed OK!                                                                        #表示备份成功

    接下来我们授权data目录并重启MySQL

    [root@:vg_adn_tidbCkhsTest /data]#chown -R mysql:mysql ./data_mysql
    [root@:vg_adn_tidbCkhsTest /data]#service mysql start
    Starting MySQL. SUCCESS!
    [root@:vg_adn_tidbCkhsTest /data]#mysql -u root -p
    Enter password:
    Welcome to the MariaDB monitor. Commands end with ; or \g.
    Your MySQL connection id is 3
    MySQL [(none)]> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | chen |
    | mysql |
    | performance_schema |
    | sys |
    +--------------------+
    5 rows in set (0.00 sec) MySQL [(none)]> use chen
    Database changed
    MySQL [chen]> show tables;
    +----------------+
    | Tables_in_chen |
    +----------------+
    | chaofeng |
    +----------------+
    1 row in set (0.00 sec) MySQL [chen]> select * from chaofeng;
    +------+------+
    | id | name |
    +------+------+
    | 1 | chen |
    | 2 | chao |
    | 3 | feng |
    +------+------+
    3 rows in set (0.01 sec)

    授权这一步很重要,否则我们没有权限从而无法启动MySQL服务器。

   可以看出来我们已经恢复数据成功了。

讲只备份一个数据库的过程

  有时候我们只备份一个数据库,如果出现问题了,那我们也仅仅恢复这一个数据库  

  1、首先是我们备份一个数据库:

[root@:vg_adn_tidbCkhsTest /data]#mkdir haha
[root@:vg_adn_tidbCkhsTest /data]#innobackupex --user=root --password=1234567 -P 3306 --databases=chen /data/haha/
181230 15:11:07 innobackupex: Starting the backup operation IMPORTANT: Please check that the backup run completes successfully.
At the end of a successful backup run innobackupex
prints "completed OK!". Unrecognized character \x01; marked by <-- HERE after <-- HERE near column 1 at - line 1374.
181230 15:11:07 Connecting to MySQL server host: localhost, user: root, password: set, port: 3306, socket: not set
xtrabackup: Transaction log of lsn (2602555) to (2602564) was copied.
181230 15:11:09 completed OK!
[root@:vg_adn_tidbCkhsTest /data]#ls
data_mysql data_mysql_bak data_mysql.csv data_tidb haha lost+found mysql_bak
[root@:vg_adn_tidbCkhsTest /data]#du -sh haha
13M haha
[root@:vg_adn_tidbCkhsTest /data]#innobackupex --apply-log --use-memory=10G /data/haha
181230 15:13:00 innobackupex: Starting the apply-log operation IMPORTANT: Please check that the apply-log run completes successfully.
At the end of a successful apply-log run innobackupex
prints "completed OK!".
InnoDB: Shutdown completed; log sequence number 2603048
181230 15:13:24 completed OK!
[root@:vg_adn_tidbCkhsTest /data]#du -sh haha
417M haha
[root@:vg_adn_tidbCkhsTest /data]#cd haha
[root@:vg_adn_tidbCkhsTest /data/haha]#ls
2018-12-30_15-11-07
[root@:vg_adn_tidbCkhsTest /data/haha]#cd 2018-12-30_15-11-07/
[root@:vg_adn_tidbCkhsTest /data/haha/2018-12-30_15-11-07]#ls
backup-my.cnf ib_buffer_pool ib_logfile0 ib_logfile2 xtrabackup_checkpoints xtrabackup_logfile
chen ibdata1 ib_logfile1 ibtmp1 xtrabackup_info

  2、接下来我们登陆MySQL把这个chen数据库删除了,这里不再演示删除操作。

  3、然后把mysql服务器停止了。开始进行恢复操作,这里需要注意的是恢复的目录是MySQL的数据目录,但是此时数据目录下有文件,不是空目录,因此不能进行恢复,所以我们选择一个新建的空目录进行恢复,恢复完成后,把要恢复的数据库移动到MySQL的data目录下,同时也要把恢复目录下的ibdata1 ,ib_logfile*的这几个文件替换掉data目录下的这几个文件,否则mysql无法识别,即使启动之后我们看到了已经恢复了的数据库和表,但是表里面仍然没有数据。原因就在这几个文件的重要性。

  4、这样子重启机器之后我们就看到了已经恢复的单个数据库了,但是这样的方法是有一定的问题的:比如数据库很多的情况下我们怎么样才能只备份innodb引擎的数据库呢?(因为全备意味着也要备份myisam引擎,此时会有几秒mysql处于lock状态,影响读写)

讲增量备份

  在MySQL进行增量备份时,首先要进行一次全量备份,第一次增量备份是基于全备的,之后的增量备份时基于上一次的增量备份。

  1、创建基础备份base。(注意,由于我进行备份的时候没有加上--no-timestamp参数,因此我在恢复备份数据的时候目录下要加上xtrabackup自动添加的目录才行,详细看下面)

[root@:vg_adn_tidbCkhsTest /data]#mkdir base
[root@:vg_adn_tidbCkhsTest /data]#mysql -u root -p1234567
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.24 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]> use chen
Database changed
MySQL [chen]> select * from chaofeng;
+------+------+
| id | name |
+------+------+
| 1 | chen |
| 2 | chao |
| 3 | feng |
+------+------+
3 rows in set (0.00 sec) MySQL [chen]> exit
Bye
[root@:vg_adn_tidbCkhsTest /data]#innobackupex --defaults-file=/etc/my.cnf --user=root --password=1234567 -P 3306 /data/base/
181230 16:21:43 innobackupex: Starting the backup operation IMPORTANT: Please check that the backup run completes successfully.
xtrabackup: Transaction log of lsn (2613322) to (2613331) was copied.
181230 16:21:46 completed OK!

  2、在数据库chen下再增加一些数据

MySQL [chen]> insert into chaofeng values (4,'xiaoming'),(5,'xiaohong');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0 MySQL [chen]> select * from chaofeng;
+------+----------+
| id | name |
+------+----------+
| 1 | chen |
| 2 | chao |
| 3 | feng |
| 4 | xiaoming |
| 5 | xiaohong |
+------+----------+
5 rows in set (0.00 sec)

  3、创建增量备份incre_one

[root@:vg_adn_tidbCkhsTest /data]#mkdir incre_one
[root@:vg_adn_tidbCkhsTest /data]#innobackupex --defaults-file=/etc/my.cnf --user=root --password=1234567  -P 3306 --incremental /data/incre_one --incremental-basedir=/data/base/2018-12-30_16-21-43/
181230 16:26:54 innobackupex: Starting the backup operation IMPORTANT: Please check that the backup run completes successfully.
At the end of a successful backup run innobackupex
prints "completed OK!". Unrecognized character \x01; marked by <-- HERE after <-- HERE near column 1 at - line 1374.
181230 16:26:54 Connecting to MySQL server host: localhost, user: root, password: set, port: 3306, socket: not set

  4、在test库下再次添加一些数据

MySQL [chen]> insert into chaofeng values(6,'xiaozhag'),(7,'xiaowang'),(8,'laoli');
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0 MySQL [chen]> select * from chaofeng;
+------+----------+
| id | name |
+------+----------+
| 1 | chen |
| 2 | chao |
| 3 | feng |
| 4 | xiaoming |
| 5 | xiaohong |
| 6 | xiaozhag |
| 7 | xiaowang |
| 8 | laoli |
+------+----------+
8 rows in set (0.00 sec)

  5、继续创建增量备份incre_two

[root@:vg_adn_tidbCkhsTest /data/incre_one]#mkdir incre_two
[root@:vg_adn_tidbCkhsTest /data/incre_one]#innobackupex --defaults-file=/etc/my.cnf --user=root --password=1234567 -P 3306 --incremental /data/incre_two --incremental-basedir=/data/incre_one/2018-12-30_16-48-27/
181230 16:52:01 innobackupex: Starting the backup operation IMPORTANT: Please check that the backup run completes successfully.

  6、我们已经创建好增量备份了,然后我们开始进行恢复

  主要有三个步骤:

    1、恢复基础备份(全备)

    2、恢复增量备份到基础备份(开始恢复的增量备份要添加--redo-only参数,到最后一次增量备份去掉--redo-only参数)

    3、对整体的基础备份进行恢复,回滚哪些未提交的数据。

  7、恢复基础备份(一定要加上--redo-only参数,表示只应用xtrabackup日志中已经提交的事务数据,不回滚还未提交的数据)

[root@:vg_adn_tidbCkhsTest /data/base]#innobackupex  --apply-log --redo-only --use-memory=10G /data/base/2018-12-30_16-44-07/
181230 17:03:45 innobackupex: Starting the apply-log operation IMPORTANT: Please check that the apply-log run completes successfully.

  8、将增量备份incre_one应用到基础备份base

[root@:vg_adn_tidbCkhsTest /data/base]#innobackupex  --apply-log --redo-only --use-memory=10G /data/base/2018-12-30_16-44-07/  --incremental-dir=/data/incre_one/2018-12-30_16-48-27/
181230 17:06:02 innobackupex: Starting the apply-log operation IMPORTANT: Please check that the apply-log run completes successfully.

  9、将增量备份incre_two应用到基础备份base里面(注意这是最后一个增量备份,因此需要去掉--redo-only参数)

[root@:vg_adn_tidbCkhsTest /data/base]#innobackupex  --apply-log --use-memory=10G /data/base/2018-12-30_16-44-07/  --incremental-dir=/data/incre_two/2018-12-30_16-52-01/

  10、把所有合在一起的基础备份整体进行一次apply操作,回滚未提交的数据。

[root@:vg_adn_tidbCkhsTest /data/base]#innobackupex  --apply-log --use-memory=10G /data/base/2018-12-30_16-44-07/
181230 17:11:10 innobackupex: Starting the apply-log operation

  11、开始关闭MySQL服务器。然后把恢复完的数据移动到MySQL的data数据目录下,授权mysql用户和组,然后启动。

[root@:vg_adn_tidbCkhsTest /data/base]#service mysql stop
Shutting down MySQL.. SUCCESS!
[root@:vg_adn_tidbCkhsTest /data/base]#cd ..
[root@:vg_adn_tidbCkhsTest /data]#ls
base data_mysql data_mysql_bak data_mysql.csv data_tidb incre_one incre_two lost+found mysql_bak
[root@:vg_adn_tidbCkhsTest: /data]#mv data_mysql data_mysql_bak2
[root@:vg_adn_tidbCkhsTest /data]#mkdir data_mysql
[root@:vg_adn_tidbCkhsTest /data]#innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/base/2018-12-30_16-44-07/
181230 17:15:06 innobackupex: Starting the copy-back operation IMPORTANT: Please check that the copy-back run completes successfully.
181230 17:15:10 [] ...done
181230 17:15:10 completed OK!
[root@:vg_adn_tidbCkhsTest /data]#du -sh base
430M base
[root@:vg_adn_tidbCkhsTest /data]#chown -R mysql:mysql ./data_mysql
[root@:vg_adn_tidbCkhsTest /data]#service mysql start
Starting MySQL. SUCCESS!
[root@:vg_adn_tidbCkhsTest/data]#mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g. MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| chen |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec) MySQL [chen]> select * from chen.chaofeng;
+------+-----------+
| id | name |
+------+-----------+
| 1 | chen |
| 2 | chao |
| 3 | feng |
| 4 | xiaoming |
| 5 | xiaohong |
| 6 | xiaozhang |
| 7 | xiaowang |
| 8 | laoli |
+------+-----------+
8 rows in set (0.01 sec)

至此,我们的增量备份就恢复成功了,我们已经看到数据已经完好的显示出来了。

关于原理大家也可以参考这个连接:https://www.cnblogs.com/yuyue2014/p/3705448.html

MySQL运维之--xtrabackup工具的原理和使用方法的更多相关文章

  1. MySQL运维工具

    Mysql运维过程中设计的各类工具以及各个场景的的命令行的分类.大体总结如下的xmind图片(.xmind附件 加 Q1123654342). 大体上分为: 实例管理工具.高可用工具.慢日志查询工具. ...

  2. MySQL运维开发相关的所有工具

    http://www.ruzuojun.com/topic/592.html   Percona Toolkit 安装使用 http://cenalulu.github.io/mysql/mysql- ...

  3. 转:三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构

    在微信公众号看到一篇关于mycat的文章,觉得分析的很不错,给大家分享一下 三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构 原文链接:https://mp.weixin.qq.com/s ...

  4. mysql运维必会的一些知识点整理

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  5. 美图秀秀DBA谈MySQL运维及优化

    美图秀秀DBA谈MySQL运维及优化 https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=401797597&idx=2& ...

  6. mysql运维必会的一些知识点整理(转自民工哥)

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  7. 搭建稳固的MySQL运维体系

    MySQL 监控要点 MySQL 监控要点,主要涉及服务器和 MySQL 两个方向的监控告警. 在这两个监控告警方向需要重点关注监控策略.监控趋势图及报警方式. 监控策略指的是每个监控项的告警阈值,例 ...

  8. mysql运维

    反反复复装了好多次的mysql,上学的时候从来没有考虑过稳定性,装起来,能跑通,增删改查没有问题万事大吉.参与工作后参与平台搭建和维护,平台的稳定性是首先必须要考虑的问题,之前装mysql使用经历了密 ...

  9. 公司没有 DBA,Mysql 运维自己来

    如果你的公司有 DBA,那么我恭喜你,你可以无视 Mysql 运维.如果你的公司没有 DBA,那你就好好学两手 Mysql 基本运维操作,行走江湖,防身必备. 环境:CentOS7 版本: 一.虚拟机 ...

随机推荐

  1. 【SpringBoot系列3】SpringBoot使用事务和AOP

    前言: 因为SpringBoot操作两者实在太简单了,我就放一起来写了. 正文(事务): /** * springboot中运用事务 * 真的超级方便,直接加上注解就ok了,连配置都省了 * @ret ...

  2. Spring基础(9) : 自动扫描

    一  配置xml方式:扫描com包下的bean <?xml version="1.0" encoding="UTF-8" ?> <beans ...

  3. <mvc:annotation-driven /> 作用

    <mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案.<mvc:annotation-dri ...

  4. Fragment的坑

    http://www.jianshu.com/p/d9143a92ad94 使用add()加入fragment时将触发onAttach(),使用attach()不会触发onAttach() 使用rep ...

  5. Java - 线程优先级和守护线程

    Java多线程系列--“基础篇”10之 线程优先级和守护线程 概要 本章,会对守护线程和线程优先级进行介绍.涉及到的内容包括:1. 线程优先级的介绍2. 线程优先级的示例3. 守护线程的示例 转载请注 ...

  6. 4+1视图与UML对应关系

    4+1视图模型概况     Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图.进程视图.物理视图.开发视图.场景视图来描述软件体系结构.每一个视图只 ...

  7. JSP学习笔记(6)-使用数据库

    1.连接MySQL数据库 1.1.JDBC JDBC(Java Database Connectivity)提供了访问数据库的API,由一些Java类和接口组成,是Java运行平台核心库中的一部分.用 ...

  8. 简单的redis缓存操作(get、put)

    简单的redis缓存操作(get.put) 本文介绍简单的redis缓存操作,包括引入jedisjar包.配置redis.RedisDao需要的一些工具.向redis中放数据(put).从redis中 ...

  9. apache2.4.33伪静态配置入门教程(1)

    伪静态: 把动态网页的请求方式伪装成静态网页 要使用伪静态技术,要在httpd.conf中启用伪静态模块: LoadModule rewrite_module modules/mod_rewrite. ...

  10. POJ3268(KB4-D spfa)

    Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 23426   Accepted: 1069 ...