生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库?

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

一个合格的运维工程师或者dba工程师,如果有从事数据库方面的话,首先需要做的就是备份,如果没有备份,出现问题的话,你的业务就会出问题,你的工作甚至会。。。

所以备份是重要的,但光有备份还不行,备份后如果出现问题,你还得使用备份数据来恢复,但恢复数据的时间一般都是很长的,不符合业务需求,所以一个快速备份与恢复的软件就很有必要。

之前我在维护mysql数据库的时候,使用mysqldump来进行备份与恢复,在备份的时候锁住表,然后全部备份,在数据少的时候没问题,但如果数据很多,不允许锁表,同时需要恢复数据块的情况,mysqldump就不适合了,我在恢复一个4G数据文件的数据库的时候,恢复的数据是使用mysqldump的数据,恢复了3个小时还没有反应,造成的影响很严重,所以我开始寻找其他的别发软件来满足以上的需求,幸好找到了,就是使用xtrabackup来进行备份与恢复,恢复4G数据文件的数据库,仅需要14秒,同时在备份的时候不会锁表,而且支持增量备份,所以把我的比较分享给大家,希望对大家有益!

Xtrabackup 是percona公司的开源项目,用以实现类似innodb官方的热备份工具InnoDB Hot Backup的功能,能够非常快速地备份与恢复mysql数据库。 Xtrabackup中包含两个工具:

xtrabackup是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;

innobackupex是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。

由于innobackupex的功能更为全面和完善,所以,本文以innobackupex作为基础进行研究描述。

下面介绍xtrabackup的全部、增量的备份与恢复。

一、下载与安装
1、下载
 
  1. wget http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-1.6.7/binary/Linux/x86_64/xtrabackup-1.6.7.tar.gz 
2、安装依赖库
如果是debian系列的话
 
  1. apt-get install debhelper autotools-dev libaio-dev wget automake   libtool bison libncurses-dev libz-dev cmake bzr 
如果是redhat系列的话
 
  1. yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr   bison libtool ncurses-devel zlib-devel 
3、解压
 
  1. tar zxvf xtrabackup-1.6.7.tar.gz  
4、进入目录
 
  1. cd xtrabackup-1.6.7 

5、复制

 
  1. cd bin  
  2. cp * /usr/bin  
  3. 然后就安装完成了,下面开始备份  

其中,

innobackupex是我们要使用的备份工具;

xtrabackup是被封装在innobackupex之中的,innobackupex运行时需要调用它;

xtrabackup_51是xtrabackup运行时需要调用的工具;

tar4ibd是以tar流的形式产生备份时用来打包的工具。

6、对某个数据库进行全部备份的命令介绍
 
  1. innobackupex --user=root --password=123456 --defaults-file=/etc/mysql/my.cnf --database=test --stream=tar /tmp/data/ 2>/tmp/data/err.log|gzip 1>/tmp/data/test.tar.gz 
说明:
      --database=test 单独对test数据库做备份 ,若是不添加此参数那就那就是对全库做备份
      2>/tmp/data/err.log 输出信息写入日志中
      1>/tmp/data/test.tar.gz 打包压缩存储到该文件中

 

二、对数据库的全部备份与恢复
下面开始测试xtrabackup的全部备份
(1)先进入mysql里创建一个新的test数据库

 

 
  1. root@client2:/tmp# mysql -u root -p  
  2. Enter password:   
  3. Welcome to the MySQL monitor.  Commands end with ; or \g.  
  4. Your MySQL connection id is 40  
  5. Server version: 5.5.28-0ubuntu0.12.04.3-log (Ubuntu)  
  6.  
  7. Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.  
  8.  
  9. Oracle is a registered trademark of Oracle Corporation and/or its  
  10. affiliates. Other names may be trademarks of their respective  
  11. owners.  
  12.  
  13. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
  14. mysql> drop database test;  
  15. Query OK, 3 rows affected (0.13 sec)  
  16. mysql> create database test;  
  17. Query OK, 1 row affected (0.00 sec)  
  18.  
  19. mysql> use test;  
  20. Database changed  
  21. mysql> create table test (id int);  
  22. Query OK, 0 rows affected (0.06 sec)  
  23. mysql> insert into test values(1);  
  24. Query OK, 1 row affected (0.04 sec)  
  25.  
  26. mysql> insert into test values(2);  
  27. Query OK, 1 row affected (0.01 sec)  
  28.  
  29. mysql> insert into test values(3);  
  30. Query OK, 1 row affected (0.00 sec)  
  31.  
  32. mysql> insert into test values(4);  
  33. Query OK, 1 row affected (0.00 sec)  
  34.  
  35. mysql> insert into test values(5);  
  36. Query OK, 1 row affected (0.01 sec)  
  37.  
  38. mysql> select * from test;  
  39. +------+  
  40. | id   |  
  41. +------+  
  42. |    1 |  
  43. |    2 |  
  44. |    3 |  
  45. |    4 |  
  46. |    5 |  
  47. +------+  
  48. 5 rows in set (0.00 sec)  
  49.  
  50. mysql> flush privileges;  
  51. Query OK, 0 rows affected (0.00 sec)  
(2)然后备份test的整个数据库
使用下面的backup.sh脚本
 
  1. root@client2:/tmp# cat backup.sh   
  2. #!/bin/bash  
  3. user='root' 
  4. passwd='123456' 
  5. database=test 
  6. my_config='/etc/mysql/my.cnf' 
  7. log=$database-$(date +%Y%m%d%H%M).log  
  8. str=$database-$(date +%Y%m%d%H%M).tar.gz  
  9. backup_dir='/tmp/data' 
  10. echo "Start to backup at $(date +%Y%m%d%H%M)"  
  11. if [ ! -d "$backup_dir" ];then  
  12.     mkdir $backup_dir  
  13. fi  
  14. innobackupex --user=$user --password=$passwd --defaults-file=$my_config --database=$database --stream=tar $backup_dir 2>$backup_dir/$log | gzip 1>$backup_dir/$str  
  15. if [ $? -eq 0 ];then  
  16.     echo "Backup is finish! at $(date +%Y%m%d%H%M)"  
  17.     exit 0  
  18. else  
  19.     echo "Backup is Fail! at $(date +%Y%m%d%H%M)"  
  20.     exit 1  
  21. fi  
