备份恢复生机与xtrabackup备份,2010及更加高版本数据库恢复生机措施之日志尾部备份

 

 
      日常看看有人误删数据,恐怕误操作,尤其是update和delete的时候未有加where,然后就喊爹喊娘了。人非圣贤孰能无过,做错能够知道,但无法纵容,这几个未来再说,今后先来消除难点。

读书目录

  • 新岁贺词
  • 壹.一备份的从头到尾的经过
  • 1.2备份的秘籍
  • 一.三mysqldump备份介绍
  • 一.四【模拟】增量苏醒公司案例
  • 一.5mysql数据库实际生产惨案
  • 一.陆备份工具的取舍
  • 一.七xtrabackup备份软件
  • 一.8xtrabackup奉行操作
  • 一.玖 参考文献

归来顶部

SQL
Server中误删除数据的上升自然不是件难事,从作业日志恢复生机即可。不过,那些复苏要求有七个前提条件:

在付出照旧测试意况的数据库中,平时会意识有付出依然测试人士误删除表也许数额的情况,
对此开辟照旧测试库,一般都并未有配备定期的备份任务去备份数据库,
1方面是出于存储财富有限,不太恐怕给支付依然测试遭受筹划大量的贮存空间,
二是须要性不是很强,开荒依旧测试库的数据库对象变化太多,通过还原备份的不二秘籍又有相当的大大概冲掉其近来新建的数据库对象。
但是只可以面对的难题正是个别人在试行update或许delete操作的时候“忘了加where条件”那种业务的发生。

       
遇到那种情形,一般都以不曾做备份,不然也不会来咨询了。首先要门可罗雀,不然会有越来越大的磨难。直到你放弃。

新禧贺词

  20一七年将在过去,新春的钟声将在敲响。在那辞旧迎新的美好时刻,作者向全国各族人民,向Hong Kong尤其行政区同胞、华雷斯尤其行政区同胞,向台胞和外国侨居国外的同胞,向办事在一线的运转为工人身份程师们,向为开源职业做出奉献的爱人们,向世界各国各地方的爱侣们,致以新年的祝福!

  前几日是2017的末段壹天,在如此二个特有的生活里,希望我们都能一帆风顺,欢畅常在,希望在二〇一八年里都能具备成就,创立差别的价值。

  让大家满怀信心和期望,一同应接大年的钟声!

  多谢大家。

重回顶部

1. 足足有1个误删除以前的数据库完全备份。

那是支付仍然测试情形的2个痛点,相信大多数人都经历过,
当面对开拓职员过来说“作者刚才delete表的时候忘了加where条件,结果全删了,能或无法还原一下?”那几个主题素材的时候,
其实有点狼狈,只可以告诉不可能恢复,sqlserver不援救闪回成效,又因为测试数据库未有备份,确实一点都不大概。
那会儿,开采人士往往会报以鄙视+无奈的眼神,作为冒牌DBA,确实难以相助。

消除方法:

1.一 备份的来头

  备份是数量安全的末段壹道防线,对于别的数据丢失的场景,备份就算不确定能回复百分百的多少(取决于备份周期),但至少能将损失降到最低。衡量备份恢复生机有三个基本点的目标:苏醒点目的(RPO)和恢复生机时间目标(RTO),前者首要关心能还原到怎么着水平,而后人则首要关注回复须求多久。

二. 数据库的复苏格局(Recovery mode)是“完全(Full)”。

为了切实地消除这几个标题,同时又能够以细小的代价来贯彻,能够按时给测试库打快速照相的那种轻量级的形式来化解误删除数据的主题素材。
壹是快照占用的空间并不大,
2是足以由此轻量级的法门去苏醒单个表的多寡
花了点时间,写了个全实例下用户数据库的变动快速照相操作,能够布署2个定期任务来落成定期对数据库生成快速照相的法子来做二个轻量级的备份。
从而就能够一本万利地减轻实行update或许delete操作的时候“忘了加where条件”误删数据依然表的动静。

     
 对于那类难点,首如若找回误操作在此以前的多少,在二〇〇八事先,有个很知名的工具Log
Exploer,据书上说还挺好用的,这几个网络海南大学学把课程,这里就不多说了。可是唯一遗憾的是,不辅助二零零六及越来越高版本,那时除了别的第3方工具,那么最常用的正是本文提到的不二等秘书技——日志尾巴部分备份。本文实验碰到二零零六Odyssey二,对于二零零六会同以上版本能够采取这一个点子,其实200伍也足以,贰仟很少用,没试过,只是2010事先能够行使Log
Exploer,所以就没须要用那种方法。

1.1.一 备份的目录

  做患难恢复:对毁坏的数量开始展览还原和回复

  需要变动:因急需变动而须求把数量恢复生机到改造原先

  测试:测试新功用是还是不是可用

本着那七个前提条件,会有三种情况:

 

     
上面图像和文字并茂疏解操作方法,至于原理,不属于本文范围,而且笔者深信真蒙受误操作的时候,猜度没人会看规律了。

一.一.2 备份中需求思考的问题

  能够容忍丢失多久的数据;

  恢复生机数据要在多短期内完;

  复苏的时候是否须求不断提供劳动;

  复苏的对象,是整套库,几个表,依旧单个库,单个表。

情况一、一经这两个前提条件都留存,通过SQL语句只需三步就能够苏醒(参照文章),不可能借助第二方工具。

经过定期对开荒情状的数据库打快速照相,壹旦出现误删数据的意况,可以依附多年来的快速照相中的数据恢复生机误删的数目,同时能够依据实际处境,删除创立的已过期的快速照相。

步骤:

一.1.三 备份的花色

热备份:

  这么些动态备份在读取或涂改数据的历程中展开,很少刹车或然不刹车传输或管理多少的成效。使用热备份时,系统仍可供读取和改换数据的操作访问。

冷备份:

备份恢复生机与xtrabackup备份,2010及更加高版本数据库恢复生机措施之日志尾部备份。  那一个备份在用户不能够访问数据时张开,由此不能够读取或修改数据。那一个脱机备份会阻止施行其它利用数据的移位。这几个品种的备份不会困扰经常运作的种类的习性。不过,对于某个应用程序,会不可能承受必须在一段较长的岁月里锁定或完全挡住用户访问数据。

温备份:

  那些备份在读取数据时举行,但在大大多动静下,在进展备份时无法改改数据小编。那种中途备份类型的独到之处是无须完全锁定最后用户。可是,其不足之处在于无法在张开备份时修改数据集,那可能使那体系型的备份不适用于某个应用程序。在备份进度中不恐怕修改数据可能发生质量难题。

回到顶部

  a) 备份当前数据库的职业日志:BACKUP LOG [数据库名] TO disk=
N’备份文件名’ WITH NORECOVEEnclaveY

 

(一)、检查数据库的复苏方式,如图:

1.二 备份的点子

  b) 复苏3个误删除以前的完全备份:RESTORE DATABASE [多少库名] FROM
DISK = N’完全备份文件名’ WITH NORECOVEHummerH贰Y,  REPLACE

简言之测试了1晃,应该能够到达目标,未有做完全的测试,原理很简短,双层while循环,就是通过轮回每八个数据库对应的大要文件,动态变化二个成立数据库快速照相的言辞
此种格局仅适应于开辟仍旧测试遇到数据库的轻量级备份,不适应于生产景况。

997755.com澳门葡京 1

