Xtrabackup与innobackupex热备份MySQL数据
一.Xtrabackup 简介及备份原理说明:
Xtrabackup是由percona开发的一个开源软件,能够非常快速地备份与恢复mysql数据库,且支持在线热备份(备份时不影响数据读写),此软件可以说是innodb热备工具ibbackup的一个开源替代品
Xtrabackup中包含两个工具:
1、xtrabackup:用于热备份innodb,xtradb引擎表的工具,不能备份其他表。
2、innobackupex:对xtrabackup封装的perl脚本,提供了用于myisam(会锁表)和innodb引擎,及混合使用引擎备份的能力。
Xtrabackup可以做什么
1、在线(热)备份整个库的InnoDB, XtraDB表
2、在xtrabackup的上一次整库备份基础上做增量备份(innodb only)
3、以流的形式产生备份,可以直接保存到远程机器上(本机硬盘空间不足时很有用)
MySQL数据库本身提供的工具并不支持真正的增量备份,二进制日志恢复是point-in-time(时间点)的恢复而不是增量备份。Xtrabackup工具支持对InnoDB存储引擎的增量备份,工作原理如下:
(1)首先完成一个完全备份,并记录下此时检查点的LSN(Log Sequence Number)。
(2)在进程增量备份时,比较表空间中每个页的LSN是否大于上次备份时的LSN,如果是,则备份该页,同时记录当前检查点的LSN。
在Xtrabackup的wiki上简单的介绍了一下实现的原理:
首先,在logfile中找到并记录最后一个checkpoint(“last checkpoint LSN”),然后开始从LSN的位置开始拷贝InnoDB的logfile到xtrabackup_logfile;接着,开始拷贝全部的数据文件.ibd;在拷贝全部数据文件结束之后,才停止拷贝logfile。
因为logfile里面记录全部的数据修改情况,所以,即使在备份过程中数据文件被修改过了,恢复时仍然能够通过解析xtrabackup_logfile保持数据的一致。
Tip1:Xtrabackup是一个用于备份InnoDB/XtrDB的工具,真正的在线备份(不影响数据的读写),InnoDB Hot Backup的开源替代品。
Tip2:在使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。
备份原理
XtraBackup基于InnoDB的crash-recovery功能。它会复制innodb的data file,由于不锁表,复制出来的数据是不一致的,在恢复的时候使用crash-recovery,使得数据恢复一致。
InnoDB维护了一个redo log,又称为transaction log,事务日志,它包含了innodb数据的所有改动情况。当InnoDB启动的时候,它会先去检查data file和transaction log,并且会做二步操作:
1.It applies committed transaction log entries to the data files
2.it performs an undo operation on any transactions that modified data but did not commit.
XtraBackup在备份的时候,一页一页地复制innodb的数据,而且不锁定表,与此同时,XtraBackup还有另外一个线程监视着transactions log,一旦log发生变化,就把变化过的log pages复制走。为什么要急着复制走呢? 前几章的时候就提过这个问题,因为transactions log文件大小有限,写满之后,就会从头再开始写,所以新数据可能会覆盖到旧的数据。
在prepare过程中,XtraBackup使用复制到的transactions log 对备份出来的innodb data file进行crash recovery。
实现细节
文件权限
xtrabackup以read-write模式打开innodb的数据文件,然后对其进行复制。其实它不会修改此文件。也就是说,运行xtrabackup的用户,必须对innodb的数据文件具有读写权限。
为什么要用rw模式呢?直接read模式不好么?因为xtrabackup采用了其内置的innodb库来打开文件,而innodb库打开文件的时候就是rw的。
Tuning the OS Buffers
因为XtraBackup要从文件系统中复制大量的数据,所以它尽可能地使用posix_fadvise(),来告诉OS不要缓存读取到的数据,从而提升性能。因为这些数据不会重用到了,OS却没有这么聪明。如果要缓存一下的话,几个G的数据,会对OS的虚拟内存造成很大的压力,其它进程,比如mysqld很有可能被swap出去,这样系统就会受到很大影响了。
posix_fadvise(file,0,0, POSIX_FADV_DONTNEED)
而且XtraBackup在读取数据的时候还尽可能地预读:
posix_fadvise(file,0,0, POSIX_FADV_SEQUENTIAL)
复制数据文件
在备份innodb page的过程中,XtraBackup每次读写1MB的数据,1MB/16KB=64个page。
这个不可配置。读1MB数据之后,XtraBackup一页一页地遍历这1MB数据,使用innodb的buf_page_is_corrupted()函数检查此页的数据是否正常,如果数据不正常,就重新读取这一页,最多重新读取10次,如果还是失败,备份就失败了,退出。
It skips this check on the doublewrite buffer??
在复制transactions log的时候,每次读写512KB的数据。同样不可以配置。
二.下载及安装配置
1. Xtrabackup二进制64位下载地址:
http://www.percona.com/downloads/XtraBackup/XtraBackup-1.6/Linux/binary/x86_64/
2.MySQL5.1.56的下载地址:
http://dev.mysql.com/downloads/mysql/5.1.html#downloads
操作系统环境:
CentOS release 5.4 (Final) x86_64 GNU/Linux 2.6.18-164.el5
2.安装配置
(1)安装配置mysql-5.1.56
在MySQL 5.1.38前的版本中,当你需要安装InnoDB Plugin时,必须下载Plugin的文件,解压后再进行一系列的安装。从MySQL 5.1.38开始往后,MySQL包含了2个不同版本的InnoDB存储引擎—一个是旧版本的引擎,称之为build-in innodb;另一个是1.0.4版本的InnoDB存储引擎。
Shell> tar –zxvvf mysql-5.1.56.tar.gz
Shell> cd mysql-5.1.56
Shell> ./configure --prefix=/opt/mysql5156 \
--with-charset=utf8 --with-collation=utf8_general_ci \
--with-extra-charsets=latin1,gb2312 \
--with-plugins=innobase,innodb_plugin,myisam,heap,csv,federated,blackhole \
--enable-local-infile --enable-thread-safe-client
Shell> make
Shell >make install
Shell> cp support-files/my-medium.cnf /etc/my.cnf
Shell>cd /opt/mysql5156
Shell>chown -R mysql .
Shell>chgrp -R mysql .
Shell>bin/mysql_install_db -user=mysql
Shell>chown -R root .
Shell> chown -R mysql var
配置启动plugin-innodb
Shell > vi /etc/my.cnf
port= 3307
socket = /tmp/mysql5156.sock
[mysqld]
port= 3307
socket = /tmp/mysql5156.sock
ignore_builtin_innodb
启动:shell>/opt/mysql5156/bin/mysqld_safe –user=mysql &
加载plugin-innodb:
mysql>INSTALL PLUGIN INNODB SONAME 'ha_innodb_plugin.so';
mysql >INSTALL PLUGIN INNODB_TRX SONAME 'ha_innodb_plugin.so';
mysql >INSTALL PLUGIN INNODB_LOCKS SONAME 'ha_innodb_plugin.so';
mysql >INSTALL PLUGIN INNODB_LOCK_WAITS SONAME 'ha_innodb_plugin.so';
mysql >INSTALL PLUGIN INNODB_CMP SONAME 'ha_innodb_plugin.so';
mysql >INSTALL PLUGIN INNODB_CMP_RESET SONAME 'ha_innodb_plugin.so';
mysql >INSTALL PLUGIN INNODB_CMPMEM SONAME 'ha_innodb_plugin.so';
mysql >INSTALL PLUGIN INNODB_CMPMEM_RESET SONAME 'ha_innodb_plugin.so';
上述语句只需执行一次就ok了,即使重启mysqld也不需要再次安装了。
mysql > show plugins;
mysql> select @@innodb_version;
+------------------+
| @@innodb_version |
+------------------+
| 1.0.15 |
+------------------+
1 row in set (0.00 sec)
mysql执行INSTALL PLUGIN INNODB SONAME 'ha_innodb_plugin.so';如果报错提示:ERROR 1289 (HY000): The ‘plugin’ feature is disabled; you need MySQL built with ‘HAVE_DLOPEN’ to have it working
经上网搜索找到解决问题方法:
在编译时不要用静态编译,将下面两个从编译参数中删除:
--with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static。至于原因不是很清楚。
(2)安装配置Xtrabackup
先看看如何安装Xtrabackup,最简单的安装方式是使用RPM包,不过想使用源代码方式安装的话,其安装方式有点古怪,因为它采用的在MySQL源代码上打补丁构建的方式安装的。这里使用二进制包的安装方式,相对比较灵活。
Shell> mkdir /usr/local/xtrabackup
Shell> tar -zxvf xtrabackup-1.6.tar.gz -C /usr/local/xtrabackup
Shell>cd /usr/local/xtrabackup/bin
Shell>ln -s innobackupex-1.5.1 innobackupex
配置环境变量:
Shell>export PATH=$PATH:/usr/local/xtrabackup/bin
修改mysql配置文件:
Shell> vi /etc/my.cnf
添加或修改:datadir = /usr/local/mysql/var(数据库目录)
特别注意:default_table_type = InnoDB (必须改,否则进行增量备份的时候不成功)
三.xtrabackup的备份与恢复使用
关于xtrabackup的参数选项,如下:
--defaults-file=
#默认配置文件的路径,如果补该参数,xtrabackup将从依次从以下位置查找配置文件:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/etc/my.cnf
~/.my.cnf
并读取配置文件中的[mysqld]和[xtrabackup]配置段
--defaults-extra-file=
#如果使用了该参数,在读取了全局配置文件之后,会再读取这里指定的配置文件
--target-dir=name
#备份文件的存放目录路径
--backup
#实施备份到target-dir
--prepare
#实施对备份文件迚行恢复前的准备(生成InnoDB log file)
--print-param
#打印备份或恢复时需要的参数
--use-memory=#
#该参数在prepare的时候使用,控制prepare时innodb实例使用的内存量
--suspend-at-end
#在target-dir目录下产生一个xtrabackup_suspended文件,将xtrabackup进程挂起,不停地将数据文件的变化同步到备份文件,直到用户手工删除xtrabackup_suspended文件
--throttle=
#每秒IO次数,限制backup时使用的I/O操作量,使备份对数据库正常业务的影响最小化--log-stream
该参数在backup的时候使用,将xtrabackup_logfile的内容输出到标准输出,使用该参数时会自动使用--suspend-at-end参数,innobackupex脚本的--stream模式会使用该参数。
--incremental-lsn=name
#增量备份时只拷贝LSN比该参数指定值新的ibd pages,前次备份到了哪个LSN可以看前次备份集的xtrabackup_checkpoints文件。
--incremental-basedir=name
#该参数在backup的时候使用,备份比该参数指定位置的备份集新的idb pages
--incremental-dir=name
#该参数在prepare的时候使用,指定prepare时产生的.delta文件和日志文件的存放路径
--tables=name
#在备份file-per-table类型的数据文件时使用,使用正则表达式指定需要备份的innodb 表
--datadir=name
#MySQL数据库的数据文件目录。
xtrabackup只备份InnoDB数据文件,表结构是不备份的,所以恢复的时候,你必须有对应表结构文件(.frm)
1.普通备份(全量备份)
shell>mkdir -p /backup/xtrabackup
shell>xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/backup/xtrabackup
全量备份模拟恢复:
需要执行两次xtrabackup --prepare
shell>xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/xtrabackup
shell>xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/xtrabackup
删除数据库目录下的数据文件:
Shell>rm -rf /usr/local/mysql/var/ib*
Shell>cp /backup/xtrabackup/ib* /usr/local/mysql/var
Shell>chown -R mysql.root /usr/local/mysql/var
重启测试是否恢复成功。
注意,xtrabackup只备份数据文件,并不备份数据表结构(.frm),所以使用xtrabackup恢复的时候,你必须有对应表结构文件(.frm)。
2. 普通备份(增量备份)
增量备份优点:
1、数据库太大没有足够的空间全量备份,作增量备份有效节省空间,且效率高。
2、支持热备份。备份过程不锁表,不受时间限制,不影响用户使用。
3、每日备份只产生少量数据,远程备份传输更方便。同时节省空间。
4、备份恢复基于文件操作,降低直接对数据库操作风险。
5、备份效率更高,恢复效率更高。
增量备份及模拟恢复步骤:
shell>mkdir -p /backup/xtrabackup/base
shell>mkdir -p /backup/xtrabackup/delta
(1)先做一次全量备份,因为后面的增量备份要以此为基础
shell>xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/backup/xtrabackup/base
shell>ls /backup/xtrabackup/base
ibdata1 xtrabackup_checkpoints xtrabackup_logfile
(2)以此全量备份为基础进行增量备份
Shell>xtrabackup --defaults=/etc/my.cnf --backup --target-dir=/backup/xtrabackup/delta/ --incremental-basedir=/backup/xtrabackup/base/
shell>ls /backup/xtrabackup/delta
ibdata1.delta xtrabackup_checkpoints xtrabackup_logfile
ps:在增量备份的目录下,数据文件都是以.delta结尾的。增量备份只备份上一次全量备份后被修改过的page,所以增量备份只暂用较少的空间。增量备份可以在增量备份的基础上增量。
(注意:/backup/xtrabackup/delta/是每次都需修改的。比如第二次增量就改成/backup/xtrabackup/delta2,当然可以写个脚本进行自动备份)
增量备份模拟恢复过程:
我们需要分别对全量、增量备份各做一次prepare操作。
shell>xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/xtrabackup/base/
shell>xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/xtrabackup/base/
--incremental-dir=/backup/xtrabackup/delta/
shell>xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/xtrabackup/base/
shell>rm -rf /usr/local/mysql/var/ib* #删除原来数据目录下的数据文件
Shell>cp /backup/xtrabackup/base/ib* /usr/local/mysql/var
Shell>chown -R mysql.root /usr/local/mysql/var
重启后测试是否成功。
再次提醒,xtrabackup只备份InnoDB数据文件,表结构是不备份的,所以恢复的时候,你必须有对应表结构文件(.frm)。
3.增量备份
对比innobackupex和xtrabackup我们可以看到,innobackupex操作起来更方便,但是innobackupex会有短暂的锁表(时间依赖于MyISAM大小)。xtrabackup备份还有另一个重要特性:增量备份。(未来的版本innobackupex也可能增长该功能)
比如表中目前有10条数据,先备份.备份到/usr/local/backup/1/目录 (完整备份)
shell> xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/1/
查看它的lsn点:
shell> cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0:0
to_lsn = 0:592411
再向表中插入数据,增量备份
shell>xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/2/ --incremental-basedir=/usr/local/backup/1/
把增量备份到2(1到2的增量备份)
查看它的lsn点:
shell>cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 0:592411
to_lsn = 0:908563
再向表中插入数据,增量备份
shell>xtrabackup --defauls-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/3/ --incremental-basedir=/usr/local/backup/1/
把增量备份到3(1到3的增量备份,2的备份已经包含在里面了,按照这种方式备份的话,最后的还原只需要还原完全备份和最后一份增量备份即可)
查看它的lsn点:
shell>cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 0:592411
to_lsn = 0:1507854
或则另一种增量备份方式:
shell>xtrabackup --defauls-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/3/ --incremental-basedir=/usr/local/backup/2/
把增量备份到3(2到3的增量备份,各个增量备份独立,按照这种方式备份的话,最后的还原需要还原完全备份和各个增量备份)
查看它的lsn点:
shell>cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 0:908563
to_lsn = 0:1507854
增量备份模拟恢复:
我们需要分别对全量、增量备份各做一次prepare操作。
①:基于(1到3的增量备份,2的备份已经包含在里面了,按照这种方式备份的话,最后的还原只需要还原完全备份和最后一份增量备份即可)
把第1次的完备恢复
shell>xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/backup/1/
继续把增量备份恢复上去
shell>xtrabackup --prepare --target-dir=/usr/local/backup/1/ --incremental-dir=/usr/local/backup/3/
shell>xtrabackup --prepare --target-dir=/usr/local/backup/1/
恢复完成
接着
cd /usr/local/backup/1/
cp 1/ib* /usr/local/mysql/var/
chown –R mysql.root /usr/local/mysql/var
/etc/init.d/mysql restart
②基于(2到3的增量备份,各个增量备份独立,按照这种方式备份的话,最后的还原需要还原完全备份和各个增量备份)
把第1次的完备恢复
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/backup/1/
继续把增量备份恢复上去
shell>xtrabackup --prepare --target-dir=/usr/local/backup/1/ --incremental-dir=/usr/local/backup/2/
继续把增量备份恢复上去
shell>xtrabackup --prepare --target-dir=/usr/local/backup/1/ --incremental-dir=/usr/local/backup/3/
恢复完成
接着
cd /usr/local/backup/1/
cp 1/ib* /usr/local/mysql/var/
chown –R mysql.root /usr/local/mysql/var
/etc/init.d/mysql restart
四、innobackupex备份与恢复
Usage:
innobackup [--sleep=MS] [--compress[=LEVEL]] [--include=REGEXP] [--user=NAME]
[--password=WORD] [--port=PORT] [--socket=SOCKET] [--no-timestamp]
[--ibbackup=IBBACKUP-BINARY] [--slave-info] [--stream=tar]
[--defaults-file=MY.CNF]
[--databases=LIST] [--remote-host=HOSTNAME] BACKUP-ROOT-DIR
innobackup --apply-log [--use-memory=MB] [--uncompress] [--defaults-file=MY.CNF]
[--ibbackup=IBBACKUP-BINARY] BACKUP-DIR
innobackup --copy-back [--defaults-file=MY.CNF] BACKUP-DIR
第一个命令行是热备份mysql数据库。
带有--apply-log选项的命令是准备在一个备份上启动mysql服务。
带有--copy-back选项的命令从备份目录拷贝数据,索引,日志到my.cnf文件里规定的初始位置。
参数注释:
--defaults-file=
#同xtrabackup的--defaults-file 参数;
--apply-log
#对xtrabackup的--prepare参数的封装;
--copy-back
#做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir;
--remote-host=HOSTNAME
#通过ssh将备份数据存储到进程服务器上;
--stream=[tar]
#备份文件输出格式,tar时使用tar4ibd,该文件可在XtarBackup binary文件中获得。如果备份时有指定--stream=tar,则tar4ibd文件所处目录一定要在$PATH中(因为使用的是tar4ibd去压缩,在XtraBackup的binary包中可获得该文件);
--tmpdir=DIRECTORY
#当有指定--remote-host or --stream时,事务日志临时存储的目录,默认采用MySQL配置文件中所指定的临时目录tmpdir;
--redo-only --apply-log组,
#强制备份日志时只redo,跳过rollback。这在做增量备份时非常必要;
--use-memory=
#该参数在prepare的时候使用,控制prepare时innodb实例使用的内存量;
--throttle=IO
#同xtrabackup的--throttle参数;
--sleep=
#是给ibbackup使用的,指定每备份1M数据,过程停止拷贝多少毫秒,也是为了在备份时尽量减小对正常业务的影响,具体可以查看ibbackup的手册;
--compress[=LEVEL]
#对备份数据迚行压缩,仅支持ibbackup,xtrabackup还没有实现;
--include=REGEXP
#对xtrabackup参数--tables的封装,也支持ibbackup;
--databases=LIST
#列出需要备份的databases,如果没有指定该参数,所有包含MyISAM和InnoDB表的database都会被备份 ;
--uncompress
#解压备份的数据文件,支持ibbackup,xtrabackup还没有实现该功能;
--slave-info
#备份从库, 加上--slave-info备份目录下会多生成一个xtrabackup_slave_info文件,这里会保存主日志文件以及偏移, 文件内容类似于:
CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=0
--socket=SOCKET
#MySQL服务器的socket文件位置
1、使用Innobachkupex备份(暂不支持增量备份)
(1)普通备份
shell> mkdir -p /backup/innobackupex/
Shell>innobackupex --defaults-file=/etc/my.cnf --user=root --password=root \
--databases='i_db' --no-lock /backup/ innobackupex / \
2> /tmp/innobackup.log
xtrabackup_51 Ver 1.5 Rev undefined for 5.1.52 unknown-linux-gnu (x86_64)
[01] Copying /usr/local/mysql/var/ibdata1
to /backup/innobackupex/2011-04-12_00-44-29/ibdata1
[01]...done
xtrabackup: The latest check point (for incremental): '0:32538662'
xtrabackup: Stopping log copying thread.
xtrabackup: Transaction log of lsn (0 32538662) to (0 32538662) was copied.
注释:
使用mysql的root用户备份,密码为root
备份文件的存放路径是/backup/innobackupex/,该目录下将创建以时间戳为名称的备份目录
--no-lock备份时不锁定表
--databases="i_db"用于指定要备份的数据库
2>/tmp/backup.log是将备份过程中的输出信息保存到/tmp/backup.log
注意:在使用innobackupex进行备份时,在配置文件my.cnf中要明确指定mysql的数据文件目录,否则会报错。
[mysqld]
datadir=/usr/local/mysql/var
(2)打包(tar)备份
Shell>innobackupex --defaults-file=/etc/my.cnf --user=root --password=root \
--databases='i_db' --no-lock --stream=tar /backup/innobackupex/ \
2> /tmp/innobackup.log 1> /backup/innobackupex/i_aura.tar
这种备份时间会比较长,主要是执行打包操作。解包过程,需要使用tar ixvf解压对应的文件后,注意参数-i必须加入。
模拟恢复过程:
Shell> mysql –uroot –proot –e’drop database i_db’
Shell>mysqladmin –uroot –proot shutdown
Shell>rm –rf /usr/local/mysql/var/ib *
shell >cd /backup/innobackupex/
shell >tar ixvf i_aura.tar
shell>ls
backup-my.cnf i_aura.tar ibdata1 i_db stderr stdout xtrabackup_binary xtrabackup_checkpoints xtrabackup_logfile
准备还原
shell>innobackupex-1.5.1 --defaults-file=/etc/my.cnf --no-lock --apply-log /data/back_data/
拷贝还原数据:
shell>innobackupex --defaults-file=/etc/my.cnf –no-lock --copy-back /backup/innobackupex/
Shell>cd /usr/local/mysql/var
Shell>chown -R mysql:root . #一定要修改权限
shell> mysqld_safe –user=mysql &
检查删除的数据库,如果恢复则证明该恢复过程无误。
(3)压缩(tar)备份
Shell>innobackupex --defaults-file=/etc/my.cnf --user=root --password=root \
--databases=”i_db test”--no-lock --stream=tar /backup/innobackupex/ \
2> /tmp/innobackup.log | gzip > /backup/innobackupex/i_aura.tar
这种备份时间会比较长,主要是执行压缩操作。
解压缩过程,需要使用tar izxvf 解压对应的文件后,注意参数-i必须加入。
还原:
使用tar -izxvf解压对应的文件后,操作完全同普通备份。
模拟恢复过程:
Shell> mysql –uroot –proot –e’drop database i_db’
Shell>mysqladmin –uroot –proot shutdown
Shell>rm –rf /usr/local/mysql/var/ibdata1 ib_logfile*
shell >cd /backup/innobackupex/
shell >tar ixvf i_aura.tar
shell>ls
backup-my.cnf i_aura.tar.gz ibdata1 i_db stderr stdout xtrabackup_binary xtrabackup_checkpoints xtrabackup_logfile
准备还原:
shell> innobackupex --defaults-file=/etc/my.cnf –no-lock --apply-log /backup/innobackupex/……
拷贝还原数据:
shell> innobackupex --defaults-file=/etc/my.cnf –no-lock --copy-back /backup/innobackupex/
Shell>cd /usr/local/mysql/var
Shell>chown -R mysql:root .
shell> mysqld_safe -user=mysql &
检查删除的数据库,如果恢复则证明该恢复过程无误。
(4)整库备份及恢复。
备份:
Shell>innobackupex --user=root --password=root --defaults-file=/etc/my.cnf \
/backup/innobackupex/
检查备份的文件:
Shell>ls /backup/innobackupex/
2011-04-12_09-20-13
模拟恢复:
首先停掉数据库,然后删除数据库目录下的所有数据库文件。
Shell> mysql –uroot –proot shutdown
Shell>rm -rf /usr/local/mysql/var/*
首先写日志文件,然后恢复,如下。(注:2011-04-12_09-20-13是自动生成的以备份时间命名的文件夹,恢复时根据情况进行选择)
Shell>innobackupex --apply-log --defaults-file=/etc/my.cnf \
/backup/innobackupex/2011-04-12_09-20-13
Shell>innobackupex --copy-back --defaults-file=/etc/my.cnf \
/backup/innobackupex/2011-04-12_09-20-13
使用cd或者ls 命令看看你的数据库目录下是不是有文件了?
修改数据库文件权限,否则无法启动。(这步我是cd到原数据库目录下进行的)
Shell>chown -R mysql:mysql .
重启数据库,测试恢复是否成功。
五.备份到远程服务器
(1)innobackupex远程备份方法一
当前数据库所在机器IP:192.168.1.131,现在要备份到192.168.1.132的/data目录下。
Shell>innobackupex --user=root --password=root --defaults=/etc/my.cnf --stream=tar /data | ssh root@192.168.1.132 cat " >" /data/backup.tar
接着需要输入远程服务器密码......然后就开始备份了,备份完成后登陆到远程服务器看看是不是有了呢?
目前使用xtrabackup增量备份是不支持到远程的。如何解决呢?可以使用nfs 网络文件系统把远程服务器磁盘挂载到本地。
(2)innobackupex远程备份方法二
#在本地后台启动1234监听,以便接受备份文件
nc -d -l 1234 > /data/$A/20100118000001.tar &
#ssh到服务器A执行备份,并将备份包推送到备份机B上。同时记录下log。
ssh $A ‘innobackupex-1.5.1 --stream=tar --include=’renren.*’ --throttle=500 --socket=/data/mysql/backup/mysql.sock --defaults-file=/data/dbbackup/my.cnf --user=root --password=xxxxxxx --slave-info /data/dbbackup | nc $B 1234′ /data/xtrabackup.log 2>&1
参数解释:
--stream=tar : 告诉xtrabackup,备份需要以tar的文件流方式输出。
--include=’renren.*’:备份包含的库表,如例:意思是要备份renren库中所有的表。如果需要全备份,则省略这个参数;如果需 要备份renren库下的2个表:tableA & tableB,则写成:--include=’renren.tableA|renren.tableB’;再如果renren库下只有2个前缀是 table的表,你还可以写成:--include=’renren.table*’。
--throttle=500:xtrabackup在备份过程中,IO操作比较多,因此需要限定一下IO操作。以免服务器压力过大,不过好像作用不太明显,也不知道是不是设置的还是过大。待测…
--socket=/data/mysql/backup/mysql.sock:指定mysql.sock所在位置,以便备份进程登录mysql.
--defaults-file=/data/dbbackup/my.cnf :如果您的/etc/my.cnf中没有使用如[mysqld3306]的片段启动mysql,则不需要这行参数,如果使用了上面的片段,那么 xtrabackup是无法解析/etc/my.cnf文件的(严格上来说是会解析错误),所以,我们需要手工完成一个my.cnf文件,文件片段如下, 只需要指定6个参数即可让xtrabackup正常工作,各参数意思请参考mysql文档:
[mysqld]
datadir=/data/var
innodb_data_home_dir = /data/ibdata
innodb_data_file_path=ibdata1:10M;ibdata2:10M:autoextend
innodb_log_group_home_dir = /data/iblogs
innodb_log_files_in_group = 2
innodb_log_file_size = 1G

Windows系统上的任务栏是全球所有Windows用户最常用的功能。您可以轻松地将您最喜欢和最常用的应用程序固定在任务栏中,自定义其大小和颜色。在本文中,我们将讨论如何备份任务栏上的固定项目以及如何根据需要恢复它们。如何在Windows11中备份和恢复任务栏上的固定项目有两种方法可以备份和恢复固定的项目。有一种手动方法,您必须在安全文件夹中创建固定项目的备份及其关联的注册表文件。除此之外,还有另一种自动方法可用于自动化备份固定项目的整个过程。手动备份这个过程有两个不同的部分。第1步-

如何在麒麟操作系统上进行系统备份和恢复?麒麟操作系统是中国自主研发的开源操作系统,广泛应用于各种场景中。在使用麒麟操作系统时,系统备份和恢复是非常重要的一项任务。备份系统可以防止因故障或误操作导致数据丢失,而系统恢复则可以在系统崩溃时快速恢复正常功能。本文将详细介绍如何在麒麟操作系统上进行系统备份和恢复,并附上相关代码示例。备份系统为了备份整个系统,我们可以

微软6月24号正式公布了win11系统,可以看到用户界面、开始菜单等和Windows10X中发现的非常相似。有的朋友在使用预览版的时候发现用的不习惯,想要改win10系统开使用,那么我们要如何操作呢,下面我们就来看看win11改win10系统教程,一起来学习一下吧。1、第一步是从Windows11打开新设置。在这里,您需要转到图像中显示的系统设置。2、在系统设置下,选择“恢复”选项。在这里,您将能够看到“以前版本的窗口”选项。您还可以在它旁边看到一个“返回”按钮,单击此按钮。3、您可以指定要返回

随着互联网技术和大数据时代的到来,越来越多的企业开始依赖于数据来决策和推动业务发展。而数据备份和恢复作为数据管理的重要环节,其重要性不言而喻。在Linux系统中,数据备份和恢复也是必不可少的。下面将详细介绍Linux系统中的数据备份和恢复方法。一、备份tar命令tar命令是Linux系统中最基本的备份命令,可以将文件或目录打包成一个文件。它的基本语法如下:t

如何在麒麟操作系统上进行系统的备份和还原?麒麟操作系统是一款基于Linux的开源操作系统,因其稳定性和安全性而受到广泛关注和应用。在日常使用中,系统备份和还原是非常重要的操作,可以保护系统数据免受意外损坏或丢失。下面将介绍在麒麟操作系统上如何进行系统备份和还原的方法。一、系统备份在麒麟操作系统中,系统备份可以使用rsync命令来完成。rsync是一款用于数据

MySQL和Oracle:对于备份和恢复的速度和可靠性比较导言:MySQL和Oracle是两个常见的关系型数据库管理系统(RDBMS),它们在数据备份和恢复方面有着不同的机制和性能表现。本文将重点比较MySQL和Oracle在备份和恢复方面的速度和可靠性,并附上一些代码示例,以便更好地理解它们之间的差异和优劣势。备份性能比较:在备份方面,MySQL和Orac

如何在麒麟操作系统上进行文件管理和备份?麒麟操作系统是一款基于Linux的操作系统,广泛应用于中国政府和教育领域。在麒麟操作系统上进行文件管理和备份是一项重要的任务,它能够帮助我们更好地管理和维护重要的文件和数据。本文将为您介绍如何在麒麟操作系统上进行文件管理和备份,并附带代码示例。一、文件管理创建文件夹:在麒麟操作系统中,我们可以使用mkdir命令来创建文

win7如何备份系统和恢复系统的数据?很多小伙伴在使用电脑的时候,又遇到过不得不重装系统的情况,这个时候系统中的数据也会随之丢失,其实我们在重装系统前备份系统数数据,就可以在重装之后恢复系统的数据了,下面就由小编为大家带来win7备份系统和恢复系统方法。win7备份系统和恢复系统方法一、备份win7系统1、首先点击开始菜单,打开控制面板。2、在【系统和安全】选项里,点击【备份您的计算机】。3、点击左上角的【创建系统映像】。4、下拉框里,选择要备份的位置,比如D盘,点击【下一步】。5、确认备份设置


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Chinese version
Chinese version, very easy to use

SublimeText3 Mac version
God-level code editing software (SublimeText3)

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver CS6
Visual web development tools

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software