现在开始运行此脚本
 
  1. root@client2:/tmp# sh backup.sh   
  2. Start to backup at 201303072101  
  3. Backup is finish! at 201303072102  
然后到data里查看结果
 
  1. root@client2:/tmp# cd data  
  2. root@client2:/tmp/data# ll  
  3. total 3272  
  4. drwxr-xr-x  2 root root    4096 Mar  7 21:01 ./  
  5. drwxrwxrwt 13 root root    4096 Mar  7 21:02 ../  
  6. -rw-r--r--  1 root root    3780 Mar  7 21:02 test-201303072101.log  
  7. -rw-r--r--  1 root root 3336909 Mar  7 21:02 test-201303072101.tar.gz  
  8. root@client2:/tmp/data# cat test-201303072101.log   
  9.  
  10. InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy  
  11. and Percona Inc 2009-2012.  All Rights Reserved.  
  12.  
  13. This software is published under  
  14. the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.  
  15.  
  16. 130307 21:01:39  innobackupex: Starting mysql with options:  --defaults-file='/etc/mysql/my.cnf' --password=xxxxxxxx --user='root' --unbuffered --  
  17. 130307 21:01:39  innobackupex: Connected to database with mysql child process (pid=12441)  
  18. 130307 21:01:45  innobackupex: Connection to database server closed  
  19. IMPORTANT: Please check that the backup run completes successfully.  
  20.            At the end of a successful backup run innobackupex  
  21.            prints "completed OK!".  
  22.  
  23. innobackupex: Using mysql  Ver 14.14 Distrib 5.5.28, for debian-linux-gnu (x86_64) using readline 6.2  
  24. innobackupex: Using mysql server version Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.  
  25.  
  26. innobackupex: Created backup directory /tmp/data  
  27. 130307 21:01:45  innobackupex: Starting mysql with options:  --defaults-file='/etc/mysql/my.cnf' --password=xxxxxxxx --user='root' --unbuffered --  
  28. 130307 21:01:45  innobackupex: Connected to database with mysql child process (pid=12471)  
  29. 130307 21:01:47  innobackupex: Connection to database server closed  
  30.  
  31. 130307 21:01:47  innobackupex: Starting ibbackup with command: xtrabackup_55  --defaults-file="/etc/mysql/my.cnf" --backup --suspend-at-end --log-stream --target-dir=/tmp  
  32. innobackupex: Waiting for ibbackup (pid=12478) to suspend  
  33. innobackupex: Suspend file '/tmp/xtrabackup_suspended'  
  34.  
  35. xtrabackup: suspend-at-end is enabled.  
  36. xtrabackup: uses posix_fadvise().  
  37. xtrabackup: cd to /var/lib/mysql  
  38. xtrabackup: Target instance is assumed as followings.  
  39. xtrabackup:   innodb_data_home_dir = ./  
  40. xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend  
  41. xtrabackup:   innodb_log_group_home_dir = ./  
  42. xtrabackup:   innodb_log_files_in_group = 2 
  43. xtrabackup:   innodb_log_file_size = 5242880 
  44. 130307 21:01:47 InnoDB: Using Linux native AIO  
  45. xtrabackup: Stream mode.  
  46. >> log scanned up to (59605543)  
  47.  
  48. 130307 21:01:49  innobackupex: Continuing after ibbackup has suspended  
  49.  
  50. innobackupex: Starting to backup InnoDB tables and indexes  
  51. innobackupex: from original InnoDB data directory '/var/lib/mysql'  
  52. innobackupex: Backing up as tar stream 'ibdata1'  
  53. 130307 21:01:52  innobackupex: Starting mysql with options:  --defaults-file='/etc/mysql/my.cnf' --password=xxxxxxxx --user='root' --unbuffered --  
  54. 130307 21:01:52  innobackupex: Connected to database with mysql child process (pid=12494)  
  55. >> log scanned up to (59605543)  
  56. 130307 21:01:54  innobackupex: Starting to lock all tables...  
  57. >> log scanned up to (59605543)  
  58. >> log scanned up to (59605543)  
  59. 130307 21:02:04  innobackupex: All tables locked and flushed to disk  
  60.  
  61. 130307 21:02:04  innobackupex: Starting to backup .frm, .MRG, .MYD, .MYI,  
  62. innobackupex: .TRG, .TRN, .ARM, .ARZ, .CSM, .CSV and .opt files in  
  63. innobackupex: subdirectories of '/var/lib/mysql'  
  64. innobackupex: Backing up file '/var/lib/mysql/test/test.frm'  
  65. innobackupex: Backing up file '/var/lib/mysql/test/db.opt'  
  66. 130307 21:02:04  innobackupex: Finished backing up .frm, .MRG, .MYD, .MYI, .TRG, .TRN, .ARM, .ARZ, .CSV, .CSM and .opt files  
  67.  
  68. innobackupex: Resuming ibbackup  
  69.  
  70. xtrabackup: The latest check point (for incremental): '59605543'  
  71. >> log scanned up to (59605543)  
  72. xtrabackup: Transaction log of lsn (59605543) to (59605543) was copied.  
  73. 130307 21:02:06  innobackupex: All tables unlocked  
  74. 130307 21:02:06  innobackupex: Connection to database server closed  
  75.  
  76. innobackupex: Backup created in directory '/tmp/data'  
  77. innobackupex: MySQL binlog position: filename 'mysql-bin.000022', position 107  
  78. innobackupex: You must use -i (--ignore-zeros) option for extraction of the tar stream.  
  79. 130307 21:02:06  innobackupex: completed OK!  