1.2.1 冷备份

  最轻松易行的备份方式就是,关闭MySQL服务器,然后将data目录上面包车型地铁享有文件进行拷贝保存,需求还原时,则将引得拷贝到须要复苏的机器就能够。那种艺术真的方便,但是在生产条件中挑凉州没什么意义。因为具备的机器都以要提供劳动的,纵然是Slave有时候也亟需提供只读服务,所以关闭MySQL停服备份是不具体的。与冷备份绝对应的八个概念是热备份,所谓热备份是在不影响MySQL对外服务的场合下,进行备份。

         冷备份及截至职业展开备份。

  c) 将数据库苏醒至误删除从前的日子点:RESTORE LOG [数据库] FROM 
DISK = N’第三步的日志备份文件名’ WITH   STOPAT = N’误删除在此之前的小运点’ ,
RECOVE中华VY

--生成全实例下的数据库快照
create proc [dbo].[CreateSnapshotForBackUp]
(
    --数据库快照文件位置
    @p_FilePath varchar(500),
    --保留最近N个小时之内创建的快照,单位为小时
    @p_RetainTime int
)
as
begin
    set nocount on;

    declare @strSql            varchar(2000)
    declare @strDatetime    varchar(20)
    declare @strDBFileName    varchar(200)

    set @strDatetime =  replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')


    if object_id('tempdb..#databaseName') is not null
    begin 
        drop table #databaseName
    end

    select name 
    into #databaseName  
    from  sys.databases where database_id>6 and source_database_id is null 


    declare @databaseName varchar(200);
    declare @databaseCnt int;
    select @databaseCnt = count(1) from #databaseName;

    while @databaseCnt>0
    begin

        select top 1 @databaseName = name from #databaseName

        if object_id('tempdb..#dbFiles') is not null
        begin 
            drop table #dbFiles
        end

        select concat('(','name = ' , name , ',FileName = ''',@p_FilePath,name,'_',@strDatetime,'.ss'' )' ) as strFileName
        into #dbFiles
        from sys.sysaltfiles 
        where  dbid=db_id(@databaseName) and status = 2

        DECLARE @dbFileCnt int = 0;
        SELECT @dbFileCnt = COUNT(1) FROM  #dbFiles
        while @dbFileCnt>0
        begin
            select top 1 @strDBFileName = strFileName from #dbFiles;
            set @strSql=CONCAT(@strSql,',',@strDBFileName,char(10));
            delete top (1) from #dbFiles;
            select @dbFileCnt = count(1) from #dbFiles;
        end

        set @strSql=stuff(@strSql,1,1,'')

        set @strSql = CONCAT('create database ' ,@databaseName,'_',@strDatetime, char(10),
                             ' on ' , char(10), @strSql
                             ,'as snapshot of ' , @databaseName)


        begin try
            print @strSql
            exec(@strSql)
            select @databaseName+'snapshot create successful:'+@databaseName+@strDatetime
            set @strSql = ''
        end try
        begin catch
            select 'snapshot create fail'
            throw
        end catch

        delete top (1) from #databaseName
        select @databaseCnt = count(1)  from #databaseName
    end


    --删除过期的数据库快照
    begin try
        if object_id('tempdb..#snapshotname') is not null
            drop table #snapshotname

        select name 
        into #snapshotname 
        from sys.databases 
        where source_database_id is not null and create_date<dateadd(hh,-@p_RetainTime,getdate());

        declare @cnt int = 0;
        declare @strDBName varchar(200) = ''
        declare @strDropDatabase varchar(max) =  ''
        select @cnt = count(1) from #snapshotname
        while @cnt>0
        begin
            select top 1 @strDBName = name from #snapshotname;
            set @strDropDatabase = 'drop database ' +@strDBName;
            print @strDropDatabase
            exec (@strDropDatabase);
            delete top (1) from #snapshotname;
            select @cnt = count(1) from #snapshotname
        end

    end try
    begin catch
        select N'snapshot delete fail'
        throw
    end catch

end

997755.com澳门葡京 2

1.二.二 快速照相备份

  首先要介绍的热备份是快照备份,快速照相备份是指通过文件系统援助的快速照相作用对数据库举办备份。备份的规律是将有所的数据库文件放在同等分区中,然后对该分区实施快速照相职业,对于Linux来讲,需求通过LVM(Logical
Volumn
Manager)来完成。LVM使用写时复制(copy-on-write)本领来创立快速照相,比如,对全部卷的某些瞬间的逻辑副本,类似于数据库中的innodb存储引擎的MVCC,只然而LVM的快速照相在文件系统层面,而MVCC在数据库层面,而且仅辅助innodb存款和储蓄引擎。

  LVM有1个快速照相预留区域,如若原始卷数据有浮动时,LVM保证在其它改动写入在此之前,会复制受影响块到快速照相预留区域。简单的讲,快速照相区域内保留了快速照相点开头时的等同的全部old数据。对于立异很少的数据库,快速照相也会要命小。

  对于MySQL来讲,为了利用快速照相备份,须要将数据文件,日志文件都位于2个逻辑卷中,然后对该卷快速照相备份就可以。由于快速照相备份,只好本地,由此,假若本地的磁盘损坏,则快速照相也就磨损了。快照备份更偏向于对误操作防止,能够将数据库神速复原到快速照相发生的时间点,然后结合贰进制日志能够恢复生机到内定的时间点。基本原理如下图:

 

情况二、假使第3个前提条件不设有,第1个前提条件存在,需求信赖第一方工具。

 

要么选拔脚本检查:

一.二.三 逻辑备份(文本表示:SQL 语句)

  冷备份和快速照相备份由于其弊端在生育情状中很少使用,使用越多是MySQL自带的逻辑备份和大要备份工具,这节主要讲逻辑备份,MySQL官方提供了Mysqldump逻辑备份工具,即使1度够用好,但存在单线程备份慢的标题。在社区提供了更能够的逻辑备份工具mydumper,它的优势主要呈现在102线程备份,备份速度更加快。

情况三、借使第一个前提条件不设有,不可能苏醒。所以,一定要将数据库苏醒情势设置为“完全(Full)”。

 

SELECT recovery_model,recovery_model_desc 
FROM sys.databases 
WHERE name ='

一.二.四 别的常用的备份格局

  物理备份(数据文件的2进制副本)

全量备份概念

    全量数据正是数据库中具备的数额(或某一个库的全套多少);

    全量备份就是把数据库中持有的数量开始展览备份。

    mysqldump会获得3个每日的1致性数据.

增量备份(刷新2进制日志)

    增量数据就是指上一回全量备份数据之后到下一回全备从前数据库所更新的数码

    对于mysqldump,binlog正是增量数据.

本人后日面临的是第3种景况,须要找第三方工具。

997755.com澳门葡京 3

结果如下:

一.贰.伍 备份工具的介绍

  一、mysqldump: mysql原生自带很好用的逻辑备份工具

  2、mysqlbinlog: 实现binlog备份的原生态命令

  三、xtrabackup: precona公司开荒的属性非常高的物理备份工具

重回顶部

开始找的是Log Explorer for SQL Server,不帮忙SQL Server 200玖。

 

997755.com澳门葡京 4

一.3 mysqldump备份介绍

备份的主旨流程如下

