Recientemente recibo la siguiente consulta:
Remitente: U.A.
Asunto: Duda OST y EDB restaurada más vieja. ¿qué ocurre? se sincroniza la EDB con los correos más recientes del ost o se eliminan de este?
En el caso de que por alguna razón se me corrompa la EDB y tenga que restaurar de un backup, ¿qué va a pasar con los usuarios que tienen OST con mensajes más nuevos que los de la EDB recuperada?
La realidad es que la respuesta no es tan sencilla, en este artículo vamos a ver que puede implicar esto.
Para empezar, aclarar que únicamente Outlook en modo cache utiliza un archivo OST para almacenar la información localmente. El usar Outlook en modo cache ofrece varias ventajas por ejemplo desde el punto de vista de tráfico en la red.
Volviendo a la consulta, lo primero a considerar es que deberíamos tomar las medidas necesarias para evitar la situación donde dependamos de la información almacenada en los OST. Para esto tenemos varias posibilidades, por ejemplo:
1. A partir de Exchange 2010 es bastante accesible contar con Alta Disponibilidad del correo y de ser posible esta sería la recomendación. Esto implica la creación de un DAG y replicación de bases para redundancia de los datos.
2. Si no se cuenta con alta disponibilidad la recomendación sería separar bases de datos de logs de transacciones. De esta manera si se pierde la unidad que contiene el EDB (archivo de la base) es posible restaurar una base de datos "vieja" y aplicando los logs dejar la base actualizada. Esto no sería una posibilidad si configuramos Circular Logging en las bases de datos.
3. Si tenemos el EDB pero no los logs es probable que sea posible reparar la base y en este caso potencialmente contaríamos con la información actualizada. Si bien esto solo sería recomendable en un caso extremo, podría ser la única posibilidad. Para reparar el EDB usamos Eseutil con el parámetro "/p". Si vamos por este camino la recomendación luego de montar la base es crear una nueva base de datos y mover los buzones a esta. No es recomendable dejar una base reparada en producción.
Asumiendo que igualmente no nos quede otra alternativa que recuperar la información desde el cache del Outlook (OST) tener en consideración que el proceso puede resultar tedioso, requiere intervención por parte del usuario y el resultado puede variar dependiendo de varios factores.
Así que empecemos.
Escenario de punto de partida
Las pruebas detalladas en este artículo fueron realizadas en un ambiente de laboratorio con un servidor con Exchange 2016 y un cliente con Outlook 2013. Si bien es probable que el comportamiento sea similar en otras versiones de Exchange, la única forma de asegurarlo sería probándolo.
Cliente OutlookEn el cliente Outlook se crearon 2 carpetas; "Carpeta1" en la raíz del buzón y "Carpeta 2" como subcarpeta de la bandeja de entrada. Tanto en la bandeja de entrada como en estas carpetas se incluyeron correos:
Esta información la validamos desde el shell de Exchange con Get-MailboxFolderStatistics, en este caso nos interesa el nombre de las carpetas y la cantidad de elementos:
Get-Mailbox usuariotest | Get-MailboxFolderStatistics | FT name,itemsinfolder
Vemos que el usuario "usuariotest" tiene 1 elemento en cada carpeta (Carpeta 1 y 2) y 0 elementos en Elementos enviados.
Ya con el usuario de pruebas preparado estamos listos para avanzar. Para esto realizamos un respaldo completo de la base de datos siguiendo los pasos del siguiente artículo:
Cómo hacer un respaldo completo de las bases de datos de Exchange?Luego de haber respaldado la base de datos generamos más actividad en la casilla de "usuariotest".
En este caso se enviaron 2 correos a bandeja de entrada y se crearon 2 carpetas adicionales; "Carpeta 4" debajo de la bandeja de entrada y "Carpeta 3" en la raíz del buzón:
Esto mismo lo verificamos con Get-MailboxFolderStatistics:
Get-Mailbox usuariotest | Get-MailboxFolderStatistics | FT name,itemsinfolder
Vemos que nos figuran las nuevas carpetas y la bandeja de Elementos Enviados (sent items) ya no figura en 0.
Restauración de base de datos antigua
Así que estamos listos para restaurar la base de datos vieja.
Para asegurarnos que no quede ningún rastro de la base actual hacemos lo siguiente:
1. Desmontar la base de datos
2. Eliminar base y logs de transacciones
Una vez realizado esto, restauramos los datos (a la ubicación original) siguiendo las instrucciones del procedimiento a continuación:
Cómo restaurar una base de datos de Exchange?Ya con la base restaurada repetimos Get-MailboxFolderStatistics:
Get-Mailbox usuariotest | Get-MailboxFolderStatistics | FT name,itemsinfolder
Vemos que ya no tenemos las carpetas 3 y 4 y tenemos la bandeja de elementos enviados en 0 nuevamente.
Prueba 1 - Recuperación de datos desde OST
Para esta primer prueba se mantuvo el cliente Outlook abierto durante todo el proceso.
Así que vamos al Outlook y en paralelo abrimos OWA:
Acá vemos varias cosas interesantes:1. Las carpetas 3 y 4 desaparecieron
2. La Bandeja de Entrada en el Outlook muestra elementos que solo se encuentran localmente, no estan sincronizados con Exchange y por eso no los vemos en OWA
3. Si vamos a Elementos Enviados en Outlook al igual que en el caso de la Bandeja de entrada los elementos se encuentran localmente (en el OST) pero no están sincronizados con Exchange (no los vemos en OWA):
Lo primero que me interesa saber en este caso es como podemos hacer para que se sincronicen los elementos que se muestran en Outlook con el buzón de Exchange.
Veamos que sucede si creamos una carpeta temporal "Bandeja de Entrada 2" y movemos los elementos no sincronizados de la Bandeja de entrada y lo mismo para el caso de los elementos enviados con "Elementos enviados 2":
En este punto vemos que la información se sincroniza y se puede ver tanto en OWA como en Outlook.
Luego de confirmar que al mover un elemento este se sincroniza con Exchange movemos los elementos a las bandejas originales y posteriormente eliminamos las carpetas temporales:
Ahora vemos los elementos sincronizados en la carpeta que corresponde.
Si repetimos Get-MailboxFolderStatistics vemos por ejemplo que ya figuran los correos de la carpeta de Elementos enviados:
Prueba 2 - Recuperación de datos desde OST
En esta prueba repetimos el procedimiento pero esta vez con el cliente Outlook cerrado durante todo el proceso.
En este caso creamos las carpetas "Carpeta 5" y "Carpeta 6", adicionalmente enviamos algunos correos.
Ya con el cliente preparado repetimos lo mencionado en la sección de restauración:
- Desmontar la base
- Eliminar EDB y logs de transacciones
- Restaurar la base de datos
- Verificar la información restaurada con Get-MailboxFolderStatistics
Ahora abrimos el cliente Outlook y en paralelo el OWA:
Varias cosas interesantes:1. En el cliente Outlook seguimos viendo las carpetas 5 y 6 (posteriores al backup)
2. En el OWA vemos sincronizada la carpeta que se encuentra en la raíz del buzón (Carpeta 6) pero no la subcarpeta de Bandeja de Entrada (Carpeta 5)
Confirmamos la información contenida en la carpeta que sincronizó:
Lo único que se sincroniza es la estructura pero no el contenido, por lo que seguimos viendo la información localmente pero en el OWA solo vemos la carpeta.
Si revisamos desde el shell con Get-MailboxFolderStatistics vemos que figura la Carpeta 6 con 0 elementos:
Get-Mailbox usuariotest | Get-MailboxFolderStatistics | ?{$_.name -like "carpeta*"} | FT name,itemsinfolder
Al igual que en el caso anterior si movemos los elementos, estos se sincronizan correctamente:
Conclusión
Se sincronizan los correos más recientes del OST con la base de datos de Exchange luego de haber sido restaurada?En principio vemos que la información no se sincroniza y dependiendo de si el cliente Outlook se encuentra abierto o cerrado el comportamiento puede variar.
Es posible recuperar la información desde el OST?Según las pruebas detalladas en este artículo depende de si el cliente Outlook se encuentra abierto o cerrado durante el proceso de recuperación:
- Si Outlook está abierto, la información contenida en carpetas que no existen dentro del respaldo se pierde
- Si Outlook está cerrado, la información en todos los casos se mantiene localmente en el OST y moviendo los elementos es posible resincronizar (o complementando con PSTs)
Claramente no sería un método confiable ni recomendado, pero teniendo en mente las consideraciones mencionadas puede servir frente al peor de los escenarios.
Por último, tener en cuenta que estas pruebas fueron ejecutadas en ambiente de laboratorio con versiones específicas y en este caso vimos un comportamiento diferente dependiendo de si Outlook estaba abierto o cerrado, si agregamos particularidades específicas a un entorno en producción potencialmente podríamos encontrar resultados diferentes.