​​关注嘉为科技,获取运维新知

Exchange后端数据库故障,一般都会是比较严重的紧急故障,因为这会直接影响到大面积用户的正常使用,而且涉及到用户数据。一旦遇到这种级别的故障,管理员往往都是在非常紧张、压力非常大的状态下进行恢复操作,需要在高压状态下迅速做出决策,下一步应该如何做。本文将总结数据库紧急故障下的恢复思路,希望对遇到这种紧急情况的邮件系统管理员有所帮助。

注:以下案例仅针对Exchange 2010版本。

一般邮件数据库的紧急故障,首先判断数据库状态是否正常,是否可以挂载使用;数据库无法挂载使用则可以通过命令判断是否需要进行数据库修复;使用如下图的命令,如果数据库状态并非Clean Shutdown则需要进行修复操作。

如果数据库需要进行修复,则管理员需要判断,是等待数据库完全修复好之后再进行恢复邮件服务?还是优先恢复用户邮箱使用,邮箱数据则等待数据库修复之后再进行恢复?

因为有的时候数据库修复时间较长,用户无法等待这么久的时间。笔者就曾遇到过修复600GB数据库的案例,首先软修复耗费3个多小时,硬修复耗费1个多小时的情况。

如需要紧急优先恢复用户邮箱使用,后续再恢复数据的场景,则可以使用以下两种方案。两种方案基本大同小异,大家可以参考使用。

方案一,在原先的数据库挂上空库使用,后续合并数据

1、剪切目录中所有原始数据库的文件至其他磁盘,并额外备份一份,以防修复过程中出现意外。

2、 挂上空库:

  • a) 加载数据库DB;

  • b) 点击"全是"创建一个空数据库;

  • c) 现在数据库上的用户应该可以访问邮箱并收发邮件了,只是原始的数据会找不到。

3、用命令exeutil /p修复原始数据库文件(*.edb),如下图示例:

4、确认数据库状态为"Clean Shutdown";

5、创建恢复数据库RDB;

New-MailboxDatabase -Recovery -Name name -Server servername -EdbFilePath "path" -LogFolderPath "path"

6、将修好的EDB文件复制到上面创建的RDB的路径下,并重命名为RDB指定的edb文件名称;

7、加载RDB;

8、用以下命令合并DB与RDB的数据;

Get-Mailbox -Database 原DB名 | Restore-Mailbox -RecoveryDatabase RDB

注:也可以在第6步dismount原有的数据库,将空库的文件剪切到RDB的路径下,将修复的数据库挂到原始数据库路径下,在重新mount原始数据库的RDB之前,修改数据库属性,勾上“This database can be overwritten by a restore”。

方案二,将用户邮箱设定到新数据库,后续合并数据

1、创建新的数据库,使用下面的命令将原始数据库中的邮箱全部设置到新的数据库上;

Get-Mailbox -Database 旧数据库名 | Set-Mailbox -Database 新数据库名

2、同第一种方法对故障数据库进行修复,待数据库修复完毕,我们可以:

新建RDB,将修复好的数据库拷入合并数据到新建的数据库,具体步骤可以参照第一部分。

或者将邮箱从临时数据库切回当前数据库。

Get-Mailbox -Database 新数据库名|Set-Mailbox -Database 旧数据库名

运行命令,将数据进行合并。

$mailboxes = Get-Mailbox -Database 旧数据库名

$mailboxes | %{New-MailboxRestoreRequest –SourceStoreMailbox $_.ExchangeGuid –SourceDatabase 新数据库名 –TargetMailbox $_}

注意区分旧数据库名和新数据库名。

以上就是针对邮箱数据库的紧急故障的恢复思路。

总的来说,出现重大紧急故障,不要慌不要乱,保持清晰的思路,做出最佳的判断。但是不论怎样,做好日常运维的管理,防范故障于未然才是最好的办法。