1.调用FTWRL(flush tables with read lock),全局禁止读写
2.开启快照读,获取此时的快照(仅对innodb表起作用)
3.备份非innodb表数据(*.frm,*.myi,*.myd等)
4.非innodb表备份完毕后,释放FTWRL锁
5.逐一备份innodb表数据
6.备份完成。

  整个进程,能够参见作者共事的一张图,但他的那张图只考虑innodb表的备份情况,实际上在unlock
tables推行完结在此以前,非innodb表已经备份完结,后边的t一,t二和t三实质都以innodb表,而且5.6的mysqldump利用保存点机制,每备份完2个表就将二个表上的MDL锁释放,幸免对一张表锁越来越长的年华。

新生找的是SQL Log
Rescue,也不帮忙SQL
Server 二零零六。

实话讲,已经完全忘记了T-SQL中游标的语法了,通过while循环权且表的秘技,也得以直达游标循环的功力,并且那种语法逻辑结构上更清晰简便,根本不会忘记,呵呵。

       
确认保障数据库的恢复生机形式最起码不可能为【不难】。至于怎么修改成完全情势,笔者以为这么些本该没须求多说了。 

壹.三.1 mysqldump备份流程

 

随后找到的是SysTools SQL
Recovery,援助SQL Server
2010,但需求购置,德姆o版并从未数据恢复生机功能。

 

     
 纪事,对于别的重大条件,不唯有是客户标准碰到(俗称生产条件),都强烈提出使用【完整苏醒格局】,固然对于别的三种(大体积日志(BULK_LOGGED)、轻巧(SIMPLE))来讲,完整恢复生机格局爆发的日志会大,可是在出现难题的时候,就能感到那几个都不算什么了。并且自个儿也想不到任何理由对于专门的学问境况不行使完全苏醒情势。只要管理妥当,完整形复原苏格局的日志也不会太变态。 

1.三.二 常用的备份参数

 

参数

参数表明

-A

备份全库

-B

备某二个数据库下的全体表

-R, –routines

备份存款和储蓄进度和函数数据

–triggers

备份触发器数据

–master-data={1|2}

告知您备份后随时的binlog地点

要是等于1,则将其打字与印刷为CHANGE
MASTEPAJERO命令; 假使等于二,那么该命令将以注释符号为前缀。

–single-transaction

对innodb引擎实行热备

-F, –flush-logs

刷新binlog日志

-x, –lock-all-tables 

锁定全体数据库的全部表。那是经过在整整转储时期动用全局读锁来促成的。

-l, –lock-tables

锁定全部表以供读取

-d 

仅表结构

-t 

仅数据

–compact

调整和减弱无用数据输出(调节和测试) 

三个完全的备份语句:

  innodb引擎的备份命令如下:

mysqldump -A -R --triggers --master-data=2 --single-transaction |gzip >/opt/all_$(date +%F).sql.gz 

  适合多引擎混合(举个例子:myisam与innodb混合)的备份命令如下:

 

mysqldump -A -R --triggers --master-data=2 |gzip   >/opt/all_$(date +%F).sql.gz  

最终在officerecovery.com上找到Recovery for SQL
Server
,尽管也是商业软件,须求购置,但Demo版能够过来数据,只要数据库文件不超过贰四Gb。幸而朋友的数据库文件相当小,用它成功了误删除数据的还原。

(2)、这里实在包蕴其它一步,曾经做过至少三遍的1体化备份。因为具备类别的备份都基于完整备份,若是未有最少一回完整备份,其余类其余备份都是多余的,所以在此间重申一下,在开立完三个新数据库之后,强烈建议以至胁持做1回完整备份。

1.3.3 -A 参数

  备份全库,备份语句

  mysqldump -uroot -p123 -A  > /backup/full.sql

上面分享一下用Recovery for SQL Server举行回复的操作步骤:

SELECT database_name,recovery_model,name 
FROM ms

1.3.4 -B 参数

  备某1个数据库下的全部表

  扩大建库(create)及“use库”的言辞,能够间接接多个库名,同时备份八个库*
-B 库1 库2

mysqldump -uroot -p123 -B world  > /backup/worldb.sql

 备份语句:

    create database if not 存在
    use db1
    drop table
    create table
    insert into

  不加-B备份数据库时,只是备份数据库下的具有表,不会创制数据库

         只好备份单独的数据库(一般用来备份单表时利用)

mysqldump -uroot -p123 world  > /backup/world.sql

         备份单表

mysqldump -uroot -p123 world  city  > /backup/world_city.sql

         对于单表备份的粒度,再过来数据库数据时进程最快。

         备份五个表

mysqldump 库1 表1 表2 表3 >库1.sql
mysqldump 库2 表1 表2 表3 >库2.sql

分库备份:for循环

mysqldump -uroot -p'mysql123' -B mysql ...
mysqldump -uroot -p'mysql123' -B mysql_utf8 ...
mysqldump -uroot -p'mysql123' -B mysql ...
......

分库备份

for name in `mysql -e "show databases;"|sed 1d`
do
 mysqldump -uroot -p'mysql123' -B $name
done
  1. 运行Recovery for SQL Server

选取方面包车型大巴语句简单能够看到有那些数据库做过备份,由于测试,所以做了三遍备份,能够看看自家那些时间点已经做了备份了。

1.3.5 –master-data={1|2}参数

  告诉你备份后随时的binlog地点

    二为注释  一为非注释,要实践的(主从复制)

[root@db02 logs]# sed -n '22p' /opt/t.sql
CHANGE MASTER TO MASTER_LOG_FILE='clsn-bin.000005', MASTER_LOG_POS=344;
[root@db02 logs]# mysqldump -B --master-data=2 clsn >/opt/t.sql

997755.com澳门葡京 5

997755.com澳门葡京 6

1.3.6 –single-transaction 参数

  对innodb引擎实行热备

         只支持innodb引擎

         使用该参数会独自开启五个作业实行备份,利用专门的学业的快速照相才能完成。

  基于事务引擎:不用锁表就足以获得一致性的备份.

  突显了ACID四大特色中的隔绝性,生产中9九% 使用innodb事务引擎.

        
即使支持热备,并不意味你能够再自由时间点进展备份,特别是事情繁忙期,不要做备份攻略,一般夜里举行备份。

  innodb引擎的备份命令如下:

mysqldump -A -B -R --triggers --master-data=2 --single-transaction |gzip >/opt/all.sql.gz
  1. 点击菜单中的 File > Recover,选取要上升的数据库的数据文件(.mdf)

(三)、确认保障外人不再连接数据库,然后做1遍日志背后部分备份:

1.3.7 –flush-logs参数/-F

  刷新binlog日志

    每一天早晨0点备份数据库

mysqldump -A -B -F >/opt/$(date +%F).sql

[root@db02 ~]# ll /application/mysql/logs/
-rw-rw---- 1 mysql mysql 168 Jun 21 12:06 clsn-bin.000001
-rw-rw---- 1 mysql mysql 168 Jun 21 12:06 clsn-bin.000002
-rw-rw---- 1 mysql mysql 210 Jun 21 12:07 clsn-bin.index

         提醒:每一个库都会刷新叁遍.        

997755.com澳门葡京 7

首先先创造一点数码:

一.三.八 压缩备份

缩减备份命令:

mysqldump -B --master-data=2 clsn|gzip >/opt/t.sql.gz

  解压:

zcat t.sql.gz >t1.sql
gzip -d t.sql.gz #删压缩包
gunzip alL_2017-12-22.sql.gz 

二个一体化的备份语句

         innodb引擎的备份命令如下:

mysqldump -A -R --triggers --master-data=2 --single-transaction |gzip >/opt/all.sql.gz

         适合多引擎混合(举个例子:myisam与innodb混合)的备份命令如下:

mysqldump -A -R --triggers --master-data=2 |gzip   >/opt/alL_$(date +%F).sql.gz
  1. Next > Next,进入 Recovery Configuration
    界面,选取Custom(选取了Custom才方可选择从日记中恢复生机误删除的数目)。

出于tempdb恒久为简单复苏方式,所以不切合做案例。 
那边运用微软的言传身教数据库AdventureWorks 

1.三.玖 使用Mysqldump备份进行恢复生机实践

备份innodb引擎数据库clsn并压缩:

mysqldump -B -R --triggers --master-data=2 clsn|gzip >/opt/all_$(date +%F).sql.gz

人造删除clsn数据库:

[root@db02 opt]# mysql -e “drop database clsn;”
[root@db02 opt]# mysql -e “show databases;”

复原数据库:

使用gzip解压 gzip -d xxx.gz
shell> mysql </opt/all_2017-1222.sql
或
mysql> set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)
mysql> source /backup/alL_2017-12-22.sql

注脚数据:

[root@db02 opt]#  mysql -e “use clsn;select * from test;”

回来顶部

997755.com澳门葡京 8

*/ 
USE AdventureWorks 
GO 
IF OBJECT_ID('testRestore') IS NOT NULL 
 DROP TABLE testRestore 
GO 
CREATE TABLE testRestore 
 ( 
  id INT IDENTITY(1, 1) , 
  NAME VARCHAR(50) 
 ); 
--插入测试数据:  
INSERT INTO testRestore(Name) 
SELECT 'test1' 
UNION ALL 
SELECT 'test2' 
UNION ALL 
SELECT 'test3' 
UNION ALL 
SELECT 'test4' 
UNION ALL 
SELECT 'test5' 
UNION ALL 
SELECT 'test6' 
UNION ALL 
SELECT 'test7' 
UNION ALL 
SELECT 'test8' 
SELECT * FROM testRestore 

一.肆 【模拟】增量苏醒集团案例

  1. Next 进入 Recovery options 窗口,选中 Search for deleted
    records,并选用要过来的数据库的日记文件路线(log file path)。

检查一下结果:

一.四.一 前提条件:

  一.怀有全量备份(mysqldump)。

  2.除全量备份以外,还有全量备份之后发出的的全部binlog增量日志。

997755.com澳门葡京 9

997755.com澳门葡京 10

一.四.2 景况计划

(1)打算条件:

 

drop database clsn;
CREATE DATABASE clsn;
USE `clsn`;
CREATE TABLE `test` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
INSERT INTO `test` VALUES (1,'clsn'),(2,'znix'),(3,'inca'),(4,'zuma'),(5,'kaka');

 

  查看成立好的多少

 

mysql> select * from test;
+----+------+
| id | name |
+----+------+
|  1 | clsn |
|  2 | znix |
|  3 | inca |
|  4 | zuma |
|  5 | kaka |
+----+------+
5 rows in set (0.00 sec)

 

(②)模拟条件:

mkdir /data/backup -p
date -s "2017/12/22"

全备份:

mysqldump -B --master-data=2 --single-transaction clsn|gzip>/data/backup/clsn_$(date +%F).sql.gz

  模拟增量:

mysql -e "use clsn;insert into test values(6,'haha');"
mysql -e "use clsn;insert into test values(7,'hehe');"
mysql -e "select * from clsn.test;"

(三)模拟误删数据:

date -s "2017/12/22 11:40"
mysql  -e "drop database clsn;show databases;"

  出现难点10分钟后,开掘标题,删除了数据库了.

  1. Next 并选用对象文件夹(Destination
    folder),用于存放恢复进程中变化的SQL语句与bat文件。

下一场来做个删除操作,为了牢固是哪一天产生的,小编加了一个waitfor命令,让它在有个别时间产生,这样还原的时候就有准确性:

壹.肆.三 恢复生机数据筹划

(壹)选拔iptables防火墙屏蔽全部应用程序的写入。

[root@clsn ~]# iptables -I INPUT -p tcp --dport 3306 ! -s 172.16.1.51 -j DROP 
#<==非172.16.1.51禁止访问数据库3306端口。

         或行使mysql 配置参数,但是急需重启数据库

--skip-networking

         复制贰进制日志文件

cp -a /application/mysql/logs/clsn-bin.* /data/backup/

         截取日志

zcat clsn_2017-12-22.sql.gz >clsn_2017-12-22.sql
sed -n '22p' clsn_2017-12-22.sql
mysqlbinlog -d clsn --start-position=339 clsn-bin.000008 -r bin.sql

亟需还原的日记:

1.clsn_2017-12-22.sql
2.bin.sql
grep -i drop bin.sql 
sed -i '/^drop.*/d' bin.sql

997755.com澳门葡京 11

USE AdventureWorks 
GO 
WAITFOR TIME '21:45' 
DELETE FROM dbo.testRestore 

1.4.四 进行数据复苏

过来数据

 

[root@db02 backup]# mysql <clsn_2017-12-22.sql
[root@db02 backup]# mysql -e "show databases;"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| clsn               |
| znix               |
| performance_schema |
+--------------------+

 

翻看数据库

 

mysql> select * from test;
+----+------+
| id | name |
+----+------+
|  1 | clsn |
|  2 | znix |
|  3 | inca |
|  4 | zuma |
|  5 | kaka |
+----+------+
5 rows in set (0.00 sec)

 

还原增量数据:

 

[root@db02 backup]# mysql clsn <bin.sql
mysql> select * from test;
+----+------+
| id | name |
+----+------+
|  1 | clsn |
|  2 | znix |
|  3 | inca |
|  4 | zuma |
|  5 | kaka |
|  6 | haha |
|  7 | hehe |
+----+------+
7 rows in set (0.00 sec)

 

  恢复生机实现。

  调度iptables允许用户访问.

六.
点击Start,开首复苏操作(在上一步采纳的对象文件夹中生成对应的SQL文件与Bat文件),然后,出现SQL Server Database Creation Utility 窗口。

现行来看望数据:

1.4.5 多个binlog问题

mysqlbinlog -d clsn --start-position=339 clsn-bin.000009 clsn-bin.0000010 -r bin1.sql

mysql clsn <bin1.sql

再次回到顶部

997755.com澳门葡京 12

USE AdventureWorks 
GO 
SELECT * FROM dbo.testRestore 

1.伍 mysql数据库实际生育惨案

  1. Next,选取被恢复数据存放的靶子数据库。

997755.com澳门葡京 13

1.5.一 爆发背景

  一、mysql服务器会在每一日夜里0点全量备份

  二、某些开辟人士某些阳光明媚的上午,喝着茶,优雅的误删除了clsn_oss(核心)数据库。

  3、导致公司业务越发甘休,不大概平常提供服务。

997755.com澳门葡京 14

到这一步,苦难出现了,不过切记要冷静。

一.5.二 怎么消除的

  壹、当前系统进行评估。

    什么破坏了,有未有备份,

    苏醒数据时间(误操作的数目有关,备份、复苏计策),

    恢复生机工时

         贰、苏醒方案

                  (一)恢复生机0点的全备,到测试库

                  (2)苏醒0点起先到故障时间点的binlog,到测试库

                  (三)将误操作的数目导出,复苏到生产库。

                 