可以看到备份完成了
(3)恢复数据库
先关闭mysql服务,然后再删除test数据库文件
 
  1. root@client2:/tmp/data# service mysql stop  
  2. mysql stop/waiting  
  3. root@client2:/tmp/data# cd /var/lib/mysql/  
  4. root@client2:/var/lib/mysql# ll  
  5. total 77860  
  6. drwx------  8 mysql mysql     4096 Mar  7 20:59 ./  
  7. drwxr-xr-x 38 root  root      4096 Mar  7 19:52 ../  
  8. -rw-r--r--  1 root  root         0 Jan  5 14:22 debian-5.5.flag  
  9. drwx------  2 mysql mysql     4096 Feb 11 17:39 django/  
  10. -rw-rw----  1 mysql mysql 69206016 Mar  7 21:02 ibdata1  
  11. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:02 ib_logfile0  
  12. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:01 ib_logfile1  
  13. drwx------  2 mysql mysql     4096 Jan  5 22:55 monitor/  
  14. drwx------  2 mysql root      4096 Jan  5 14:22 mysql/  
  15. -rw-rw----  1 root  root         6 Jan  5 14:22 mysql_upgrade_info  
  16. drwx------  2 mysql mysql     4096 Jan  5 14:22 performance_schema/  
  17. drwx------  2 mysql mysql     4096 Mar  7 21:00 test/  
  18. drwxr-xr-x  2 mysql mysql     4096 Mar  7 19:58 xtrbackup/  
  19. root@client2:/var/lib/mysql# rm -rf test  
  20. root@client2:/var/lib/mysql# ll  
  21. total 77856  
  22. drwx------  7 mysql mysql     4096 Mar  7 21:03 ./  
  23. drwxr-xr-x 38 root  root      4096 Mar  7 19:52 ../  
  24. -rw-r--r--  1 root  root         0 Jan  5 14:22 debian-5.5.flag  
  25. drwx------  2 mysql mysql     4096 Feb 11 17:39 django/  
  26. -rw-rw----  1 mysql mysql 69206016 Mar  7 21:02 ibdata1  
  27. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:02 ib_logfile0  
  28. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:01 ib_logfile1  
  29. drwx------  2 mysql mysql     4096 Jan  5 22:55 monitor/  
  30. drwx------  2 mysql root      4096 Jan  5 14:22 mysql/  
  31. -rw-rw----  1 root  root         6 Jan  5 14:22 mysql_upgrade_info  
  32. drwx------  2 mysql mysql     4096 Jan  5 14:22 performance_schema/  
  33. drwxr-xr-x  2 mysql mysql     4096 Mar  7 19:58 xtrbackup/  
开始恢复数据库
先把之前/tmp/data里的数据库压缩版给解压
 
  1. root@client2:cd /tmp/data  
  2. root@client2:/tmp/data# tar -izxvf test-201303072101.tar.gz -C /tmp/restore/  
  3. backup-my.cnf  
  4. ibdata1  
  5. xtrabackup_binlog_info  
  6. test/test.frm  
  7. test/db.opt  
  8. xtrabackup_logfile  
  9. xtrabackup_checkpoints  
  10. xtrabackup_binary  
注意:这里tar解包必须使用-i参数,否则解压出来的文件只有一个backup-my.cnf
查看一下restore的内容
 
  1. root@client2:/tmp/data# cd /tmp/restore/  
  2. root@client2:/tmp/restore# ll  
  3. total 67616  
  4. drwxr-xr-x  3 root  root      4096 Mar  7 21:03 ./  
  5. drwxrwxrwt 14 root  root      4096 Mar  7 21:03 ../  
  6. -rw-r--r--  1 root  root       260 Mar  7 21:01 backup-my.cnf  
  7. -rw-rw----  1 mysql mysql 69206016 Mar  7 21:01 ibdata1  
  8. drwxr-xr-x  2 root  root      4096 Mar  7 21:03 test/  
  9. -rw-r--r--  1 root  root        13 Mar  7 21:02 xtrabackup_binary  
  10. -rw-r--r--  1 root  root        23 Mar  7 21:02 xtrabackup_binlog_info  
  11. -rw-r--r--  1 root  root        79 Mar  7 21:02 xtrabackup_checkpoints  
  12. -rw-r--r--  1 root  root      2560 Mar  7 21:02 xtrabackup_logfile  