运维案例 | Exchange2010数据库损坏的紧急修复思路的更多相关文章

  1. ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计

    ylbtech-DatabaseDesgin:ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计 DatabaseName:KEFUYUNWEI Model:Admin 用户后台管理 ...

  2. 企业运维 | MySQL关系型数据库在Docker与Kubernetes容器环境中快速搭建部署主从实践

    [点击 关注「 WeiyiGeek」公众号 ] 设为「️ 星标」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 ...

  3. 6 个 Linux 运维典型问题,大牛的分析解决思路在这里 【转】

    作为一名合格的 Linux 运维工程师,一定要有一套清晰.明确的解决故障思路,当问题出现时,才能迅速定位.解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示 ...

  4. 6 个 Linux 运维典型问题,大牛的分析解决思路在这里

    作为一名合格的 Linux 运维工程师,一定要有一套清晰.明确的解决故障思路,当问题出现时,才能迅速定位.解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示 ...

  5. KingbaseES V8R3集群运维案例之---用户自定义表空间管理

    ​案例说明: KingbaseES 数据库支持用户自定义表空间的创建,并建议表空间的文件存储路径配置到数据库的data目录之外.本案例复现了,当用户自定义表空间存储路径配置到data下时,出现的故障问 ...

  6. KingbaseES V8R6集群管理运维案例之---repmgr standby switchover故障

    案例说明: 在KingbaseES V8R6集群备库执行"repmgr standby switchover"时,切换失败,并且在执行过程中,伴随着"repmr stan ...

  7. SQL SERVER运维日记--收缩数据库

    一个小故事 某天,小王正在和HR妹妹闲聊,正HAPPY时,,突然收到系统告警消息,数据库磁盘被剩余空间500M,OMG,不行,磁盘快满了,要是业务要停了,,那就小王只能删库到跑路了,,, 先检查下,有 ...

  8. Oracle日常运维操作总结-数据库的启动和关闭

    下面是工作中对Oracle日常管理操作的一些总结,都是一些基本的oracle操作和SQL语句写法,在此梳理成手册,希望能帮助到初学者(如有梳理不准确之处,希望指出). 一.数据库的启动和关闭 1.1 ...

  9. KingbaseES V8R3集群运维案例之---主库系统down failover切换过程分析

    ​ 案例说明: KingbaseES V8R3集群failover时两个cluster都会触发,但只有一个cluster会调用脚本去执行真正的切换流程,另一个有对应的打印,但不会调用脚本,只是走相关的 ...

随机推荐

  1. 解决Qt下ssl出错的办法

    在使用 QNetworkAccessManager 时出现的ssl错误:qt.network.ssl: QSslSocket: cannot resolve SSL_set_psk_client_ca ...

  2. 理解JS深拷贝

    前言: JS的拷贝(copy),之所以分为深浅两种形式,是因为JS变量的类型存在premitive(字面量)与reference(引用)两种区别.当然,大多数编程语言都存在这种特性. 众所周知,内存包 ...

  3. 旧调重弹Hibernate与Ibatis区别——深入架构设计

    对于一个粗学者而言一言概况就是:ibatis非常简单易学,hibernate相对较复杂,门槛较高.  但是,hibernate对数据库结构提供了较为完整的封装,hibernate的o/r mappin ...

  4. 2017.12.7 URAT 串口通信

    波特率就是发送二进制数据位的速率, 习惯上用 baud 表示, 即我们发送一位二进制数据的持续时间=1/baud. 在通信之前, 单片机 1 和单片机 2 首先都要明确的约定好它们之间的通信波特率, ...

  5. java正则表达式学习笔记

    Java 正则表达式语法 为了更有效的使用正则表达式,需要了解正则表达式语法.正则表达式语法很复杂,可以写出非常高级的表达式.只有通过大量的练习才能掌握这些语法规则. 本篇文字,我们将通过例子了解正则 ...

  6. spider爬虫练习

    package com.jinzhi.spider; import java.io.BufferedReader;import java.io.IOException;import java.io.I ...

  7. shell 环境变量的相关配置文件和配置方法

    shell 环境变量的相关配置文件和配置方法: bash 的配置文件: 全局配置: /etc/profile, /etc/profile.d/*.sh, /etc/bashrc 个人配置 ~/.bas ...

  8. linux查看与修改交换内存配置(解决zabbix-agent启动报错)

    问题 zabbix-agent在一台centos6.5上启动报错: cannot allocate shared memory of size 949056: [28] No space left o ...

  9. Exp2 后门原理与实践 20164303 景圣

    Exp2 后门原理与实践 一.基础问题回答: 1.例举你能想到的一个后门进入到你系统中的可能方式? 答:在网上点击不安全的网页或链接. 2.例举你知道的后门如何启动起来(win及linux)的方式? ...

  10. Linux 内存泄漏检查工具 valgrind

    抄自<从零开始的JSON库教程>,先mark一下,以后再慢慢研究. ======== 引用分割线 ======== 在 Linux.OS X 下,我们可以使用 valgrind 工具(用 ...