(4)核准数据是还是不是欧洲经济共同体的(开垦测试蒙受测试苏醒成功数据库)

                  (5)核算完结之后,重新开启生行当务

  1. Next, 选择 Import availiable data from both database and log files

下边正是本文的主要性起头,做3遍日志备份,最根本是选择【备份日志尾巴部分】

1.伍.三 项目总计

         一、经过作者的回复管理,3十分钟完全专门的学问再度提供劳务(速度慢。。。)

         二、在现在的工作中制定严谨的支付典型,开荒,开拓。

         3、未来制定越来越好的架构方案。

归来顶部

997755.com澳门葡京 15

997755.com澳门葡京 16

一.陆 备份工具的精选

    数据量范围:30G  –> TB等第     

  1. Next, Next, 然后就大功告成多少的过来!

然后在【选项】页选择:除【事务日志】除,别的红框包裹的地点为强烈建议勾选的地方。并且保险数据库不要有旁人在接连,因为备份日志尾巴部分会使数据库处于还原状态,拒绝任何会话的连天,假诺持续开别的连接,是备份不了的。

1.六.1 数据量大,转变量小   

        (1)全备分费用的花费较高,mysqldump+binlog达成全备 +
增量备份,缺点是回复资本比备份时间资金财产还高

       
(二)xtrabackup:能够较长时间做1遍全备,其他时间都是增量,全量备份空间开销异常高若是数据量在30G–>TB级其他话,更推荐应用xtrabackup工具。

997755.com澳门葡京 17

997755.com澳门葡京 18

一.陆.二 数据量小,变化量大

    只必要考虑时间开支。

    只用全备备份即可,三种工具选拔都得以。苏醒花费上xtrabackup小一些

接下去,便是庆祝胜利!庆祝胜利最佳的艺术就是写1篇博客!< body>

下一场按鲜明,当然,能够动用上方的【脚本】来生成语句:

壹.6.3 数据量、变化量都大

    时间花费和空间花费都要思考了。

   数据量到达PB或越来越高时(facebook),mysqldump大概产生主要推荐,占用空间小,但才具费用高。必要对mysqldump进行二回开荒(大数据量公司首推)。

回去顶部

您可能感兴趣的文章:

  • 定时自动备份IIS的WWW日志的vbs脚本
  • mssql自动备份及机关清除日志文件服务器设置
  • sqlserver
    数据库日志备份和复苏手续
  • SQL server 二零一零数据安全(备份和死灰复燃数据库)
  • SQL Server误区十二日谈 第30天
    破坏日志备份链之后,须求3个完完全全备份来再一次初始日志链
  • Shell脚本定时备份清除运维系统日志的代码
  • win平台oracle
    rman备份和删除dg备库归档日志脚本
  • 数据库崩溃,利用备份和日志举行魔难苏醒
  • SQL Server
    200玖数据库误删数据怎么着开始展览数据恢复生机
  • SQL Server
    200玖及越来越高版本数据库苏醒措施之日志尾巴部分备份
USE Master 
GO 
BACKUP LOG [AdventureWorks] TO DISK = N'E:\AdventureWorks.bak' WITH NO_TRUNCATE , NOFORMAT, NOINIT, NAME = N'AdventureWorks-事务日志 备份', SKIP, NOREWIND, NOUNLOAD, NORECOVERY , COMPRESSION, STATS = 10, CHECKSUM 
GO 
declare @backupSetId as int 
select @backupSetId = position from msdb..backupset where database_name=N'AdventureWorks' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'AdventureWorks' ) 
if @backupSetId is null begin raiserror(N'验证失败。找不到数据库“AdventureWorks”的备份信息。', 16, 1) end 
RESTORE VERIFYONLY FROM DISK = N'E:\AdventureWorks.bak' WITH FILE = @backupSetId, NOUNLOAD, NOREWIND 
GO 

一.柒 xtrabackup备份软件

percona集团级军官方网址  

 

那会儿,数据库会处在【正在苏醒】的情形

1.7.1 Xtrabackup介绍

  Xtrabackup是由percona开源的无需付费数据库热备份软件,它能对InnoDB数据库和XtraDB存款和储蓄引擎的数据库非阻塞地备份(对于MyISAM的备份一样须要加表锁);mysqldump备份格局是使用的逻辑备份,其最大的后天不足是备份和回复速度一点也不快,假使数据库大于50G,mysqldump备份就不太符合。

  Xtrabackup安装到位后有6个可实施文件,在那之中三个相比较重大的备份工具是innobackupex、xtrabackup

1)xtrabackup 是专门用来备份InnoDB表的,和mysql server没有交互;
2)innobackupex 是一个封装xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁。
3)xbcrypt 加密解密备份工具
4)xbstream 流传打包传输工具,类似tar
5)物理备份工具,在同级数据量基础上,都要比逻辑备份性能好的多,特别是在数据量较大的时候,体现的更加明显。

997755.com澳门葡京 19

1.7.1 Xtrabackup优点

  1)备份速度快,物理备份可信赖

  二)备份进程不会卡住正在实践的政工(无需锁表)

  三)能够基于压缩等效果节约磁盘空间和流量

  四)自动备份校验

  5)还原速度快

  六)能够流传将备份传输到其它1台机器上

  7)在不扩张服务器负荷的景况备份数据

  八)物理备份工具,在同级数据量基础上,都要比逻辑备份质量要好的多。几10G到不超越TB级其他准绳下。但在同数据量等级,物理备份复苏数据上有一定优势。

只要开采备份不了能够用上边语句查看,并把spid杀掉:

一.7.2 备份原理

  拷贝数据文件、拷贝数据页

对此innodb表能够完结热备。

    (1)在数据库还有修改操作的时刻,直接将数据文件备走,此时,备份走的数据对于当前mysql来讲是不一致的。
    (2)将备份过程中的redo和undo一并备走。
    (3)为了恢复的时候,只要保证备份出来的数据页lsn能和redo lsn匹配,将来恢复的就是一致的数据。redo应用和undo应用。

对于myisam表达成活动锁表拷贝文件。

  备份先导时首先会敞开二个后台检验过程,实时检查测试mysql
redo的变迁,一旦开采有新的日记写入,立时将日志记入后台日志文件xtrabackup_log中,之后复制innodb的数据文件一系统表空间文件ibdatax,复制停止后,将实施flush
tables with readlock,然后复制.frm MYI MYD等文件,最终执行unlock
tables,最终小憩xtrabackup_log

SELECT  * FROM sys.sysprocesses WHERE
dbid=DB_ID(‘AdventureWorks’) 

1.7.3 xtrabackup的安装

  安装信赖关系

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL

         下载软件包,并安装软件

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
yum -y install percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm

回到顶部

执行结果:

壹.八 xtrabackup奉行操作

997755.com澳门葡京 20

一.八.一 全量备份与还原

  这一等第会运转xtrabackup内嵌的innodb实例,重播xtrabackup日志xtrabackup_log,将交由的政工音信更改应用到innodb数据/表空间,同时回滚未提交的专门的学业(那1历程看似innodb的实例复苏)。恢复生机进程如下图:

 

备份

  创制备份目录

mkdir  /backup -p

 

         进行第二遍全量备份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --socket=/application/mysql/tmp/mysql.sock --no-timestamp /backup/xfull

 

复原前图谋

  恢复数据前的预备(合并xtabackup_log_file和备份的情理文件)

