資料庫 增量恢復

2021-08-29 06:10:57 字數 1957 閱讀 7380

[color=darkblue]生產線的sqlserver資料庫infoservice星期日做全盤備份,備份名為:infoservice_database.7,星期一做差異備份:infoservice_database.1,星期二:infoservice_database.2...

對應的本地模擬庫infoserviceonline要定期恢復,恢復順序與備份順序相反. 如今天是星期一,要先還原

上個星期日的全盤備份,再還原今天的差異備份.

本程式支援在資料庫伺服器恢復,也支援在工作站恢復.[/color]

斷開資料庫的儲存過程(建立於master庫):

create proc disconnectdb(@dbname varchar(20),@reason nvarchar(200)=null,@delay varchar(8)='00:00:30')     

declare @sql nvarchar(500),@cmd nvarchar(500)

declare @spid int

declare @hostname nvarchar(255),@pgname nvarchar(255)

declare @flag bit

set @reason=isnull(@reason,n'未知')

set @flag=0

set @sql='declare getspid cursor for select spid,hostname,program_name from master..sysprocesses where dbid=db_id('''+@dbname+''')'

exec (@sql)

open getspid

print 'ready'

fetch next from getspid into @spid,@hostname,@pgname

while @@fetch_status <>-1

begin

set @flag=1

set @cmd='net send '+ltrim(rtrim(@hostname))+' 請及時儲存你的程式:'+ltrim(rtrim(@pgname))+'的相關資料,'+'資料庫:'+@dbname+'將於'+@delay+'後斷開連線.'+'原因:'+@reason

print @cmd

exec master.dbo.xp_cmdshell @cmd

fetch next from getspid into @spid,@hostname,@pgname

end

close getspid

deallocate getspid

if @flag=1

waitfor delay @delay

exec (@sql)

open getspid

fetch next from getspid into @spid,@hostname,@pgname

while @@fetch_status <>-1

begin

exec('kill '+@spid)

fetch next from getspid into @spid,@hostname,@pgname

end

close getspid

deallocate getspid

print 'disconnect db:'+@dbname+' completely!'

return 0

python指令碼

mysql增量 mysql資料庫增量恢復

mysqldump uroot p b discuzx f x master data 2 events gzip root discuzx.sql.gz 寫入資料 刪除資料 第一時間關閉資料庫對外讀寫功能,並進入資料執行重新整理mysqlbinlog的位置點,新生成檔案 flush logs 根據...

MySQL 資料庫增量資料恢復案例

mysql資料庫每日零點自動全備 某天上午10點,小明莫名其妙地drop了乙個資料庫 我們需要通過全備的資料檔案,以及增量的binlog檔案進行資料恢復 利用全備的sql檔案中記錄的change master語句,binlog檔案及其位置點資訊,找出binlog檔案增量的部分 用mysqlbinlo...

實戰!MySQL 資料庫增量資料恢復

場景概述 1 mysql資料庫每日零點自動全備 2 某天上午10點,小明莫名其妙地drop了乙個資料庫 3 我們需要通過全備的資料檔案,以及增量的binlog檔案進行資料恢復 主要思想 1 利用全備的sql檔案中記錄的change master語句,binlog檔案及其位置點資訊,找出binlog檔...