然后将备份文件中的日志应用到备份文件中的数据文件上

 
  1. root@client2:/tmp/restore# innobackupex --user=root --password=123456 --apply-log /tmp/restore/  
  2.  
  3. InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy  
  4. and Percona Inc 2009-2012.  All Rights Reserved.  
  5.  
  6. This software is published under  
  7. the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.  
  8.  
  9. IMPORTANT: Please check that the apply-log run completes successfully.  
  10.            At the end of a successful apply-log run innobackupex  
  11.            prints "completed OK!".  
  12.  
  13.  
  14.  
  15. 130307 21:04:18  innobackupex: Starting ibbackup with command: xtrabackup_55  --defaults-file="/tmp/restore/backup-my.cnf" --prepare --target-dir=/tmp/restore  
  16.  
  17. xtrabackup_55 version 1.6.7 for Percona Server 5.5.16 Linux (x86_64) (revision id: undefined)  
  18. xtrabackup: cd to /tmp/restore  
  19. xtrabackup: This target seems to be not prepared yet.  
  20. xtrabackup: xtrabackup_logfile detected: size=2097152start_lsn=(59605543)  
  21. xtrabackup: Temporary instance for recovery is set as followings.  
  22. xtrabackup:   innodb_data_home_dir = ./  
  23. xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend  
  24. xtrabackup:   innodb_log_group_home_dir = ./  
  25. xtrabackup:   innodb_log_files_in_group = 1 
  26. xtrabackup:   innodb_log_file_size = 2097152 
  27. 130307 21:04:19 InnoDB: Using Linux native AIO  
  28. xtrabackup: Starting InnoDB instance for recovery.  
  29. xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)  
  30. 130307 21:04:19 InnoDB: The InnoDB memory heap is disabled  
  31. 130307 21:04:19 InnoDB: Mutexes and rw_locks use GCC atomic builtins  
  32. 130307 21:04:19 InnoDB: Compressed tables use zlib 1.2.3  
  33. 130307 21:04:19 InnoDB: Using Linux native AIO  
  34. 130307 21:04:19 InnoDB: Warning: innodb_file_io_threads is deprecated. Please use innodb_read_io_threads and innodb_write_io_threads instead  
  35. 130307 21:04:19 InnoDB: Initializing buffer pool, size = 100.0M  
  36. 130307 21:04:19 InnoDB: Completed initialization of buffer pool  
  37. 130307 21:04:19 InnoDB: highest supported file format is Barracuda.  
  38. InnoDB: The log sequence number in ibdata files does not match  
  39. InnoDB: the log sequence number in the ib_logfiles!  
  40. 130307 21:04:19  InnoDB: Database was not shut down normally!  
  41. InnoDB: Starting crash recovery.  
  42. InnoDB: Reading tablespace information from the .ibd files...  
  43. InnoDB: Last MySQL binlog file position 0 107, file name /var/log/mysql/mysql-bin.000022  
  44. 130307 21:04:20  InnoDB: Waiting for the background threads to start  
  45. 130307 21:04:21 Percona XtraDB (http://www.percona.com) 1.1.8-20.1 started; log sequence number 59605543  
  46.  
  47. [notice (again)]  
  48.   If you use binary log and don't use any hack of group commit,  
  49.   the binary log position seems to be:  
  50. InnoDB: Last MySQL binlog file position 0 107, file name /var/log/mysql/mysql-bin.000022  
  51.  
  52. xtrabackup: starting shutdown with innodb_fast_shutdown = 1 
  53. 130307 21:04:21  InnoDB: Starting shutdown...  
  54. 130307 21:04:25  InnoDB: Shutdown completed; log sequence number 59606758  
  55.  
  56. 130307 21:04:25  innobackupex: Restarting xtrabackup with command: xtrabackup_55  --defaults-file="/tmp/restore/backup-my.cnf" --prepare --target-dir=/tmp/restore  
  57. for creating ib_logfile*  
  58.  
  59. xtrabackup_55 version 1.6.7 for Percona Server 5.5.16 Linux (x86_64) (revision id: undefined)  
  60. xtrabackup: cd to /tmp/restore  
  61. xtrabackup: This target seems to be already prepared.  
  62. xtrabackup: notice: xtrabackup_logfile was already used to '--prepare'.  
  63. xtrabackup: Temporary instance for recovery is set as followings.  
  64. xtrabackup:   innodb_data_home_dir = ./  
  65. xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend  
  66. xtrabackup:   innodb_log_group_home_dir = ./  
  67. xtrabackup:   innodb_log_files_in_group = 2 
  68. xtrabackup:   innodb_log_file_size = 5242880 
  69. 130307 21:04:25 InnoDB: Using Linux native AIO  
  70. xtrabackup: Starting InnoDB instance for recovery.  
  71. xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)  
  72. 130307 21:04:25 InnoDB: The InnoDB memory heap is disabled  
  73. 130307 21:04:25 InnoDB: Mutexes and rw_locks use GCC atomic builtins  
  74. 130307 21:04:25 InnoDB: Compressed tables use zlib 1.2.3  
  75. 130307 21:04:25 InnoDB: Using Linux native AIO  
  76. 130307 21:04:25 InnoDB: Warning: innodb_file_io_threads is deprecated. Please use innodb_read_io_threads and innodb_write_io_threads instead  
  77. 130307 21:04:25 InnoDB: Initializing buffer pool, size = 100.0M  
  78. 130307 21:04:25 InnoDB: Completed initialization of buffer pool  
  79. 130307 21:04:25  InnoDB: Log file ./ib_logfile0 did not exist: new to be created  
  80. InnoDB: Setting log file ./ib_logfile0 size to 5 MB  
  81. InnoDB: Database physically writes the file full: wait...  
  82. 130307 21:04:25  InnoDB: Log file ./ib_logfile1 did not exist: new to be created  
  83. InnoDB: Setting log file ./ib_logfile1 size to 5 MB  
  84. InnoDB: Database physically writes the file full: wait...  
  85. 130307 21:04:25 InnoDB: highest supported file format is Barracuda.  
  86. InnoDB: The log sequence number in ibdata files does not match  
  87. InnoDB: the log sequence number in the ib_logfiles!  
  88. 130307 21:04:25  InnoDB: Database was not shut down normally!  
  89. InnoDB: Starting crash recovery.  
  90. InnoDB: Reading tablespace information from the .ibd files...  
  91. InnoDB: Last MySQL binlog file position 0 107, file name /var/log/mysql/mysql-bin.000022  
  92. 130307 21:04:26  InnoDB: Waiting for the background threads to start  
  93. 130307 21:04:27 Percona XtraDB (http://www.percona.com) 1.1.8-20.1 started; log sequence number 59607052  
  94.  
  95. [notice (again)]  
  96.   If you use binary log and don't use any hack of group commit,  
  97.   the binary log position seems to be:  
  98. InnoDB: Last MySQL binlog file position 0 107, file name /var/log/mysql/mysql-bin.000022  
  99.  
  100. xtrabackup: starting shutdown with innodb_fast_shutdown = 1 
  101. 130307 21:04:27  InnoDB: Starting shutdown...  
  102. 130307 21:04:31  InnoDB: Shutdown completed; log sequence number 59607052  
  103. 130307 21:04:31  innobackupex: completed OK!  
这里的--apply-log指明是将日志应用到数据文件上,完成之后将备份文件中的数据恢复到数据库中:
然后再查看一下当前目录内容
 
  1. root@client2:/tmp/restore# ll  
  2. total 79904  
  3. drwxr-xr-x  3 root  root      4096 Mar  7 21:04 ./  
  4. drwxrwxrwt 14 root  root      4096 Mar  7 21:04 ../  
  5. -rw-r--r--  1 root  root       260 Mar  7 21:01 backup-my.cnf  
  6. -rw-rw----  1 mysql mysql 69206016 Mar  7 21:04 ibdata1  
  7. -rw-r--r--  1 root  root   5242880 Mar  7 21:04 ib_logfile0  
  8. -rw-r--r--  1 root  root   5242880 Mar  7 21:04 ib_logfile1  
  9. drwxr-xr-x  2 root  root      4096 Mar  7 21:03 test/  
  10. -rw-r--r--  1 root  root        13 Mar  7 21:02 xtrabackup_binary  
  11. -rw-r--r--  1 root  root        23 Mar  7 21:02 xtrabackup_binlog_info  
  12. -rw-r--r--  1 root  root        36 Mar  7 21:04 xtrabackup_binlog_pos_innodb  
  13. -rw-r--r--  1 root  root        79 Mar  7 21:04 xtrabackup_checkpoints  
  14. -rw-r--r--  1 root  root   2097152 Mar  7 21:04 xtrabackup_logfile  
  15. 然后把test目录复制到/var/lib/mysql目录  
  16. root@client2:/tmp/restore# rsync -avz test ib* /var/lib/mysql/  
  17. sending incremental file list  
  18. test/  
  19. test/db.opt  
  20. test/test.frm  
  21.  
  22. sent 381 bytes  received 54 bytes  870.00 bytes/sec  
  23. total size is 8621  speedup is 19.82  
  24. root@client2:/tmp/restore# cd /var/lib/mysql/  
  25. root@client2:/var/lib/mysql# ll  
  26. total 77860  
  27. drwx------  8 mysql mysql     4096 Mar  7 21:06 ./  
  28. drwxr-xr-x 38 root  root      4096 Mar  7 19:52 ../  
  29. -rw-r--r--  1 root  root         0 Jan  5 14:22 debian-5.5.flag  
  30. drwx------  2 mysql mysql     4096 Feb 11 17:39 django/  
  31. -rw-rw----  1 mysql mysql 69206016 Mar  7 21:02 ibdata1  
  32. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:02 ib_logfile0  
  33. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:01 ib_logfile1  
  34. drwx------  2 mysql mysql     4096 Jan  5 22:55 monitor/  
  35. drwx------  2 mysql root      4096 Jan  5 14:22 mysql/  
  36. -rw-rw----  1 root  root         6 Jan  5 14:22 mysql_upgrade_info  
  37. drwx------  2 mysql mysql     4096 Jan  5 14:22 performance_schema/  
  38. drwxr-xr-x  2 root  root      4096 Mar  7 21:03 test/  
  39. drwxr-xr-x  2 mysql mysql     4096 Mar  7 19:58 xtrbackup/  
然后再修改test的用户与组为mysql
 
  1. root@client2:/var/lib/mysql# chown -R mysql:mysql test  
  2. root@client2:/var/lib/mysql# ll  
  3. total 77860  
  4. drwx------  8 mysql mysql     4096 Mar  7 21:06 ./  
  5. drwxr-xr-x 38 root  root      4096 Mar  7 19:52 ../  
  6. -rw-r--r--  1 root  root         0 Jan  5 14:22 debian-5.5.flag  
  7. drwx------  2 mysql mysql     4096 Feb 11 17:39 django/  
  8. -rw-rw----  1 mysql mysql 69206016 Mar  7 21:02 ibdata1  
  9. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:02 ib_logfile0  
  10. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:01 ib_logfile1  
  11. drwx------  2 mysql mysql     4096 Jan  5 22:55 monitor/  
  12. drwx------  2 mysql root      4096 Jan  5 14:22 mysql/  
  13. -rw-rw----  1 root  root         6 Jan  5 14:22 mysql_upgrade_info  
  14. drwx------  2 mysql mysql     4096 Jan  5 14:22 performance_schema/  
  15. drwxr-xr-x  2 mysql mysql     4096 Mar  7 21:03 test/  
  16. drwxr-xr-x  2 mysql mysql     4096 Mar  7 19:58 xtrbackup/  
然后启动mysql,并查看test数据库的表里内容
 
  1. root@client2:/var/lib/mysql# service  mysql start  
  2. mysql start/running, process 12730  
  3. root@client2:/var/lib/mysql# mysql -u root -p  
  4. Enter password:   
  5. Welcome to the MySQL monitor.  Commands end with ; or \g.  
  6. Your MySQL connection id is 36  
  7. Server version: 5.5.28-0ubuntu0.12.04.3-log (Ubuntu)  
  8.  
  9. Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.  
  10.  
  11. Oracle is a registered trademark of Oracle Corporation and/or its  
  12. affiliates. Other names may be trademarks of their respective  
  13. owners.  
  14.  
  15. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
  16.  
  17. mysql> use test;  
  18. Reading table information for completion of table and column names  
  19. You can turn off this feature to get a quicker startup with -A  
  20.  
  21. Database changed  
  22. mysql> select * from test;  
  23. +------+  
  24. | id   |  
  25. +------+  
  26. |    1 |  
  27. |    2 |  
  28. |    3 |  
  29. |    4 |  
  30. |    5 |  
  31. +------+  
  32. 5 rows in set (0.01 sec)  
可以看到数据库已经恢复完成
可能大家有个疑问,为什么我这里不像很多网上的文章里是在apply-log后,使用copy-back如果使用/usr/bin/innobackupex --copy-back命令后,会报Original data directory is not empty! at /usr/local/xtrabackup/bin/innobackupex line 538.恢复的目录必须为空。经查官网,这是xtrabackup的一个BUG。
innobackupexcopy-back was run. With this bug fix, innobackupexcopy-back operation if the destination is not empty, avoiding potential data loss or a strang combination of a restored backup and previous data. Bug Fixed: #737569 (Valentine Gostev) will now error out of the did not check that MySQL datadir was empty before
所以在apply-log后直接复制数据目录到数据库的位置上吧。
三、对数据库的增量备份与恢复
为了进行增量备份,先对数据库添加一些数据
 
  1. mysql> insert into test values(11);  
  2. Query OK, 1 row affected (0.10 sec)  
  3.  
  4. mysql> insert into test values(12);  
  5. Query OK, 1 row affected (0.05 sec)  
  6.  
  7. mysql> insert into test values(13);  
  8. Query OK, 1 row affected (0.00 sec)  
  9.  
  10. mysql> insert into test values(14);  
  11. Query OK, 1 row affected (0.00 sec)  
  12.  
  13. mysql> insert into test values(15);  
  14. Query OK, 1 row affected (0.00 sec)  
  15.  
  16. mysql> flush privileges;  
  17. Query OK, 0 rows affected (0.01 sec)  
  18.  
  19. mysql> select * from test;  
  20. +------+  
  21. | id   |  
  22. +------+  
  23. |    1 |  
  24. |    2 |  
  25. |    3 |  
  26. |    4 |  
  27. |    5 |  
  28. |   11 |  
  29. |   12 |  
  30. |   13 |  
  31. |   14 |  
  32. |   15 |  
  33. +------+  
  34. 10 rows in set (0.00 sec)  
然后进行增量的备份

 

 
  1. root@client2:/var/lib/mysql# innobackupex --user=root --password=123456 --database=test --incremental --incremental-basedir=/tmp/restore/ /tmp/data  
  2.  
  3. InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy  
  4. and Percona Inc 2009-2012.  All Rights Reserved.  
  5.  
  6. This software is published under  
  7. the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.  
  8.  
  9. 130307 21:13:38  innobackupex: Starting mysql with options:  --password=xxxxxxxx --user='root' --unbuffered --  
  10. 130307 21:13:38  innobackupex: Connected to database with mysql child process (pid=12864)  
  11. 130307 21:13:44  innobackupex: Connection to database server closed  
  12. IMPORTANT: Please check that the backup run completes successfully.  
  13.            At the end of a successful backup run innobackupex  
  14.            prints "completed OK!".  
  15.  
  16. innobackupex: Using mysql  Ver 14.14 Distrib 5.5.28, for debian-linux-gnu (x86_64) using readline 6.2  
  17. innobackupex: Using mysql server version Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.  
  18.  
  19. innobackupex: Created backup directory /tmp/data/2013-03-07_21-13-44  
  20. 130307 21:13:44  innobackupex: Starting mysql with options:  --password=xxxxxxxx --user='root' --unbuffered --  
  21. 130307 21:13:44  innobackupex: Connected to database with mysql child process (pid=12891)  
  22. 130307 21:13:46  innobackupex: Connection to database server closed  
  23.  
  24. 130307 21:13:46  innobackupex: Starting ibbackup with command: xtrabackup_55 --backup --suspend-at-end --target-dir=/tmp/data/2013-03-07_21-13-44 --incremental-basedir='/tmp/restore/' 
  25. innobackupex: Waiting for ibbackup (pid=12898) to suspend  
  26. innobackupex: Suspend file '/tmp/data/2013-03-07_21-13-44/xtrabackup_suspended'  
  27.  
  28. xtrabackup_55 version 1.6.7 for Percona Server 5.5.16 Linux (x86_64) (revision id: undefined)  
  29. incremental backup from 59605543 is enabled.  
  30. xtrabackup: uses posix_fadvise().  
  31. xtrabackup: cd to /var/lib/mysql  
  32. xtrabackup: Target instance is assumed as followings.  
  33. xtrabackup:   innodb_data_home_dir = ./  
  34. xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend  
  35. xtrabackup:   innodb_log_group_home_dir = ./  
  36. xtrabackup:   innodb_log_files_in_group = 2 
  37. xtrabackup:   innodb_log_file_size = 5242880 
  38. 130307 21:13:46 InnoDB: Using Linux native AIO  
  39. >> log scanned up to (59606124)  
  40. [01] Copying ./ibdata1   
  41.      to /tmp/data/2013-03-07_21-13-44/ibdata1.delta  
  42. [01]        ...done  
  43.  
  44. 130307 21:13:50  innobackupex: Continuing after ibbackup has suspended  
  45. 130307 21:13:50  innobackupex: Starting mysql with options:  --password=xxxxxxxx --user='root' --unbuffered --  
  46. 130307 21:13:50  innobackupex: Connected to database with mysql child process (pid=12913)  
  47. >> log scanned up to (59606124)  
  48. 130307 21:13:52  innobackupex: Starting to lock all tables...  
  49. >> log scanned up to (59606124)  
  50. >> log scanned up to (59606124)  
  51. 130307 21:14:03  innobackupex: All tables locked and flushed to disk  
  52.  
  53. 130307 21:14:03  innobackupex: Starting to backup .frm, .MRG, .MYD, .MYI,  
  54. innobackupex: .TRG, .TRN, .ARM, .ARZ, .CSM, .CSV and .opt files in  
  55. innobackupex: subdirectories of '/var/lib/mysql'  
  56. innobackupex: Backing up file '/var/lib/mysql/test/test.frm'  
  57. innobackupex: Backing up file '/var/lib/mysql/test/db.opt'  
  58. 130307 21:14:03  innobackupex: Finished backing up .frm, .MRG, .MYD, .MYI, .TRG, .TRN, .ARM, .ARZ, .CSV, .CSM and .opt files  
  59.  
  60. innobackupex: Resuming ibbackup  
  61.  
  62. xtrabackup: The latest check point (for incremental): '59606124'  
  63. >> log scanned up to (59606124)  
  64. xtrabackup: Stopping log copying thread.  
  65. xtrabackup: Transaction log of lsn (59606124) to (59606124) was copied.  
  66. 130307 21:14:05  innobackupex: All tables unlocked  
  67. 130307 21:14:05  innobackupex: Connection to database server closed  
  68.  
  69. innobackupex: Backup created in directory '/tmp/data/2013-03-07_21-13-44'  
  70. innobackupex: MySQL binlog position: filename 'mysql-bin.000023', position 107  
  71. 130307 21:14:05  innobackupex: completed OK!  
其中,--incremental指明是增量备份,--incremental-basedir指定上次完整备份或者增量备份文件的位置。这里的增量备份其实只针对的是InnoDB,对于MyISAM来说,还是完整备份。
在进行增量备份的恢复之前,先关闭数据库,然后删除数据库test
 
  1. root@client2:/var/lib/mysql# service mysql stop  
  2. mysql stop/waiting  
  3. root@client2:/var/lib/mysql# rm -rf test  
  4. root@client2:/var/lib/mysql# ll  
  5. total 77856  
  6. drwx------  7 mysql mysql     4096 Mar  7 21:17 ./  
  7. drwxr-xr-x 38 root  root      4096 Mar  7 19:52 ../  
  8. -rw-r--r--  1 root  root         0 Jan  5 14:22 debian-5.5.flag  
  9. drwx------  2 mysql mysql     4096 Feb 11 17:39 django/  
  10. -rw-rw----  1 mysql mysql 69206016 Mar  7 21:17 ibdata1  
  11. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:17 ib_logfile0  
  12. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:11 ib_logfile1  
  13. drwx------  2 mysql mysql     4096 Jan  5 22:55 monitor/  
  14. drwx------  2 mysql root      4096 Jan  5 14:22 mysql/  
  15. -rw-rw----  1 root  root         6 Jan  5 14:22 mysql_upgrade_info  
  16. drwx------  2 mysql mysql     4096 Jan  5 14:22 performance_schema/  
  17. drwxr-xr-x  2 mysql mysql     4096 Mar  7 19:58 xtrbackup/  
增量备份的恢复
 
  1. root@client2:/var/lib/mysql# innobackupex -user=root --password=123456 --defaults-file=/etc/mysql/my.cnf --apply-log /tmp/restore/ --incremental-dir=/tmp/data/2013-03-07_21-13-44/  
  2.  
  3. InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy  
  4. and Percona Inc 2009-2012.  All Rights Reserved.  
  5.  
  6. This software is published under  
  7. the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.  
  8.  
  9. IMPORTANT: Please check that the apply-log run completes successfully.  
  10.            At the end of a successful apply-log run innobackupex  
  11.            prints "completed OK!".  
  12.  
  13.  
  14.  
  15. 130307 21:18:20  innobackupex: Starting ibbackup with command: xtrabackup_55  --defaults-file="/etc/mysql/my.cnf" --prepare --target-dir=/tmp/restore --incremental-dir=/tmp/data/2013-03-07_21-13-44/  
  16.  
  17. xtrabackup_55 version 1.6.7 for Percona Server 5.5.16 Linux (x86_64) (revision id: undefined)  
  18. incremental backup from 59605543 is enabled.  
  19. xtrabackup: cd to /tmp/restore  
  20. xtrabackup: This target seems to be already prepared.  
  21. xtrabackup: xtrabackup_logfile detected: size=2097152start_lsn=(59606124)  
  22. xtrabackup: page size for /tmp/data/2013-03-07_21-13-44//ibdata1.delta is 16384 bytes  
  23. Applying /tmp/data/2013-03-07_21-13-44//ibdata1.delta ...  
  24. xtrabackup: Temporary instance for recovery is set as followings.  
  25. xtrabackup:   innodb_data_home_dir = ./  
  26. xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend  
  27. xtrabackup:   innodb_log_group_home_dir = /tmp/data/2013-03-07_21-13-44/  
  28. xtrabackup:   innodb_log_files_in_group = 1 
  29. xtrabackup:   innodb_log_file_size = 2097152 
  30. 130307 21:18:20 InnoDB: Using Linux native AIO  
  31. xtrabackup: Starting InnoDB instance for recovery.  
  32. xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)  
  33. 130307 21:18:20 InnoDB: The InnoDB memory heap is disabled  
  34. 130307 21:18:20 InnoDB: Mutexes and rw_locks use GCC atomic builtins  
  35. 130307 21:18:20 InnoDB: Compressed tables use zlib 1.2.3  
  36. 130307 21:18:20 InnoDB: Using Linux native AIO  
  37. 130307 21:18:20 InnoDB: Warning: innodb_file_io_threads is deprecated. Please use innodb_read_io_threads and innodb_write_io_threads instead  
  38. 130307 21:18:20 InnoDB: Initializing buffer pool, size = 100.0M  
  39. 130307 21:18:20 InnoDB: Completed initialization of buffer pool  
  40. 130307 21:18:20 InnoDB: highest supported file format is Barracuda.  
  41. InnoDB: ##########################################################  
  42. InnoDB:                          WARNING!  
  43. InnoDB: The log sequence number in ibdata files is higher  
  44. InnoDB: than the log sequence number in the ib_logfiles! Are you sure  
  45. InnoDB: you are using the right ib_logfiles to start up the database?  
  46. InnoDB: Log sequence number in ib_logfiles is 59606124, log  
  47. InnoDB: sequence numbers stamped to ibdata file headers are between  
  48. InnoDB: 59607052 and 59607052.  
  49. InnoDB: ##########################################################  
  50. InnoDB: The log sequence number in ibdata files does not match  
  51. InnoDB: the log sequence number in the ib_logfiles!  
  52. 130307 21:18:20  InnoDB: Database was not shut down normally!  
  53. InnoDB: Starting crash recovery.  
  54. InnoDB: Reading tablespace information from the .ibd files...  
  55. InnoDB: Last MySQL binlog file position 0 107, file name /var/log/mysql/mysql-bin.000023  
  56. 130307 21:18:29  InnoDB: Waiting for the background threads to start  
  57. 130307 21:18:30 Percona XtraDB (http://www.percona.com) 1.1.8-20.1 started; log sequence number 59606124  
  58.  
  59. [notice (again)]  
  60.   If you use binary log and don't use any hack of group commit,  
  61.   the binary log position seems to be:  
  62. InnoDB: Last MySQL binlog file position 0 107, file name /var/log/mysql/mysql-bin.000023  
  63.  
  64. xtrabackup: starting shutdown with innodb_fast_shutdown = 1 
  65. 130307 21:18:30  InnoDB: Starting shutdown...  
  66. 130307 21:18:34  InnoDB: Shutdown completed; log sequence number 59607339  
  67. innobackupex: Starting to copy non-InnoDB files in '/tmp/data/2013-03-07_21-13-44/'  
  68. innobackupex: to the full backup directory '/tmp/restore'  
  69. innobackupex: Copying '/tmp/data/2013-03-07_21-13-44/xtrabackup_binlog_info' to '/tmp/restore/xtrabackup_binlog_info'  
  70. innobackupex: Copying '/tmp/data/2013-03-07_21-13-44/test/test.frm' to '/tmp/restore/test/test.frm'  
  71. innobackupex: Copying '/tmp/data/2013-03-07_21-13-44/test/db.opt' to '/tmp/restore/test/db.opt'  
  72. 130307 21:18:34  innobackupex: completed OK!  
然后再进入恢复的目录/tmp/data
 
  1. root@client2:/var/lib/mysql# cd /tmp/data  
  2. root@client2:/tmp/data# ll  
  3. total 3276  
  4. drwxr-xr-x  3 root root    4096 Mar  7 21:13 ./  
  5. drwxrwxrwt 14 root root    4096 Mar  7 21:18 ../  
  6. drwxr-xr-x  3 root root    4096 Mar  7 21:18 2013-03-07_21-13-44/  
  7. -rw-r--r--  1 root root    3780 Mar  7 21:02 test-201303072101.log  
  8. -rw-r--r--  1 root root 3336909 Mar  7 21:02 test-201303072101.tar.gz  
  9. root@client2:/tmp/data# cd 2013-03-07_21-13-44/  
  10. root@client2:/tmp/data/2013-03-07_21-13-44# ll  
  11. total 2288  
  12. drwxr-xr-x 3 root root    4096 Mar  7 21:18 ./  
  13. drwxr-xr-x 3 root root    4096 Mar  7 21:13 ../  
  14. -rw-r--r-- 1 root root     260 Mar  7 21:13 backup-my.cnf  
  15. -rw-r--r-- 1 root root  212992 Mar  7 21:13 ibdata1.delta  
  16. -rw-r--r-- 1 root root      18 Mar  7 21:13 ibdata1.meta  
  17. drwxr-xr-x 2 root root    4096 Mar  7 21:14 test/  
  18. -rw-r--r-- 1 root root      13 Mar  7 21:14 xtrabackup_binary  
  19. -rw-r--r-- 1 root root      23 Mar  7 21:14 xtrabackup_binlog_info  
  20. -rw-r--r-- 1 root root      84 Mar  7 21:14 xtrabackup_checkpoints  
  21. -rw-r--r-- 1 root root 2097152 Mar  7 21:18 xtrabackup_logfile  
跟全部备份一样,把test恢复到/var/lib/mysql里
 
  1. root@client2:/tmp/data/2013-03-07_21-13-44# rsync -avz test ib* /var/lib/mysql/  
  2. sending incremental file list  
  3. test/  
  4. test/db.opt  
  5. test/test.frm  
  6.  
  7. sent 381 bytes  received 54 bytes  870.00 bytes/sec  
  8. total size is 8621  speedup is 19.82  
  9. root@client2:/tmp/data/2013-03-07_21-13-44# cd /var/lib/mysql/  
  10. root@client2:/var/lib/mysql# ll  
  11. total 77860  
  12. drwx------  8 mysql mysql     4096 Mar  7 21:19 ./  
  13. drwxr-xr-x 38 root  root      4096 Mar  7 19:52 ../  
  14. -rw-r--r--  1 root  root         0 Jan  5 14:22 debian-5.5.flag  
  15. drwx------  2 mysql mysql     4096 Feb 11 17:39 django/  
  16. -rw-rw----  1 mysql mysql 69206016 Mar  7 21:17 ibdata1  
  17. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:17 ib_logfile0  
  18. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:11 ib_logfile1  
  19. drwx------  2 mysql mysql     4096 Jan  5 22:55 monitor/  
  20. drwx------  2 mysql root      4096 Jan  5 14:22 mysql/  
  21. -rw-rw----  1 root  root         6 Jan  5 14:22 mysql_upgrade_info  
  22. drwx------  2 mysql mysql     4096 Jan  5 14:22 performance_schema/  
  23. drwxr-xr-x  2 root  root      4096 Mar  7 21:14 test/  
  24. drwxr-xr-x  2 mysql mysql     4096 Mar  7 19:58 xtrbackup/  
然后修改用户与组
 
  1. root@client2:/var/lib/mysql# chown -R mysql:mysql test/  
  2. root@client2:/var/lib/mysql# ll  
  3. total 77860  
  4. drwx------  8 mysql mysql     4096 Mar  7 21:19 ./  
  5. drwxr-xr-x 38 root  root      4096 Mar  7 19:52 ../  
  6. -rw-r--r--  1 root  root         0 Jan  5 14:22 debian-5.5.flag  
  7. drwx------  2 mysql mysql     4096 Feb 11 17:39 django/  
  8. -rw-rw----  1 mysql mysql 69206016 Mar  7 21:17 ibdata1  
  9. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:17 ib_logfile0  
  10. -rw-rw----  1 mysql mysql  5242880 Mar  7 21:11 ib_logfile1  
  11. drwx------  2 mysql mysql     4096 Jan  5 22:55 monitor/  
  12. drwx------  2 mysql root      4096 Jan  5 14:22 mysql/  
  13. -rw-rw----  1 root  root         6 Jan  5 14:22 mysql_upgrade_info  
  14. drwx------  2 mysql mysql     4096 Jan  5 14:22 performance_schema/  
  15. drwxr-xr-x  2 mysql mysql     4096 Mar  7 21:14 test/  
  16. drwxr-xr-x  2 mysql mysql     4096 Mar  7 19:58 xtrbackup/  
然后启动msyql,并查看test数据库里test表的内容
 
  1. root@client2:/var/lib/mysql# service mysql start  
  2. mysql start/running, process 13109  
  3. root@client2:/var/lib/mysql# mysql -u root -p  
  4. Enter password:   
  5. Welcome to the MySQL monitor.  Commands end with ; or \g.  
  6. Your MySQL connection id is 36  
  7. Server version: 5.5.28-0ubuntu0.12.04.3-log (Ubuntu)  
  8.  
  9. Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.  
  10.  
  11. Oracle is a registered trademark of Oracle Corporation and/or its  
  12. affiliates. Other names may be trademarks of their respective  
  13. owners.  
  14.  
  15. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
  16.  
  17. mysql> use test  
  18. Reading table information for completion of table and column names  
  19. You can turn off this feature to get a quicker startup with -A  
  20.  
  21. Database changed  
  22. mysql> select * from test;  
  23. +------+  
  24. | id   |  
  25. +------+  
  26. |    1 |  
  27. |    2 |  
  28. |    3 |  
  29. |    4 |  
  30. |    5 |  
  31. |   11 |  
  32. |   12 |  
  33. |   13 |  
  34. |   14 |  
  35. |   15 |  
  36. +------+  
  37. 10 rows in set (0.00 sec)  
可以看到增量备份已经恢复完成。

 下面的链接是我在生产环境适应xtrabackup来恢复全部备份的数据库的案例

http://dl528888.blog.51cto.com/2382721/1153207



 本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1153204,如需转载请自行联系原作者




相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 关系型数据库 MySQL
mysql数据库备份与恢复
MySQL数据库的备份与恢复是确保数据安全性和业务连续性的关键操作。
120 4
|
1月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
101 3
|
1月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
46 3
|
2月前
|
存储 定位技术 数据库
介绍一下数据库的备份和恢复策略
【10月更文挑战第21】介绍一下数据库的备份和恢复策略
|
1月前
|
数据库
【赵渝强老师】数据库的备份方式
备份数据库是指将数据库中的数据及相关信息保存起来,以便在系统故障时恢复。备份对象不仅限于数据本身,还包括数据库对象、用户权限等。根据备份策略、类型和模式的不同,可分为整体/部分备份、完全/增量备份、一致/非一致备份。文中还附有相关视频讲解。
|
3月前
|
关系型数据库 MySQL 数据库
Navicat备份数据库
涵盖`Navicat`数据库备份、数据安全及备份策略等主题。文库采用精美主题,提升阅读体验。
48 1
Navicat备份数据库
|
3月前
|
SQL 数据库 数据安全/隐私保护
如何手动备份数据库?
如何手动备份数据库?
138 1
|
4月前
|
SQL 数据库
Microsoft SQL Server 2014如何来备份数据库
Microsoft SQL Server 2014如何来备份数据库
476 3
|
4月前
|
关系型数据库 MySQL Shell
分享一篇mysql数据库备份脚本
分享一篇mysql数据库备份脚本
38 0
|
4月前
|
关系型数据库 MySQL Linux
在Linux中,如何备份一个数据库?
在Linux中,如何备份一个数据库?