innobackupex --apply-log --use-memory=32M /backup/xfull/

 

         查看合并后的 checkpoints 个中的品种变为 full-prepared
即为可复原。

 

[root@db02 full]# cat xtrabackup_checkpoints 
backup_type = full-prepared
from_lsn = 0
to_lsn = 4114824
last_lsn = 4114824
compact = 0
recover_binlog_info = 0

 

 

  破坏数据库数据文件

 

[root@db02 full]# cd /application/mysql/data/
[root@db02 data]# ls
auto.cnf  db02.pid  ibdata2      mysql             mysql-bin.index     world
clsn      haha      ib_logfile0  mysql-bin.000001  oldboy
db02.err  ibdata1   ib_logfile1  mysql-bin.000002  performance_schema
[root@db02 data]# \rm -rf ./* 
[root@db02 data]# ls
[root@db02 data]# killall mysql

 

 

光复措施

  方法壹:直接将备份文件复制回来

cp -a /backup/full/ /application/mysql/data
chown -R mysql.mysql /application/mysql/data

  方法二:使用innobackupex命令进行理并答复原(推荐)

[root@db02 mysql]# innobackupex --copy-back /backup/xfull
[root@db02 mysql]# chown -R mysql.mysql /application/mysql/

               
 表明:无论接纳那种恢复生机措施都要复苏后需改属组属主,保持与程序同样。

[root@db02 data]# cd /application/mysql/data/
[root@db02 data]# ls
clsn     ibdata2      ibtmp1  performance_schema            xtrabackup_info
haha     ib_logfile0  mysql   world
ibdata1  ib_logfile1  oldboy  xtrabackup_binlog_pos_innodb

         运转是数据库

[root@db02 data]#  /etc/init.d/mysqld start

然后kill掉。

一.8.2 增量备份与回复

  innobackupex增量备份进程中的”增量”管理,其实首如果对立innodb来说,对myisam和任何存储引擎来说,它还是是全拷贝(全备份)

  ”增量”备份的长河重如果通过拷贝innodb中有退换的”页”(那么些退换的数目页指的是”页”的LSN大于xtrabackup_checkpoints中加以的LSN)。增量备份是依赖全备的,第2回增备的数目必须要基于上一遍的全备,之后的历次增备都是依据上二回的增备,最后实现壹致性的增备。增量备份的过程如下,和全备的进程很类似,分歧仅在第一步。

 

增量备份从哪增量?

  基于上1次的备份进行增量。

  redo暗中同意意况下是壹组八个文件,并且有固定大小。其行使的文本是一种轮询使用办法,他不是长久的,文件随时大概被遮盖。

  注意:千万不要在事情繁忙时做备份。

备份什么内容

  一、能够采纳binlog作为增量

  2、自带的增量备份,基于上次备份后的改变的数据页,还要备份在备份进程中的undo、redo变化

怎么备份

         壹、先进行第一回全备

innobackupex  --user=root --password=123 --no-timestamp /bakcup/xfull

         对原库做了修改,修改了小红那行然后commit。

*         贰、再开始展览增量备份*

innobackupex --user=root --password=123  --incremental --no-timestamp --incremental-basedir=/backup/xfull/  /backup/xinc1

怎么回复

 

  一、先使用全备日志(–apply-log,临时无需做回滚操作–redo-only)

innobackupex --apply-log --redo-only /backup/xfull/     

  二、合并增量到全备中(1致性的联合)

innobackupex --apply-log --incremental-dir=/backup/xinc1 /backup/xfull/
innobackupex --apply-log /backup/xfull

 

  三、合并落成进展回复

    方法一:直接将备份文件复制回来

cp -a /backup/full/ /application/mysql/data
chown -R mysql.mysql /application/mysql/data

 

    方法2:使用innobackupex命令举行苏醒(推荐)

[root@db02 mysql]# innobackupex --copy-back /backup/xfull
[root@db02 mysql]# chown -R mysql.mysql /application/mysql/

 

               
表明:无论采纳那种恢复生机措施都要过来后需改属组属主,保持与程序一样。

随即继续备份。

一.八.叁 数据库备份计谋

    每一周的周末举行一遍全备;周一到周二每一天做上一天增量,每周轮询三回。

 

xfull       --apply-log --redo-only   保证last-lsn=周一增量开始lsn
xinc1        合并周一的增量到全备,并apply-log --redo-only  保证last-lsn=周二增量开始lsn
xinc2        合并周二的增量到全备,并apply-log --redo-only  保证last-lsn=周三增量开始lsn
xinc3       合并周三的增量到全备,并apply-log --redo-only  保证last-lsn=周四增量开始lsn
xinc4       合并周四的增量到全备,并apply-log --redo-only  保证last-lsn=周五增量开始lsn
xinc5       合并周五的增量到全备,并apply-log --redo-only  保证last-lsn=周六增量开始lsn
xinc6        合并周六的增量到全备,--apply-log  准备恢复即可

 

 

 然后拓展回复,如图:

一.八.四 真实生产实战案例分析

  背景:某物流公司网址基本系统,数据量是220G,每一日更新量十0M-200M

  备份方案: xtrabackup全备+增量

  备份战略(crontab):     

    1、周六 晚上0点全备     

       0 0 * * 6 zjs_full.sh —这行能够未有 

    2、礼拜伍至礼拜伍、礼拜四  是增量,基于上一天增量

       0 1 * * 0-5 zjs_inc.sh—这行能够没有         

  故障场景:

    礼拜六的时候,清晨两点,开拓人士误删除了一张表zjs_base,大约10G。

  项目职分:

    一)  钦定复苏方案、利用现成备份;

    贰)  苏醒误删除数据;

    三)  制定运营、开拓流程标准。

  苏醒流程:

 

    a)    准备上周六全备。
    b)    合并周日、周一 、周二增量。
    c)    在测试库恢复以上数据,数据的目前状态应该周三凌晨1:00
    d)    需要恢复的数据状态是,下午2点钟左右
    e)    从1点开始的binlog恢复到删除之前转台
    f)    导出删除的表zjs_base,恢复到生产库,验证数据可用性、完整性。
    g)    启动应用连接数据库。

 

  总结:经过二十六分钟将误删表恢复生机了。服务累计截至40分钟。

先要还原完整备份,接纳近期的此番,由于日记备份的特色(今后别的小说再说),只认最终一回备份,所以要选拔新型的本次,不然还原不了。

一.八.伍 故障恢复生机小结

*         光复思路:***

                  壹、首先保险断开全体应用,有限支撑数据的拉萨。

                  二、检查用于苏醒的备份存在吗。

                  三、设计极快、安全恢复生机轻易方案,制定突发难题消除办法。

         具体回复流程:

 

        1、准备上周六全备,并--apply-log --redo-only
        2、合并增量,周日、周一 、周二  --apply-log --redo-only 周三 --apply-log
        3、在测试库恢复以上数据,数据的目前状态应该周三凌晨1:00
        4、需要恢复的数据状态是,下午2点钟左右,删除zjs_base之前的数据状态
              从1点开始的binlog恢复到删除之前的那个events的position。
        5、导出删除的表zjs_base,恢复到生产库,验证数据可用性、完整性。
        6、启动应用连接数据库。

 

 

         规定苏醒所需时日

恢复窗口要多长?----> 预计3小时
        和你恢复+验证+意外情况有关。
业务停多长时间?----> 6小时?或者更多?更少?    

 

