mysql运维-备份恢复之percona-xtrabackup

mysql的物理备份分两种:
    冷备:中止服务,拷贝data目录,而后重启服务,完成。若是须要恢复,中止服务,删掉当前在用data,把以前拷贝的data复制过来,再开启服务,就OK了!由于冷备须要停掉服务才能实施,顾真正生产中基本不用。
    热备:相对于冷备而言,热备的意思是在不影响服务的状况下,作数据的物理备份,经常使用工具XtraBackup。python

安装篇:mysql

1>下载:
https://www.percona.com/downloads/XtraBackup/LATEST/
二进制安装包:
percona-xtrabackup-2.2.9-5067-Linux-x86_64.tar.gz    
2>解压:
>>tar -zxvf  percona-xtrabackup-2.2.9-5067-Linux-x86_64.tar.gz
3>配置环境变量:
>>vim /etc/profile
export PATH=$PATH:/usr/local/percona-xtrabackup-2.2.9-Linux-x86_64/bin  #你本身放的位置sql

!!!以后就能够直接使用了数据库

赋权限篇:vim

为备份开通专用的用户和权限服务器

mysql>create user beifen@'localhost' identified by '123123';                                #建立用户
mysql>grant reload,process,lock tables,replication client on *.* to beifen@'localhost';     #赋予权限

建立备份文件存储目录
mkdir /beifen

 参数篇:app

xtrabackup包内有许多工具,这里咱们只提咱们用到的innobackupex!

--apply-log
        应用 BACKUP-DIR 中的 xtrabackup_logfile事务日志文件。
        通常状况下,在备份完成后,数据尚且不能用于恢复操做,由于备份的数据中可能会包含还没有提交的事务或已经提交但还没有 
        同步至数据文件中的事务。
        所以,此时数据文件仍处于不一致状态。“准备”的主要做用正是经过回滚未提交的事务及同步已经提交的事务至数据文件使
        得数据文件处于一致性状态。
    --copy-back
        从备份中复制之前生成的备份中的全部文件目录到它们原来的位置。
        拷贝先前备份全部文件到它们的原始路径。但原路径下不能有任何文件或目录,
        除非指定 --force-non-empty-directories 选项。
    --move-back
        从备份中移动先前制做的备份中的全部文件目录到实际的datadir位置。 谨慎使用,由于它删除备份文件。
    --databases=LIST
        指定备份的数据库和表,格式为:--database="db1[.tb1] db2[.tb2]"多个库之间以空格隔开,
        若是此选项不被指定,将会备份全部的数据库。
    --defaults-file=[MY.CNF]
        指定MySQL配置文件:只能从给定的文件中读取默认选项。且必须做为命令行上的第一个选项;
        必须是一个真实的文件,它不能是一个符号连接。
    --host=HOST
        该选项指定链接到数据库服务器所须要的host,接受字符串参数
    --incremental
        这个选项告诉 xtrabackup 建立一个增量备份,而不是彻底备份。
        它传递到 xtrabackup 子进程。当指定这个选项,能够设置 --incremental-lsn 或 --incremental-basedir。
        若是这2个选项都没有被指定,--incremental-basedir 传递给 xtrabackup 默认值,
        默认值为:基础备份目录的第一个时间戳备份目录。
    --incremental-basedir=DIRECTORY
        该选项接受一个字符串参数,该参数指定做为增量备份的基本数据集的完整备份目录。它与 --incremental 一块儿使用。
    --incremental-dir=DIRECTORY
        该选项接受一个字符串参数,该参数指定了增量备份将与完整备份相结合的目录,以便进行新的完整备份。
        它与 --incremental 选项一块儿使用。
    --parallel=NUMBER-OF-THREADS
        此选项接受一个整数参数,指定xtrabackup子进程应用于同时备份文件的线程数。
        请注意,此选项仅适用于文件级别,也就是说,若是您有多个.ibd文件,则它们将被并行复制; 
        若是您的表一块儿存储在一个表空间文件中,它将不起做用。
    --user=NAME
        该选项指定链接到数据库服务器所须要的user,接受字符串参数
    --password=WORD
        该选项指定链接到数据库服务器所须要的password,接受字符串参数
    --port=PORT
        该选项指定链接到数据库服务器所须要的port,接受字符串参数
    --redo-only
        在“准备基本完整备份” 和 “合并全部的增量备份(除了最后一个增备)”时使用此选项。
        它直接传递给xtrabackup的 xtrabackup --apply-log-only 选项,
        使xtrabackup跳过"undo"(回滚)阶段,只作"redo"(重作)操做。
        若是后面还有增量备份应用到这个全备,这是必要的。
    --rsync
        此选项可优化本地文件(非InnoDB)的传输。rsync工具一次性拷贝全部非InnoDB文件,
        而不是为每一个文件单首创建cp,在备份恢复不少数据库和表时很是高效。
        此选项不能和 --stream 一块儿使用。
    --socket=SOCKET
        此选项指定使用UNIX域套接字链接到本地数据库服务器时要使用的套接字。 该选项接受字符串参数。
    --use-memory=B
        此选项接受一个字符串参数,该参数指定xtrabackup在准备备份时用于崩溃恢复的内存量(以字节为单位)。 
        支持倍数提供单位(例如1MB,1GB)。 它仅与选项--apply-log一块儿使用。 
        它直接传递给xtrabackup的--use-memory选项。

