存档

文章标签 ‘数据库’

利用mysql二进制日志进行mysql数据库的恢复(转)

2016年9月4日 没有评论

对于需要确保mysql数据库完整性的网站,mysql的二进制日志至关重要。比如你做了mysql数据库的主从备份,你认为这应该能确保mysql从数据库是最新的内容了,这的确没错,但有一种情况,比如你误删除了数据,或者被黑客入侵而清除了数据库,这时mysql从服务器也会跟主数据库同步,这是你不想看到的,但数据确实没了。但是如果你每天进行了数据库的完整备份,而且mysql的二进制日志还在的话,这将有可能恢复最新的数据。下面介绍方法。

1、开启二进制日志
在使用二进制日志恢复数据库时,请确保你已经开启二进制日志,检查my.cnf文件是否存在log-bin=mysql-bin。

2、定期完整备份
你还需要间隔一定的时间做数据库的完整备份,只有这样你才有可能快速的恢复最新数据。

3、查看备份时间
查看你备份的时间,如dedecmsv57gbksp1.sql,取最后一行:– Dump completed on 2012-11-08 11:11:48。

4、导出二进制日志
暂时关闭网站,防止新数据写入,导出二进制日志:

mysqlbinlog mysql-bin.000001 -d dedecmsv57gbksp1 –start-datetime=”2012-11-08 11:11:48″ >binlog.sql

5、调整binlog.sql
编辑binlog.sql,删除误操作的语句。

6、导入数据
重建数据库dedecmsv57gbksp1,导入dedecmsv57gbksp1.sql,接着导入binlog.sql。

Windows平台下Oracle 自动备份详细步骤

2015年6月26日 没有评论

环境说明
背景:Oracle 11g 服务器,Oracle 11g 客户端,windowsXP 操作平台
要求:Oracle 数据库服务器对数据库 tsorcl 每天自动备份一次。备份格式:ts20140408.dmp 和 ts20140408.log
解决方案:利用任务计划、批处理文件和 Oracle 的 exp 导出功能,根据日期自动生成 Oracle 备份文件。

具体操作步骤如下
1、创建批处理文件 oracle_bakup.bat
oracle_bakup .bat 中详细内容如下

@echo off
echo 正在备份TS Oracle 数据库,请稍等……
exp ts/ts@tsorcl owner=ts INDEXES=y grants=N rows=y constraints=y compress=N
file=F:\autobackup\ts_%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=F:\autobackup\ts_%date:~0,4%%date:~5,2%%date:~8,2%.log
echo 任务完成!

另外:%date%的值在不同的系统、语言版本下可能是不一样的,控制面板里面区域选项的设定也会改变%date%的值。请先在命令行中测试 echo %date% 的返回值。%date:~4,10% 是返回日期函数,~后的第一个参数是要截取的起始位置(从0开始),第二个参数是要截取的长度,如没有则是截取到最后,参数可酌情修改。 如需要准确的时间做为文件名,请用%time%函数,参数同上。

2、添加一个任务计划 TSPlan

开始 > 所有程序 > 附件 > 系统工具 > 任务计划 > 添加任务计划 > 下一步 > 在 浏览 中查找刚刚写好的oracle_bakup.bat 文件 > 任务名输入TSPlan,执行这个任务选择每天,下一步 > 起始时间下午12:00,起始日期2009-7-11,下一步 > 输入用户名及密码,用户名要求是管理员权限用户名,下一步 > 完成
点击”完成”之后,会在任务计划栏目下新增一个名为”TSPlan”的任务计划,表明已经配置完毕。

备注:有时点击”完成” 之后,系统警告
“已创建新任务,但可能不能运行,因为无法设置账户信息。
指定的错误是:
Ox80041315:任务计划程序服务没有运行”
这是因为电脑的任务计划程序服务没有启动起来。开始 > 所有程序 > 管理工具 > 服务,找到”Task Scheduler”服务,发现启动类型为”已禁用”,右键单击更改为”自动”,并把它启动起来,然后重新添加一次任务计划 TSPlan就可以了。

分类: Windows, 解决方案 标签: ,

Windows下Oracle文件的自动备份与ftp自动上传

2015年6月26日 没有评论

环境说明
操作系统:Windows平台
环境:Oracle11g
FTP: 192.168.148.121 用户:dell 密码:123
要求:上传当天备份的数据库文件到FTP服务器,并删除windows平台下前一天的数据库备份文件
解决方案:利用任务计划、批处理文件和 FTP功能,来实现 Windows下自动备份数据库文件到远程FTP服务器并删除指定日期前的备份

具体 操作步骤如下
1、完成 Windows平台下Oracle 自动备份详细步骤 (见上个文章)
2、创建批处理 windowbackuptoftp.bat 文件
windowbackuptoftp.bat 中详细内容如下