997755.com澳门葡京 21

1.捌.6 【模拟】生产事故恢复生机

 数据创设阶段       

  1、创建备份要求的目录

mkdir full  inc1 inc2

 

  2、周六全备

innobackupex --user=root --password=123 --no-timestamp /backup/xbackup/full/

 

  三、模拟数据变动

use oldboy
create table test(id int,name char(20),age int);
insert into test values(8,'outman',99);
insert into test values(9,'outgirl',100);
commit;

 

  四、周1增量备份

innobackupex --user=root --password=123 --incremental --no-timestamp --incremental-basedir=/backup/xbackup/full/ /backup/xbackup/inc1

 

  5、模拟数据变化

use oldboy
insert into test values(8,'outman1',119);
insert into test values(9,'outgirl1',120);
commit;

 

  陆、礼拜叁的增量备份

innobackupex --user=root --password=123 --incremental --no-timestamp --incremental-basedir=/backup/xbackup/inc1 /backup/xbackup/inc2

 

  七. 再插入新的行操作

use oldboy
insert into test values(10,'outman2',19);
insert into test values(11,'outgirl2',10);
commit;

 

里丑捧心误操作事故

  模拟场景,周四清晨二点误删除test表

    use oldboy;
    drop table test;

 

准备恢复生机数据

  1.备选xtrabackup备份,合并备份

innobackupex --apply-log --redo-only /backup/xbackup/full
innobackupex --apply-log --redo-only --incremental-dir=/backup/xbackup/inc1 /backup/xbackup/full
innobackupex --apply-log  --incremental-dir=/backup/xbackup/inc2 /backup/xbackup/full
innobackupex --apply-log /backup/xbackup/full

  二.确认binlog起源,希图截取binlog。

 cd /backup/xbackup/inc2/
 cat xtrabackup_binlog_info 
 mysql-bin.000001    1121

   3.截取到drop操作之前的binlog

    mysqlbinlog  --start-position=1121 /tmp/mysql-bin.000003 
    找到drop之前的event和postion号做日志截取,假如 1437
    mysqlbinlog  --start-position=1121 --stop-position=1437    /tmp/mysql-bin.000003 >/tmp/incbinlog.sql

 

  四.关门数据库、备份贰进制日志

/etc/init.d/mysqld stop
cd /application/mysql/data/
cp mysql-bin.000001 /tmp

 

5.剔除MySQL全体数量

cd /application/mysql/data/
rm -rf *

 

过来数据

  一.将全量备份的数据恢复生机到数码目录下

innobackupex --copy-back /backup/xbackup/full/
chown -R mysql.mysql /application/mysql/data/
/etc/init.d/mysqld start

 

  2.恢复binlog记录

set sql_log_bin=0
source /tmp/incbinlog.sql

此间又有叁个注意事项,记得选择:

1.8.7 xtarbackup导出

  (一)“导出”表
导出表是在备份的prepare阶段张开的,由此,1旦完全备份达成,就能够在prepare进度中通过–export选项将某表导出了:

innobackupex --apply-log --export /path/to/backup

   
此命令会为各类innodb表的表空间创立2个以.exp结尾的文书,这一个以.exp结尾的文本则能够用于导入至其他服务器。

  (2)“导入”表
要在mysql服务器上导入来自于任何服务器的某innodb表,需求先在脚下服务器上创建3个跟原表表结构一样的表,而后技能兑现将表导入:

mysql> CREATE TABLE mytable (...)  ENGINE=InnoDB; 

  然后将此表的表空间删除:

mysql> ALTER TABLE mydatabase.mytable  DISCARD TABLESPACE; 

  接下去,以往自于“导出”表的服务器的mytable表的mytable.ibd和mytable.exp文件复制到当前服务器的多寡目录,然后利用如下命令将其“导入”:(记得改权限)

mysql> ALTER TABLE mydatabase.mytable  IMPORT TABLESPACE;

 

示例:

innobackupex --user=root --password=123 --no-timestamp /backup/xbackup/full/

 

         进入到全备的数据库目录下

[root@db02 haha]# ls
db.opt  PENALTIES.frm  PENALTIES.ibd  PLAYERS.frm  PLAYERS.ibd
[root@db02 haha]# pwd
/backup/xbackup/full/haha

 

         导出表

[root@db02 haha]# innobackupex --apply-log --export /backup/xbackup/full/  
[root@db02 haha]# ls
db.opt         PENALTIES.exp  PENALTIES.ibd  PLAYERS.exp  PLAYERS.ibd
PENALTIES.cfg  PENALTIES.frm  PLAYERS.cfg    PLAYERS.frm

 

         创设出同结构表

 