2) xtrabackup 参数选项
--apply-log-only
        这个选项使在准备备份(prepare)时,只执行重作(redo)阶段,这对于增量备份很是重要。

使用篇:socket

##彻底备份

innobackupex --defaults-file=/etc/my.cnf --user=beifen --password=123123 --socket=/tmp/mysql.sock /beifen
#能够看到整个备份过程:链接数据库,开始拷贝redo log,拷贝innodb表文件,锁表、拷贝非innodb表文件,中止拷贝redo log,解锁。

##全备恢复
关闭数据库并删除数据文件

(1)准备(prepare)一个彻底备份: --apply-log ( /data/pxb/2017-04-24_02-46-11/ 为备份目录,执行以后 xtrabackup_checkpoints 文件中的 backup_type = full-prepared )

innobackupex --apply-log /data/pxb/2017-04-24_02-46-11/
(2)执行恢复操做:
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/pxb/2017-04-24_02-46-11/

(3)更改 data/ 目录权限并启动mysql:
chown -R mysql.mysql data/
service mysqld start
##增量备份

--完成一次全备

innobackupex --defaults-file=/etc/my.cnf --user=beifen --password=123456 --socket=/.../mysql.sock /beifen

--以全备为基准,进行增量备份
innobackupex --defaults-file=/etc/my.cnf --user=beifen --password=123456 --socket=/.../mysql.sock --incremental /beifen/inc --incremental-basedir=/beifen/2017-04-24_02-46-11/ --parallel=2

--以最近一次增量备份为基准
innobackupex --defaults-file=/etc/my.cnf --user=beifen --password=123456 --socket=/.../mysql.sock --incremental /beifen/inc --incremental-basedir=/beifen/inc/2017-04-28_01-09-40/ --parallel=2


恢复(分步骤)

1>准备一个全备
innobackupex --apply-log --redo-only /beifen/2017-04-24_02-46-11/

2>将增量1应用到彻底备份
innobackupex --apply-log --redo-only /beifen/2017-04-24_02-46-11/ --incremental-dir=/beifen/inc/2017-04-28_01-09-40/

3>将增量2应用到彻底备份,注意不加 --redo-only 参数了(最后一次增量备份应用到全备时,不用加--redo-only)
innobackupex --apply-log /beifen/2017-04-24_02-46-11/ --incremental-dir=/beifen/inc/2017-04-28_01-27-46/

4>对以上准备好的备份执行恢复操做
innobackupex --apply-log /beifen/2017-04-24_02-46-11/

备份目下文件说明篇:ide

backup-my.cnf:
            备份命令用到的配置选项信息
ib_buffer_pool:
            buffer pool 中的热数据,当设置 innodb_buffer_pool_dump_at_shutdown=1 ,在关闭 MySQL 时,会把内存中的热数据保存在磁盘里 ib_buffer_pool 文件中,位于数据目录下。
ibdata1:
            备份的共享表空间文件;
xtrabackup_binlog_info:
            mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置;
xtrabackup_checkpoints:
            备份类型(如彻底或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;
xtrabackup_info:
            记录备份的基本信息,uuid、备份命令、备份时间、binlog、LSN、以及其余加密压缩等信息。
xtrabackup_logfile:
            备份的重作日志文件。工具

相关文章
相关标签/搜索