- ?
如何用好PostgreSQL的备份与恢复?
史胜
展开
高可用性是数据库的关键指标,简单说就是要做到故障时间短,数据不丢失,能够回退到指定位置(时间/事务)。实现高可用的基础是数据库的备份与恢复技术。
PostgreSQL备份与恢复操作涉及的参数和相关文件较多,内部逻辑关系较复杂,恢复分类方式容易混淆,这些都会影响到PostgreSQL高可用方案的实现。
本文首先介绍通常的数据库故障场景与处理方案,然后通过梳理PostgreSQL数据库备份与恢复的相关文件、参数配置与主要流程,对PostgreSQL恢复方式进行了清晰分类,最后给出了应对典型故障,PostgreSQL备份与恢复的配置方案。
一、故障场景和处理方案
数据库采用数据文件加日志文件,两份数据的存储方式。为提高性能,数据库运行时操作的数据位于内存缓冲区,缓冲区的数据延迟写入数据文件,因此数据文件会处于不一致的状态。数据的变更记录称为日志记录,日志记录以日志文件方式存储在磁盘上。日志记录也是先写入日志缓冲区,再写入日志文件。通过两个简单的规则Write-ahead log(将数据写入数据文件前,先将对应的日志记录写入日志文件)和Force log at commit(事务提交时,将其所有日志记录写入日志文件),可以保证通过日志文件完整的恢复数据文件。
传统的故障类型包括事务内部故障、系统故障、介质(磁盘)故障。对于事务内部故障和系统故障,数据库使用日志文件自动恢复,不需要人工干预。为应对介质故障,DBA需事先备份数据,发生故障后,使用备份数据恢复数据库。
可靠的磁盘设备可以大幅降低介质故障概率,但不能减少数据备份工作。一个常见的故障是数据误操作,即修改了不应该修改的数据。从数据库的角度看,误操作是正常的操作,不会进行自动恢复,只有使用备份数据才能恢复。同时,提供一段时间内历史数据的访问,也是一个常见的需求。
数据的备份与恢复可以分为逻辑与物理两种方式。
逻辑备份与恢复:备份时,使用工具将数据全量导出为外部文件,恢复时,使用工具,将备份文件导入新建的数据库
物理备份与恢复:备份时,配置实例处于归档模式,将生成的日志文件保持到指定位置。使用热备工具直接拷贝数据的数据目录,作为基线数据。恢复时,使用基线数据和日志文件将数据恢复到一致的状态。
逻辑方式不支持增量方式,适用于数据较小情况下的备份与恢复。物理方式支持增量备份,适合大数据量的备份与恢复。本文只讨论物理备份与恢复,下图为物理备份与恢复的基本流程。
在高可用需求中,当单台实例发生故障,需要快速提供备用实例。备份基线数据+日志文件的方式无法满足时间要求。通常采用主备(master/slave)方案,master与slave通过日志流复制进行同步,slave可以提供只读数据访问,当master发送故障后,直接将应用请求转发到slave。
在高可用方案中,需要支持介质故障恢复,实时故障切换,误操作数据恢复,查看历史数据等功能。流复制技术和物理备份与恢复的结合,可以满足数据库高可用的基本要求。
流复制
物理备份与恢复
介质故障恢复
支持
实时故障切换
不支持
误操作数据恢复
查看历史数据
PostgreSQL备份与恢复相关文件、参数配置与主要流程
PostgreSQL日志文件的命名
日志序号 (lsn:log sequence number) 标识日志记录在日志文件中的位置。lsn是一个64位的整数。PostgreSQL运行时生成的日志文件存放在数据目录下的pg_xlog目录,每个日志文件称为一个segment,日志文件大小固定,由wal_segment_size参数指定,日志文件内部划分为多个wal page,每个page的大小由wal_block_size参数指定。
对于一个64位的lsn,可以计算出其所在的xlog文件名。lsn可以划分segment序号高位,segment序号低位和块内序号三个部分。对于segment大小为64M和16M的情况如下:
16M:segment序号高位(32比特)+segment序号低位(8比特)+块内序号(24比特)
64M:segment序号高位(32比特)+segment序号低位(6比特)+块内序号(26比特)
Xlog文件名由三部分组成,格式为:时间线+segment序号高位+segment序号低位,每个部分都表示为一个8位16进制数字。取出lsn中的segment高位和segment低位数值,就可以确定其所在的xlog文件。
使用pg_current_xlog_location()查询当前lsn为0/1C000090(16进制高32位/16进制低32位),当前时间线为1,wal segment大小为64M,
根据64M大小日志文件名格式,可计算出lsn的segment序号高32位为0x0,segment序号低位为0x7, 块内序号为0x90,xlog文件名为000000010000000000000007
使用pg_xlogfile_name_offset()可以查询lsn对应的文件名文件内偏移,与上述计算一致。
checkpoint与control文件
PostgreSQL的数据文件和日志文件互为冗余。当某lsn之前的操作已经全部写入了数据文件后,则该lsn号之前的日志文件可以丢弃。checkpoint机制实现此功能。
checkpoint操作在以下场景执行:管理员手工执行check命令、数据库启动完成恢复、数据库正常关闭,以及后台Checkpoint进程的定期执行。
checkpoint流程可以简单描述为,首先构造checkpoint记录(redo字段为当前已写入日志文件的lsn),然后将数据缓冲区中的脏数据写入磁盘,最后写入checkepoint日志记录(包含checkpoint记录),并将checkpoint记录写入control文件。
512字节的control文件是PostgreSQL的关键数据,用于数据库启动时,判断数据库状态和恢复位置。controlfile文件中记录了数据库的状态,最近checkpoint记录,最小恢复lsn信息和基本的参数配置。数据库的状态包括:
DB_SHUTDOWNED(数据库正常关闭)
DB_SHUTDOWNED_IN_RECOVERY(数据库在恢复时关闭)
DB_SHUTDOWNING(数据库启动到正常关闭过程中崩溃)
DB_IN_CRASH_RECOVERY(数据库在恢复过程中崩溃),
DB_IN_ARCHIVE_RECOVERY(数据库处于归档恢复)
DB_IN_PRODUCTION(数据库处于正常工作状态,等待接受事务处理)
日志文件的生成与归档
PostgreSQL日志文件的segment序号从1开始,一个日志文件写完后,会写入下一个序号的日志文件。checkpoint之后,最近一次checkpoint.redo lsn之前的日志文件可以丢弃。PostgreSQL会循环使用日志文件。checkpoint操作中,会将可丢弃的日志文件改名为未来的日志文件名,并该日志文件重新初始化。PostgreSQL在写新的日志文件时,如果该文件已存在,则使用该文件,否则才会创建新的文件。因此不能从pg_xlog目录中的文件名直接判断当前的日志文件,需要使用pg_current_xlog_location和pg_xlogfile_name_offset函数进行判断。
为持久保存日志文件,需要开启日志归档模式。在该模式下,可丢弃日志文件被删除前,被拷贝到指定目录。在postgres.conf配置文件中设置三个参数:
wal_level=replica 或更高archive_mode = onarchive_command = 'cp %p /mnt/server/archivedir/%f'%p表示pg_xlog目录路径和日志文件名,%f表示日志文件名。 日志被拷贝到/mnt/server/archivedir目录
日志的归档过程如下:
checkpoint操作中,当一个日志文件X可丢弃时,在pg_xlog的archive_status目中生成X.ready文件。
后台archive进程负责日志文件的拷贝。该进程监控archive_status目录,当发现有X.ready文件名后,使用archive_command拷贝文件,并将X.ready命名为X.done
下一次checkpoint操作中,将archive_status目中X.done对应的X日志文件改名。
crash recovery
PostgreSQL正常运行中,直接kill主进程,重启PostgreSQL,将进入crash recovery处理流程,从control文件中checkpoint的redo lsn位置开始,
使用pg_xlog目录中的日志文件进行恢复。PostgreSQL能进行上述处理,是因为将其状态和最近的checkpoint记录在在control文件中。
初始化数据库后,control文件DB状态初始值为shutdown。pg启动时,当control文件DB状态为shutdown,则将状态设置为production,退出恢复过程。在正常关闭服务时,执行checkpoint,并将control文件DB状态设置shutdown。pg启动时,当control文件DB状态为production,则说明发生了crash,会从control文件读取最近checkpoint,从redo lsn开始进行恢复,恢复完成后,将状态设置为production。
热备
备份分为冷备和热备。冷备是正常关闭服务后拷贝文件。热备是服务正常运行中拷贝文件。由于采用数据缓冲区机制,拷贝的文件数据会不一致。根据数据库恢复基本原理,只要确定某lsn之前的日志已经全部写入了数据文件,则在拷贝后的数据文件上,应用该lsn号之后的日志文件,可将数据恢复到一致的状态。
热备包括以下步骤
执行pg_start_backup函数:该函数执行checkpoint,将checkpont信息写入数据目录下的backup_label文件。
拷贝数据目录到指定位置
执行pg_stop_backup函数:该命令删除backup_label文件,写XLOG_BACKUP_END日志,并在pg_xlog目录中写入backup文件,该文件记录了热备开始和结束的lsn信息。
backup文件格式为:热备开始lsn对应的日志文件名.开始lsn的块内偏移.backup
使用归档日志恢复
Crash recovery只能使用pg_log目录中的日志文件进行恢复,启用archive recovery模式后,可以使用其它目录的日志文件(归档日志文件)进行恢复。
在数据目录存创建recover.conf文件,PostgreSQL启动时,读取到该文件,会进入archive recovery流程。在recover.conf中设置日志拷贝命令restore_command,pg恢复过程中,使用该命令将归档日志拷贝到pg_xlog目录后进行恢复。
restore_command = 'cp /mnt/server/archivedir/%f "%p"'%f表示日志文件名 %p表示目标路径和文件名
使用流复制恢复
流复制可以视为archive recovery的一种情况。使用归档日志文件进行恢复时,备机需要获取主机一个完整xlog文件,才可进行恢复。在流复制中,主机产生日志记录后,会及时发送到备机。
在slave节点数据目录的recover.conf中,配置到主机的连接信息primary_conninfo并设置standby_mode为on。
standby_mode = 'on'primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass'
master节点的postgres.conf文件中指定wal_level和发送日志进程的数目max_wal_senders。
wal_level=replica 或更高max_wal_senders=5
在master的pg_hba.conf文件中允许复制连接建立
host replication postgres 192.168.10.0/24 trust
slave启动后会启动wal reciver进程,根据primary_conninfo向master发送连接请求。master收到请求后,启动wal sender进程,wal sender与reciver建立连接。 wal reciver将起始的lsn信息发送给wal sender,wal sender从该lsn开始,将日志记录持续发送给wal reciver,wal reciver将日志写入pg_xlog目录中的日志文件,并通知恢复进程读取文件进行恢复处理。
恢复的退出与时间线
Crash recovery模式下,应用完pg_xlog目录中的所有可用日志文件后,自动退出恢复,进入运行状态。Archive recovery模式下,recovery.conf文件中参数standby_mode为off时,应用完所有日志后,自动退出恢复,进入运行状态。standby_mode为on时,应用完所有日志后,恢复流程不会退出,持续读取可用日志(来自于归档日志文件或流复制),当收到pg_ctl工具发出的promote命令后,才退出恢复流程,进入运行状态。
可以通过设置Recovery Target,使得archive recovery在指定的位置(时间或事务号)停止恢复。在recovery.conf文件配置如下参数,表示恢复流程在恢复完123947事务后结束。
recovery_target_xid = '123947'
时间线(Timeline)是PostgreSQL中的特有的概念。其初始值为1,退出archive recovery时,timeline增1,退出crash recovery时,timeline不变。Timeline反映在日志的文件名中,日志文件的命名格式为:时间线号+segment序号高位+segment序号低位。
引入时间线概念后,日志位置的唯一标识从lsn变为时间线+lsn,checkpoint的结构中记录了当前的timeline。
发生时间线切换时,在pg_xlog目录写入时间线history文件,文件名为"当前timelime.history",文件内记录了时间线切换的历史纪录,每一行记录一条时间线信息,格式为。
parentTLI为时间线id,为切换发生后的lsn,为发生切换的原因。
从时间线history文件中,可以计算出每条时间线的开始和结束lsn。
时间线文件00000003.history,内容为1 0/14000060 no recovery target specified2 0/140420D0 no recovery target specified
该文件含义为当前时间线为3,时间线1的lsn范围[0/0,0/14000060),
时间线2的lsn范围[0/14000060,0/140420D0),时间线3从0/140420D0开始。
使用timeline有以下优点:
切换逻辑显得清晰。从时间线history文件,可以计算出每条时间线的开始和结束lsn。
避免归档日志的覆盖。当备机与主机的归档目录相同时,备机升级为主机后,生成的日志文件名与原主机不同(时间线不同),拷贝到归档目录后,不会覆盖之前的日志文件。
pg_basebackup、pg_rman工具
pg_basebackup和pg_rman为备份与恢复提供良好的操作管理界面,避免手工管理配置文件。
pg_basebackup是PostgreSQL自带的一个远程热备工具,可以将远程PostgreSQL热备到本地目录。其工作流程为,连接到一个远程PostgreSQL,执行pg_start_backup,将整个数据目录传输到本地,执行pg_stop_backup命令。
将地址为192.168.0.1的PostgreSQL,备份到本地usr/local/pgsql/data目录pg_basebackup -h 192.168.0.1 -U test -D /usr/local/pgsql/data
pg_basebackup支持在目标数据目录生成用于流复制的recovery.conf文件。
pg_basebackup -h 192.168.0.1 -U test -R -D /usr/local/pgsql/data
会在/usr/local/pgsql...
- ?
Mysql备份和恢复操作
乐虫虫
展开
备份:
就是将一个当前数据库系统中的“活”着的数据库,转换为一个死的不可操作的“数据文件”的过程。
恢复:
就是将“死”的数据文件,还原为活的可操作的数据库。
备份操作
在没有登录数据库系统的时候(登录前),使用mysql安装文件夹中的bin目录中的mysqldump命令来实现备份:
备份语法:
mysqldump -h要连接的数据库服务器 -u用户名 -p 要备份的数据库名 >要备份到的目标文件完整路径
注意:该命令需要在管理员模式下运行。
恢复操作:
通常的恢复操作,用于两种场景:
1,数据库迁移:从一台电脑,迁移到另一台电脑。
2,数据库本地还原:原数据库可能某种原因,损毁了,需要恢复!
而这里的演示,只能使用本地从一个数据库备份后,还原到另一个数据库中!!!
还原语法:
mysql -h数据库服务器 -u用户名 -p 要恢复的数据库名 < 要恢复的数据库文件完整路径
- ?
MySQL update的数据恢复
牟伟泽
展开
这世界上有后悔药- houhuiyao.cc 后悔药数据恢复 站长语
前面介绍了误删部分数据恢复MySQL恢复delete的数据。部分数据恢复指的是非计划清理的那部分数据,存在恢复的需求的一点建议。通常情况下是碰不到这类问题的,做好准备也可以规避掉类似的问题。
有Delete误删数据,自然就联想到update误更新数据。本文探讨下MySQL update的数据恢复。
实际上update误更新数据的隐蔽性相对于delete更强,少数据了自然相对容易对比数目、数据的连续性等直观感受发现。而数据变更了,尤其是非字符型数据(字符型数据如标题、作者等。非字符型如类别ID,浏览量等)的变更,很难一眼就发现。比如有几十上百个分类属性,文章数几十万,在进行部分特征文章进行分类批量迁移时,误把不需要进行迁移的文章分类一并由编号33更改为了35,而此类文章可能本身就因为什么原因关注度就一般,迁移完都没有感觉哪里不妥。
此类情况很不易发现。虽然举的例子看起来关系很小,只是分类误更新了而已,后续还是可以发现了再调整。但如果这里调整的不是文章,而是有货币属性的,比如积分,代表用户可以透支的信用等级,甚至是利息,存款周期,货物价格等等。
来看一个鲜活的例子:
类似手滑的真实例子远不止这一两例。电商类的平台,想必价格管控复查等规范和流程都是健全的,依然避免不了意外(谁也不知道明天和意外哪个先来)。
虽然啰嗦,依然想再提醒下:后悔药数据恢复再次提醒:
1,首先需要说明的是,生产环境下慎重执行删除操作,除非你确实明白自己在做什么,否则不执行危险动作。
2,有条件的情况下,依靠系统来管理数据和数据库,尽可能降低潜在的管理的风险。
3,数据库有Update、Delete、Insert、Truncate、Drop类操作,先在测试环境执行一次,看结果和预期是否相符。生产环境执行前,先对要操作的表做一个备份,以防万一。
4,备份,备份,备份。
如果真的按照上面的提醒来操作,也几乎不可能会出现误删的情况除非是SQL自身存在逻辑不严谨问题 :)
如果确实发现误更新了,怎么办?1,和delete相比,update有一个问题,就是要确认哪个数据才是最终更新前的可靠数据。Delete删除时,所删除掉的数据就是本条记录最终版本的数据,找回这条数据即可完整的恢复好本条记录。而update的变更版本多,所以确切的找回那条数据并能确认就是更新前的版本是一大关键,否则找回来的旧版本数据和当前误更新了的数据本质上是没有什么区别的:都不准。
2,如果开启了binlog且日志完整,则相对容易找回数据。将binlog解析出来后,把最终导致误更新数据的那条SQL注释或者删除掉然后恢复数据即可,可以可以参考MySQL恢复误删的数据 。
3,从备份中把数据恢复出来,进行比对。这里需要注意的依然是数据的有效性问题,备份的数据是历史版本旧数据,无法确认更新前的最终版本。可以用于参考,运气好的话,误更新的字段内容也许备份前就是最终版本,可以直接使用。
4,有书面的单据或者其他纸质的内容、邮件等,可以用于确认数据的,都可以用于找回数据。
如何最大限度避免误更新?1,不要使用数据库,则没有烦恼!
2,参考上面的提醒。
3,严谨的操作和执行到位的流程,可以很好的避免这类问题。
4,找我们后悔药数据恢复houhuiyao.cc来提供服务吧,我们又稳又好用,这些操作都熟。
- ?
PHPvod如何备份、恢复、修复数据库
梦山
展开
phpvod怎么备份数据库,phpvod如何恢复数据库。
登录phpvod网站后台,输入管理员的账号和密码,点击下方"提交"按钮登录。
进入后台之后,点击左侧菜单最下方的"数据库管理",选择"备份数据库",如下图所示。
勾选需要备份的数据库表,点击下方的"提交"按钮完成备份。
点击"数据库管理"下方的"恢复数据库",如下图所示。
选择需要恢复的数据库进行操作,如下图所示。
点击"数据库管理"下方的"数据库修复",如下图所示。
勾选需要修复的数据库表文件,选择修复表或优化表,点击"提交"按钮,如下图所示。
- ?
如何修复SQL Server数据库中的MDF文件
Lemvig
展开
数据库文件对所有用户都很重要, 并存储大量重要信息。了解有关修复损坏的 SQL 数据库文件的手动和专业解决方案。 今天的MS SQL Server是最常用的关系数据库之一。 它具有先进的内部结构并提供很高的可靠性。 这就是大多数组织使用SQL Server数据库来保存所有关键业务数据的原因。 但是也有一些情况,如病毒感染,操作系统故障,文件系统损坏等等,因为SQL数据库变得损坏,并且存储在其中的所有数据都不可访问。 从SQL Server中的损坏状态修复.mdf文件不是一件容易的事。 用户可以使用手动技术来修复SQL数据库中损坏的MDF文件,但这不是一种可靠的方法,因为不能保证使用手动方法进行数据恢复。 但是,也有第三方工具,如SysTools SQL Recovery,声称以完美的方式修复.mdf文件。 因此,在这篇文章中,我们将讨论修复损坏的SQL数据库的最佳解决方案。 但在此之前,了解SQL数据库中损坏的原因很重要。 损坏的SQL数据库背后的原因 在SQL Server数据库中出现腐败背后可能有各种可能的原因。 众所周知,SQL数据库的MDF文件是主数据库文件。 它们存储所有用户数据,因此MDF文件中的损坏可能会损坏整个数据库。 因此,首先,我们将讨论MDF文件损坏背后的所有可能的原因: 存储介质中存储所有MDF文件的损坏。 如果用户将SQL数据库存储在压缩文件夹中,则MDF文件可能会损坏。 任何修改或更改都是在SQL Server帐户中完成的。 用户可能意外删除了一些数据。 如果文件头损坏,则会导致MDF文件损坏。 损坏的磁盘驱动程序。 如果SQL数据库正在使用,并且在两者之间存在网络故障,则会导致MDF文件损坏。 导致MDF文件损坏的其他可能原因包括病毒攻击,硬盘故障,系统异常关机和突然断电。 因此,如果MDF文件损坏,那么SQL数据库变得不可访问。 而且,如果用户试图访问损坏的数据库,则可能会遇到一些错误消息。 下面列出了最常遇到的错误消息: 存储所有MDF文件的存储介质中损坏。 如果用户将SQL数据库存储在压缩文件夹中,则MDF文件可能会损坏。 元数据损坏错误。 用户可能意外删除了一些数据。 SQL Server/Msg 825 (读取重试) 中 SQL Server/Msg 824 中的 Msg 823 错误。 除此之外,用户在访问损坏的SQL数据库时可能会遇到其他一些错误消息。 因此,数据库管理员有责任立即采取措施并防止任何类型的数据丢失。 如何通过手动修复MDF文件 有几种手动方法可用于修复损坏的SQL数据库,但手动解决方案不能保证数据库恢复。 为了恢复损坏的数据库,用户可以使用SQL Server的NDF文件(日志文件)。但是, 只有日志文件不足以在大多数损坏情况下还原数据库, 因为有时, 由于严重损坏, 备份文件也会损坏。 修复和恢复损坏的SQL数据库的另一种可能方法是在数据库控制台命令(即DBCC CHECKDB)的帮助下进行的。这对于在 SQL server 数据库中修复小的损坏问题非常有用。 使用DBCC CHECKDB修复损坏的MDF文件的步骤 首先,您需要通过执行以下查询在损坏的SQL数据库上运行DBCC CHECKDB:
注意:您还可以使用DBCC CHECKDB定义一些选项,如no_infomsgs和infomsgs。 之后,您需要检查索引ID。 情况1:如果索引ID> 1,则将其放下并重新创建。 情况2:如果索引ID为0或1,则再次运行DBCC CHECKDB并使用适当的修复选项,如repair_rebuild,repair_fast或repair_allow_data_loss。
现在,为了确保零损坏,执行DBCC CHECKDB并显示一条消息,即DBCC CHECKDB在name_of_your_corrupt_database中显示0个分配错误和0个一致性错误。 如果手动方法失败怎么办? 手动解决方案并不总是一个万无一失的解决方案。 他们可能有一些限制。 例如,在严重损坏的MDF文件的情况下,手动失败很容易。 而且,手动解决方案要求用户在技术上强大。 因此,建议使用一些可靠的第三方软件来修复损坏的SQL数据库。 SQL数据库恢复程序是修复MDF文件中任何类型的损坏问题的最佳实用程序之一。 SQL恢复工具能够修复损坏的SQL数据库文件 - MDF和NDF。 它是一款无风险软件,可恢复存储在其中的所有数据项,如表格,规则,触发器,函数等。除此之外,软件只需几次点击即可修复数据库,而不会浪费任何时间。 从MDF文件修复损坏的SQL数据库的步骤 在本地机器上下载并运行SQL Recovery Program。
之后,打开您选择的损坏的SQL数据库文件(.mdf文件)。
选择扫描模式,然后单击确定。
该工具将提供存储在损坏的MDF文件中的数据项的预览。
点击导出保存恢复的数据库。
结论 数据库文件对于任何用户都非常重要,因为它们存储大量重要信息。 SQL数据库中的任何类型的损坏问题都可能给用户造成麻烦。 因此,为了克服所有这些问题,我们讨论了手动和专业解决方案来修复损坏的SQL数据库文件。
更多阅读
12种最受欢迎的编程语言
软考网络工程师准备篇(二):上午答题技巧
软考网络工程师备考篇(一):考前准备
- ?
实操有效的数据恢复小工具
易梦
展开
借助专业的工具和手段对数据进行读取、抢救和恢复的技术称为数据恢复技术。
根据不同的存储介质,数据恢复可分为硬盘数据恢复、移动存储设备及多媒体卡数据恢复、光盘数据恢复、软盘数据恢复。本文分别介绍数据无法正常读取的原因及恢复方法。
硬盘数据恢复
故障原因:
1.物理故障
包括电机不转、通电后磁头错位、磁头损坏、盘片划伤等,可采用更换、加载、定位等方法进行数据修复。
2.其他原因
系统不能正常启动密码或权限丢失MBR分区丢失误操作误删除误分区病毒破坏黑客攻击RAID磁盘阵列失效
恢复数据包括:Office文档、图片、视频、数据库文件、邮件等
推荐工具:
R-Studio
美国的R-tools公司的核心产品,目前市面上认可度比较高的数据恢复工具,可针对文档、图片、视频、文件、数据库文件等超过200种文件类型进行恢复,并支持对分区以及Raid阵列的恢复。
Ontrack EasyRecovery
操作简单的数据恢复工具,针对常见的文档、图片、视频、文件等数据类型可以进行快速的扫描和恢复。
Recover数据恢复三件套
澳大利亚经典数据恢复软件,分为文件恢复、图片恢复和邮件恢复三个组件,每个组件各司其职,其中文件恢复组件是核心组件,具备其他两个组件的功能,可以对常见文件、图片、视频、邮件等进行数据恢复。
Stellar Phoenix Windows Data Recovery
印度Stellar公司出品,专门针对Windows系统中的文件恢复,可对文档、图片、视频、邮件以及常用文件恢复。
Stellar SQL Database Toolkit(SQL数据库恢复工具组)
Stellar公司产品,主要针对SQL数据库的文件恢复。
Stellar Outlook Toolkit(Outlook邮件恢复工具组)
Stellar公司产品,针对Outlook的专门工具,可以对损坏Outlook文件进行修复,并支持对Outlook生成的pst文件进行备份、复制、拆分等操作。
移动存储设备及多媒体卡数据恢复
故障原因:
常见短路、过电损坏、芯片损坏、闪存无法读取等
设备包括:U盘、闪存、Mp4、CF、SD、XD、MMC、SM、SMC、记忆棒等
推荐工具:
效率源Flash
光盘数据恢复
故障原因:盘片划伤
推荐工具:
VMI Hybrid2.0光盘修复工具
VMI2550i光盘修复工具
软盘数据恢复
故障原因:
数据介质损坏出现的电路故障、磁头偏移等
恢复方法:采用更换、加载、定位等方法进行数据修复
- ?
SQL2000数据库的备份与还原
云悠然
展开
一、数据库备份
1、打开企业管理器,如图所示操作
2、一般选择完全备份,添加备份目的
3、选择备份目录,输入备份数据库名称,接着按下图操作即可,直至完成备份
二、数据库还原
2、如果之前备份了库,在此处可以直接还原,请选择“在现有数据库上强制还原”
2、从设备还原,比如从别的服务器上拷过来的备份库,选择设备,添加还原设备,如下图操作即可,直至还原完成
3、如果还原时提示数据库正在被占用,可通过分离功能清除连接再进行还原;注意:使用分离功能只是清除连接,不要点“确定”真的分离数据库
- ?
MySQL数据库误删恢复
蓝血
展开
这世界上有后悔药-houhuiyao.cc 后悔药数据恢复 站长语
前面介绍了MySQL数据库在使用InnoDB引擎时,如果误删了数据表,在共享表空间MySQL数据表InnoDB引擎表误删恢复(共享表空间ibdata1)和独立表空间MySQL数据表InnoDB引擎表误删恢复(独立表空间innodb_file_per_table=1)的情况下如何恢复数据。
本文将探讨下MySQL数据库误删恢复。
后悔药数据恢复提醒您:
1,首先需要说明的是,生产环境下慎重执行删除操作,除非你确实明白自己在做什么,否则不执行危险动作。
2,有条件的情况下,依靠系统来管理数据和数据库,尽可能降低依潜在的管理的风险。
3,数据库有Update、Delete、Insert、Truncate、Drop类操作,先在测试环境执行一次,看结果和预期是否相符。生产环境执行前,先对要操作的表做一个备份,以防万一。后续将针对每个危险动作如何在生产执行时即准备好危机应对动作做一个探讨。
4,备份,备份,备份。
数据库误删,不管是使用的rm -rf testdb还是drop database testdb,最终的效果都是一样的:数据目录下的testdb目录及目录下的文件都不可见了(和之前介绍的Linux下恢复删除的情况一致),实际上文件内容依然还在那里如果没有数据覆盖上去的话。
#测试环境准备命令:mysql> create database testdb;Query OK, 1 row affected (0.08 sec)mysql> mysql> use testdb; Database changed mysql> mysql> create table aa(id int not null primary key, name varchar(20)); Query OK, 0 rows affected (0.34 sec)mysql> mysql> insert into aa values(1,'a'),(2,'b'),(3,'c'),(4,'d'); Query OK, 4 rows affected (0.17 sec) Records: 4 Duplicates: 0 Warnings: 0mysql> select * from aa; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | | 3 | c | | 4 | d | +----+------+ 4 rows in set (0.00 sec)
testdb数据库表文件:
MySQL数据库恢复#删除数据库:#使用SQL命令 drop database testdb;#使用rm rm -rf testdb/
那么,这种情况下的数据库恢复动作就简单了,参考前面介绍Innodb引擎时的恢复方法即可:
1,完整的恢复testdb目录及目录下的文件即可找回删除掉的库名和表数据,然后针对具体的表引擎,将数据重新导入到数据库中即可。
2,如果找回的是非完整的,那么操作思路是一样的,能恢复多少恢复多少,剩余的如果实在找不回来,从最近一次的备份里提取,然后依靠其他手段比如单据来补全数据。
还是不知道怎么恢复MySQL数据库?找后悔药MySQL数据恢复houhuiyao.cc吧!
- ?
如何通过Mysql的二进制日志恢复数据库数据
林地
展开
经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响。所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlog)来恢复数据。
系统环境:
操作系统:CentOS 6.5 X64 (虚拟机);
WEB服务:PHP+Mysql+apache;
网站:为方便,直接在本地用蝉知系统搭建一个DEMO站点;
操作步骤:
1.开启binlog功能及基本操作;
2.往站点添加数据;
3.刷新binlog日志;
4.删除数据;
5.binlog日志内容解析;
6.恢复指定数据;
1.开启binlog功能及基本操作
要使用Mysql的binlog日志功能,首先要在Mysql的配置文件中开启该功能,操作很简单。找到Mysql的配置文件,在文件中添加一行”log_bin = mysql-bin”即可。其实在我安装的各种Mysql环境中,该功能通常都是默认开启的。
开启binlog功能后,在mysql的数据库目录下就会有诸如mysql-bin.000001、mysql-bin.000002等文件,这就是mysql的二进制日志文件。每当mysql启动或手动刷新日志后都会新建一个二进制日志文件。
首先我们mysql命令行中,用”show master logs”命令查看已有的binlog文件。
2.往站点添加数据
在网站后台文章模块里,我添加了几条测试数据。
3.刷新binlog日志
此前mysql的binlog文件为mysql-bin.000001,并且在网站后台往数据库中添加了三篇文章。现在我们刷新binlog日志,会生成新的mysql-bin.000002文件,如下:
flushlogs; showmasterlogs;
4.删除数据
这里我把刚才添加的三篇文章都删除掉。
5.binlog日志内容解析
Mysql的二进制日志文件记录的mysql的操作,比如刚才的删除操作,我们来看下日志文件的具体内容。
使用mysql的mysqlbinlog命令:
mysqlbinlog/data/mysql/mysql-bin.000002
注意:因为我本地mysqlbinlog无法识别binlog配置中的default-character-set=utf8,所以这里我在命令中加上了” –no-defaults”才起作用,大家引以为鉴。
下面是日志内容部分截图:
6.恢复指定数据;
在通过mysql的binlog日志恢复数据时,我们可以指定恢复到具体时间点,这有点像服务器快照管理。所以我们现在要恢复刚才删除的那篇文章,可以从删除之前找一个时间点,并恢复到那个时间点即可。
有关mysqlbinlog命令的使用方法,我们可以通过mysqlbinlog的帮助命令进行查看,如下:
mysqlbinlog–no-defaults–help
如帮助文档所示,可以通过指定时间或指定位置来恢复数据,这里我以指定时间为例给大家演示。
我们来查看下日志文件mysql-bin.000001,如下:
mysqlbinlog-no--defaults/data/mysql/mysql-bin.000001
通过前面操作步骤我们知道,在删除数据之前,我们生成了mysql-bin.000002日志文件,所以我们只要恢复到这个时间点即可,上图中我已找到了这个时间。
命令如下:
mysqlbinlog–no-defaults–stop-datetime=’2017-04-1109:48:48’/data/mysql/mysql-bin.000001|mysql–uroot–p123456
这时我们在看后台,发现刚才删除的三篇文章都已恢复回来了,从而到达我们期望的目的。
总结:
本文和大家分享了如何通过mysql的二进制日志文件恢复数据。但还是要提醒大家,在平时要做好网站数据备份,现在的一些主流CMS建站系统都会内置数据库备份功能,比如这里我用的蝉知系统,数据是网站的命脉,做好数据备份以避免后期不必要的麻烦或损失。
- ?
SQL2008数据库的备份与还原
唐储
展开
一、上期我们分享了SQL2000数据库的备份与还原,这期我们再来分享下SQL2008数据库的备份与还原。
二、SQL2008数据库的备份
1、登录sql server management studio
2、选择要备份的数据库,右键—任务—备份
3、添加备份目标,并输入备份文件的名称
4、这是选择好后的显示页面,确定再确定即开始备份并完成
三、数据库还原
1、选择要还原的数据库—右键—任务—还原
2、如图,刚才备份的数据库会直接显示,可以直接还原
3、注意选项中要勾选“覆盖现有数据库”,“还原为”的路径一定确保正确
4、另外一种情况是通过源设备选择还原的文件
5、“文件类型”要选择所有文件,否则看不到备份是文件
6、勾选“还原”,确定即可完成还原
如何恢复数据库
-
1、只需3秒快速实现求和
-
2、如何快速填充序号
-
3、如何自动填充序号(公式法)
-
4、数据条的神奇应用
-
5、多文本快速合并
-
6、查找与替换的不同玩法
-
7、快速定位到指定区域
-
8、数据排序、工资条制作
-
9、快速筛选(模糊、精确筛选)
-
10、快速插入空行
-
11、快速删除空行
-
12.快速跳转到天涯海角
-
13、.同时查看两个Excel文件
-
14、用条件格式扮靓报表
-
15、一键插入Excel图表
-
16、批量处理行高、列宽
-
17、利用拆分功能查看数据
-
18、批量录入相同内容
-
19、工作表快速跳转
-
20、批量录入表格模板(精品课程)
-
21、Excel函数与公式的应用、公式循环引用的查找
-
22、IF函数单条件判断同比增长
-
23、用sum函数 格式相同,连续多表数据汇总
-
24、excel快捷键
-
25、VLOOKUP函数——根据销售员匹配销售额
-
26、统计各部门销售总额
-
27、统计指定条件个数
-
28、怎样输入当前日期和时间、星期数
-
29、销售业绩排名
-
30、Sumproduct函数-万能函数(销售额汇总求和)
-
31、根据销售员,地区,商品名称汇总
-
32、批量替换PPT字体
-
33、给销售额数据批量添加万元单位
-
34、一秒快速核对两列数据
-
35、快速定位到指定单元格或区域
-
36、快速制作双行标题工资条
-
37、给你的表格做个瘦身
-
38、快速打开常用的Excel文件
-
39、快速打开多个Excel文件
-
40、利用创建组—快速隐藏/展开多列数据
-
41、快速制作下拉菜单
-
42、复制粘贴表格,如何保留数据源列宽格式一致?
-
43、两列数据位置互换
-
44、1秒钟扮靓报表——如何实现表格隔行换色
-
45、快速删除重复记录——保留唯一值
-
46、快速向下填充、向右填充,文本或公式
-
47、给Excel文件添加密码
-
48、插入带图片的批注
-
49、输入公式后不计算?
-
50、如何设置单元格缩进
-
51、快速解决Excel表格总显示货币格式
-
52、批量添加万元单位
-
53、你会四舍五入么?
-
54、用RAND函数机选彩票
-
55、冻结首行你会么?
-
56、超链接的高级应用
-
57、IFERROR函数-屏蔽错误值
-
58、批量填充颜色
-
59、录入数据
-
60、快速输入工号
-
61、快速行列转置
-
62、自定义缩放界面
-
63、多个单元格同时输入
-
64、如何计算立方米?
-
65、快速制作双行标题工资条
-
66、输入带方框的√和×
-
67、快速将姓名对齐
-
68、快速输入性别
-
69、按单位职务排序
-
70、自动计算合同到期日期
-
71、计算时间间隔
-
72、日期和时间的拆分
-
73、快速处理不规范的日期格式
-
74、快速填充合并单元格
-
75、效率加倍的快捷键
-
76、快速复制表格和对象
-
77、快速创建工作表副本
-
78、快速复制序列号
-
79、快速显示公式
-
80、多个单元格同时输入
-
81、快速调整显示比例
-
82、快速自动填充
-
83、快速填充(Ctrl+E)
-
84、Ctrl与数字键结合
-
85、快速将多列数据整理为1列
-
86、快速将1列数据拆分为多列
-
87、快速定位公式
-
88、快速录入数据
-
89、快速累计求和
-
90、身份证号码显示为0怎么办?
-
91、快速制作斜线表头
-
92、文本竖向显示
-
93、神奇的监视窗口
-
94、不一样的格式刷
-
95、快速美化图表
-
96、快速生成当前日期
-
97、快速找出循环引用
-
98、快速提取信息
-
99、二维表快速转换为一维表
-
100、快速多表合并