CREATE TABLE `PLAYERS` (
  `PLAYERNO` int(11) NOT NULL,
  `NAME` char(15) NOT NULL,
  `INITIALS` char(3) NOT NULL,
  `BIRTH_DATE` date DEFAULT NULL,
  `SEX` char(1) NOT NULL,
  `JOINED` smallint(6) NOT NULL,
  `STREET` varchar(30) NOT NULL,
  `HOUSENO` char(4) DEFAULT NULL,
  `POSTCODE` char(6) DEFAULT NULL,
  `TOWN` varchar(30) NOT NULL,
  `PHONENO` char(13) DEFAULT NULL,
  `LEAGUENO` char(4) DEFAULT NULL,
  PRIMARY KEY (`PLAYERNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

 

         复制苏醒数据到库下

[root@db02 haha]# cp  PLAYERS.ibd  PLAYERS.exp  /application/mysql/data/backup/
cp: overwrite `/application/mysql/data/backup/PLAYERS.ibd'? y

 

         苏醒数据

mysql> ALTER TABLE backup.PLAYERS  DISCARD TABLESPACE;
Query OK, 0 rows affected (0.00 sec)

 

997755.com澳门葡京 22

一.八.八 innobackupex参数表明

参数

参数说明

–compress

该选项表示压缩innodb数据文件的备份。

–compress-threads    

该选项表示并行压缩worker线程的数量。

–compress-chunk-size 

该选项表示每个压缩线程worker buffer的大小,单位是字节,默认是64K。

–encrypt             

该选项表示通过ENCRYPTION_ALGORITHM的算法加密innodb数据文件的备份,目前支持的算法有ASE128,AES192,AES256。

–encrypt-threads     

该选项表示并行加密的worker线程数量。

–encrypt-chunk-size  

该选项表示每个加密线程worker buffer的大小,单位是字节,默认是64K。

–encrypt-key         

该选项使用合适长度加密key,因为会记录到命令行,所以不推荐使用。

–encryption-key-file 

该选项表示文件必须是一个简单二进制或者文本文件,加密key可通过以下命令行命令生成:openssl rand -base64 24。

–include             

该选项表示使用正则表达式匹配表的名字[db.tb],要求为其指定匹配要备份的表的完整名称,即databasename.tablename。

–user                

该选项表示备份账号。

–password            

该选项表示备份的密码。

–port                

该选项表示备份数据库的端口。

–host                

该选项表示备份数据库的地址。

–databases

该选项接受的参数为数据名,如果要指定多个数据库,彼此间需要以空格隔开;如:"xtra_test dba_test",同时,在指定某数据库时,也可以只指定其中的某张表。如:"mydatabase.mytable"。该选项对innodb引擎表无效,还是会备份所有innodb表。此外,此选项也可以接受一个文件为参数,文件中每一行为一个要备份的对象。

–tables-file      

该选项表示指定含有表列表的文件,格式为database.table,该选项直接传给–tables-file。

–socket           

该选项表示mysql.sock所在位置,以便备份进程登录mysql。

–no-timestamp     

该选项可以表示不要创建一个时间戳目录来存储备份,指定到自己想要的备份文件夹。

–ibbackup         

该选项指定了使用哪个xtrabackup二进制程序。IBBACKUP-BINARY是运行percona xtrabackup的命令。这个选项适用于xtrbackup二进制不在你是搜索和工作目录,如果指定了该选项,innoabackupex自动决定用的二进制程序。

–slave-info       

该选项表示对slave进行备份的时候使用,打印出master的名字和binlog pos,同样将这些信息以change master的命令写入xtrabackup_slave_info文件。可以通过基于这份备份启动一个从库。

–safe-slave-backup

该选项表示为保证一致性复制状态,这个选项停止SQL线程并且等到show status中的slave_open_temp_tables为0的时候开始备份,如果没有打开临时表,bakcup会立刻开始,否则SQL线程启动或者关闭知道没有打开的临时表。如果slave_open_temp_tables在–safe-slave-backup-timeount (默认300秒)秒之后不为0,从库sql线程会在备份完成的时候重启。

–kill-long-queries-timeout

该选项表示从开始执行FLUSH TABLES WITH READ LOCK到kill掉阻塞它的这些查询之间等待的秒数。默认值为0,不会kill任何查询,使用这个选项xtrabackup需要有Process和super权限。

–kill-long-query-type     

该选项表示kill的类型,默认是all,可选select。

–ftwrl-wait-threshold     

该选项表示检测到长查询,单位是秒,表示长查询的阈值。

–ftwrl-wait-query-type    

该选项表示获得全局锁之前允许那种查询完成,默认是ALL,可选update。

–galera-info              

该选项表示生成了包含创建备份时候本地节点状态的文件xtrabackup_galera_info文件,该选项只适用于备份PXC。

–stream                   

该选项表示流式备份的格式,backup完成之后以指定格式到STDOUT,目前只支持tar和xbstream。

–defaults-file            

该选项指定了从哪个文件读取MySQL配置,必须放在命令行第一个选项的位置。

–defaults-extra-file      

该选项指定了在标准defaults-file之前从哪个额外的文件读取MySQL配置,必须在命令行的第一个选项的位置。一般用于存备份用户的用户名和密码的配置文件。

—-defaults-group         

该选项表示从配置文件读取的组,innobakcupex多个实例部署时使用。

–no-lock

该选项表示关闭FTWRL的表锁,只有在所有表都是Innodb表并且不关心backup的binlog pos点,如果有任何DDL语句正在执行或者非InnoDB正在更新时(包括mysql库下的表),都不应该使用这个选项,后果是导致备份数据不一致,如果考虑备份因为获得锁失败,可以考虑–safe-slave-backup立刻停止复制线程。

–tmpdir

该选项表示指定–stream的时候,指定临时文件存在哪里,在streaming和拷贝到远程server之前,事务日志首先存在临时文件里。在使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数–tmpdir指定目录来解决这个问题。

–history               

该选项表示percona server 的备份历史记录在percona_schema.xtrabackup_history表。

–incremental           

该选项表示创建一个增量备份,需要指定–incremental-basedir。

–incremental-basedir   

该选项表示接受了一个字符串参数指定含有full backup的目录为增量备份的base目录,与–incremental同时使用。

–incremental-dir       

该选项表示增量备份的目录。

–incremental-force-scan

该选项表示创建一份增量备份时,强制扫描所有增量备份中的数据页。

–incremental-lsn    

该选项表示指定增量备份的LSN,与–incremental选项一起使用。

–incremental-history-name

该选项表示存储在PERCONA_SCHEMA.xtrabackup_history基于增量备份的历史记录的名字。Percona Xtrabackup搜索历史表查找最近(innodb_to_lsn)成功备份并且将to_lsn值作为增量备份启动出事lsn.与innobackupex–incremental-history-uuid互斥。如果没有检测到有效的lsn,xtrabackup会返回error。

–incremental-history-uuid

该选项表示存储在percona_schema.xtrabackup_history基于增量备份的特定历史记录的UUID。

–close-files             

该选项表示关闭不再访问的文件句柄,当xtrabackup打开表空间通常并不关闭文件句柄目的是正确的处理DDL操作。如果表空间数量巨大,这是一种可以关闭不再访问的文件句柄的方法。使用该选项有风险,会有产生不一致备份的可能。

–compact                 

该选项表示创建一份没有辅助索引的紧凑的备份。

–throttle                

该选项表示每秒IO操作的次数,只作用于bakcup阶段有效。apply-log和–copy-back不生效不要一起用。

回到顶部

随即还原日志文件,那是最最根本的一步:

1.九 参考文献

https://www.cnblogs.com/cchust/p/5452557.html
http://www.cnblogs.com/gomysql/p/3650645.html  xtrabackup 详解
https://www.percona.com/software/mysql-database/percona-xtrabackup
https://learn.percona.com/hubfs/Manuals/Percona_Xtra_Backup/Percona_XtraBackup_2.4/Percona-XtraBackup-2.4.9.pdf

997755.com澳门葡京 23

然后:

997755.com澳门葡京 24

由于试验的时候出了点难题,前面重做了,所以时间接选举用到2二:二10分,笔者是在22:十八分剔除数据的。这里并非太在意,只要把时间点钦定到您误删除的大运以前就能够。而由于日记尾部备份都是最后二个备份文件,所以那边选则红框部分就可以:

997755.com澳门葡京 25

最近再检查一下:

997755.com澳门葡京 26

能够看到,数据现已过来成功。

总结:

平日不做备份,出标题来喊急,那是苟有自取,还有一对尾部发热的人喜欢看到ldf非常大就直接删除,那之后出难点就别怪微软了。

正文中的方法看起来有点麻烦,但是实际操作四遍就觉着好了,不过步骤建议严苛遵从下面说的,因为假若操作错误,就很辛勤,此时再一次强调——冷静冷静再冷静!!!!!!

那种办法有多少个毛病:

997755.com澳门葡京,一、假诺你开掘误操作未来还有为数不少人做了操作,那么你苏醒成功后,别人的操作就能够冲掉,所以产生误操作后,要及时停息外人对数据库的操作。

二、 这几个点子要对数据库独占,所以您想偷偷恢复生机是不行的了。勇敢认同错误吧。

对此宗旨数据表,依旧要先做好幸免操作,可以看:SQLServer复苏表级数据。

上述正是本文的全体内容,希望对大家的上学抱有帮衬。

您或者感兴趣的小说:

  • 按时自动备份IIS的WWW日志的vbs脚本
  • mssql自动备份及自动清除日志文件服务器设置
  • sqlserver
    数据库日志备份和死灰复燃手续
  • SQL Server2010数据库误删除数据的还原措施分享
  • SQL server 贰零1零数据安全(备份和苏醒数据库)
  • SQL Server误区14日谈 第二0天
    破坏日志备份链之后,须要2个整机备份来再一次开首日志链
  • Shell脚本定时备份清除运转系统日志的代码
  • win平台oracle
    rman备份和删除dg备库归档日志脚本
  • 数据库崩溃,利用备份和日志举办灾祸苏醒
  • SQL Server
    二〇〇九数据库误删数据怎么样开始展览数据恢复生机

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website