@echo off
color 0a
title FTP自动上传
mode con cols=120 lines=50
echo.
echo *************************************************
echo 说 明
echo 本脚本可以方便用户自动向FTP上传当天的文件到 (—大于当天getdate() 120的形式, –删除一天前的数据)
echo 指定远程路径,与计划任务配合使用来实现数据库备份
echo *************************************************
echo
echo 10秒后开始下载…
echo open 192.168.148.121>ftp.txt
echo dell>>ftp.txt
echo 123>>ftp.txt
forfiles /p F:\autobackup /s /m *.dmp /d +%date:~0,10% /c “cmd /c echo put @file>>ftp.txt”
echo bye>>ftp.txt
C:\Windows\System32\ftp.exe -i -s:ftp.txt
forfiles -p “F:\autobackup” -s -m *.dmp /D -1 /C “cmd /c del @path>>ftp.txt”
exit

说明:forfiles 从 F:\autobackup查找对应的文件。
echo %date:~0,10% 等于2014-04-08 大于当天日期的数据库备份文件
cmd /c 可以在引号里将多条命令(包括批处理里的语句)用’&&’连接起来,达到将多条命令化为一条命令的目的
-1 保留最新1天的备份,使用 Resource kit 里的命令 FORFILES 删除老备份文件
del 删除
put 上传
ftp -s:ftp.txt 意思是,读取fxp.txt里的参数,执行ftp命令,命令执行完后,对应的文件日志下载到对方计算机里了。

DOS批处理命令(forfiles) 详解

Forfiles
从文件夹或树中选择要进行批处理的文件。
语法
forfiles [/p Path] [/m SearchMask] [/s] [/c Command] [/d[{+ | -}] [{MM/DD/YYYY | DD}]]
参数
/p Path 指定Path,表明要从哪里开始搜索。默认的文件夹是当前工作目录,该目录通过键入句号(.) 指定。
/m SearchMask 按照SearchMask 搜索文件。默认的SearchMask 是[i].[/i]。
/s 指示forfiles 在子目录中搜索。
/c Command 在每个文件上运行指定的Command。带有空格的命令字符串必须用引号括起来。默认的Command 是”cmd /c echo @file”。
/d[{+ | -}] [{MM/DD/YYYY | DD}] 选择日期大于或等于(+)(或者小于或等于(-))指定日期的文件,其中MM/DD/YYYY 是指定的日期,DD 是当前日期减去DD 天。如果未指定+ 或-,则使用+。DD 的有效范围是0 – 32768。
/? 在命令提示符下显示帮助。
注释
•Forfiles 最常用于批处理文件中。
•Forfiles /s 与dir /s 类似。
•下表列出了可在/cCommand 命令字符串中使用的变量。
变量描述
@file 文件名
@fname 无扩展名的文件名
@ext 文件扩展名
@path 文件的完整路径
@relpath 文件的相对路径
@isdir 如果文件类型是目录,则计算值为TRUE,否则值为FALSE
@fsize 用字节表示的文件大小
@fdate 文件中上次修改的日期戳
@ftime 文件中上次修改的时间戳
•使用forfiles,可以在多个文件上运行命令或将参数传递给多个文件。例如,可以在树中带有[i].txt 扩展名的所有文件上运行TYPE 命令。或者,可以用文件名“Myinput.txt”作为第一个参数,在C:\ 驱动器上执行每个批处理文件([/i].bat)。
•通过使用forfiles,可以执行下列任何操作:使用/d 按照绝对或相对日期选择文件。
•使用诸如@fsize(文件大小)和@fdate(文件日期)这样的变量构建文件的存档树。
•使用@isdir 变量区分文件和目录。
•通过在命令行中包含特殊字符和使用十六进制代码0xHH 环绕字符来格式化输出内容。
•Forfiles 通过在旨在仅处理单个文件的工具上执行“循环子目录”标记来发挥作用

2、添加一个任务计划 TSFTPPlan

开始 > 所有程序 > 附件 > 系统工具 > 任务计划 > 添加任务计划 > 下一步 > 在 浏览 中查找刚刚写好的windowbackuptoftp.bat 文件 > 任务名输入TSFTPPlan,执行这个任务选择每天,下一步 > 起始时间下午12:00,起始日期2009-7-11,下一步 > 输入用户名及密码,用户名要求是管理员权限用户名,下一步 > 完成
点击”完成”之后,会在任务计划栏目下新增一个名为”TSFTPPlan”的任务计划,表明已经配置完毕。

SQL Server 2005数据库镜像

2012年6月19日 没有评论

自从SQL Server 2000以来,你已经能够通过使用复制来创建一个备用的服务器、传输日志,以及备份和重新存储了——但是现在微软又引入了一个内建的工具,它可以实现自动的错误恢复。数据库镜像是SQL Server 2005的一个新特性,它允许你将一个SQL Server中的数据库内容镜像到另一个SQL Server上。它还让你可以在发生错误的时候,通过镜像数据库来进行错误恢复。

Edgewood Solutions 的Greg Robidoux 回答了我们一些SQL Server 2005中有关数据库镜像的常见问题,同时还解释了为什么你现在就应该开始测试这个内建的功能来看看它最终是否会给你的环境带来好处。

什么是数据库镜像?

Robidoux:数据库镜像是将数据库事务处理从一个SQL Server数据库移动到不同SQL Server环境中的另一个SQL Server数据库中。镜像的拷贝是一个备用的拷贝,不能直接访问;它只用在错误恢复的情况下。

因为是在SQL Server 2005中新引入的特性,这个功能只能用在,这个版本的软件中。在某种程度上说,它是复制和日志传输的混合体:你所有的事物都在事物级别(复制)上移动(日志传输)到你的数据库的一个镜像拷贝上,同时减少了你在实现日志传输或者复制的时候可能会面临的问题。

复制包括大量的移动部分,并且如果你的数据库计划经常改变的话,要保证你的复制运行得流畅也是困难重重。对于日志传输,为了保证同步,同样需要实现很多的处理,例如创建备份、拷贝备份,以及备份重存。如果有一个进程崩溃了,整个处理过程就崩溃了。

数据库镜像的工作方式是什么?

Robidoux :要进行数据库镜像所需的最小需求包括了两个不同的SQL Server运行环境。主服务器被称为“基本的”,第二个服务器被称作“镜像的”。基本数据库就是你实际用着的数据库,镜像数据库就是你的数据库的备用拷贝。当事务写入你的基本服务器的时候,他们也同样被传送到并写入你的镜像数据库中。

除了基本和镜像之外,你还可以引入另一个可选的组件,名为“证人”。证人数据库是第三个SQL Server 2005运行实例,它是在判断什么时候进行错误恢复的时候,用于基本和镜像之间内部交流。只有当你想实现自动错误恢复的时候用到这个选项。它实现了2比1投票的能力,当我的一个组件不可达,并因此需要进行错误恢复的时候。证人服务器只有在你想实现自动错误恢复的时候才需要用到。

实现的方式是什么?

Robidoux :数据库镜像提供了三种实现的方式。根据你想要用什么方式来进行错误恢复处理来进行选择。

高可用性:这个操作模式选项允许你在两台服务器上同步事务写入,并支持自动错误恢复。要使用这个选项,你必须还要使用一个证人服务器。

高保护:这个选项可以让你在两台服务器上同步事物写入,但是错误恢复是手工的。因为自动的错误恢复不是这个选项的一部分,所以也不会用到证人服务器。

高性能:这个选项不关心两台服务器上的写入是否是同步的,因此在性能上有所提高。当使用这个选项的时候,你只能假设镜像服务器上的所有事情都是成功完成。这个选项只允许手工的错误恢复,因此不会用到证人服务器。

时刻记住将你的数据自动恢复到第二个拷贝才是数据库镜像的真正好处。因此,大多数的实现可能都是使用的高可达性方式。其他的选项仍然提供了内建的错误恢复过程,但是前提是你在发生错误的时候对进行自动的错误恢复怀有极大的兴趣。

数据库镜像可以工作在哪几个版本上?

Robidoux :数据库镜像只能在标准版、开发版和企业版的SQL Server 2005中找到。基本服务器和镜像服务器的SQL Server运行实例都需要是这几个版本。证人服务器可以运行在任何版本的SQL Server上。此外,还有其他的一些特性是SQL Server的开发版和企业版上特有的,但是标准版具有最基本的功能。

总结

现如今,SQL Server 2005的数据库镜像已经关掉了,但是所有的功能仍然存在。数据库镜像可以通过使用检索标志来打开——但是微软现在并不支持这个功能了,所以不要在你的产品环境中运行它。数据库镜像将会在本年年末完全实现并被支持。

要打开这个特性并开始你的测试,你可以看看以前的专家知识解答。微软正在寻找额外的反馈,所以你可以看看它是否可以作为你的SQL Server环境的候选。

——–目前有一个SQL服务器,业务多了常出现拥堵。
看到SQL2005支持镜像服务。
但是我不是为了故障转移,我希望对数据库的更改操作去访问主服务器。让所有的查询操作直接访问镜像服务器。 不知道是否可以实现?SQL允许直接查询镜像服务不?
访问程序可以作修改的。 不一定非要用SQL自己的自动转移。 可以再程序里强制访问镜像服务器或者主服务器。