Exchange перенос базы на другой диск
This cmdlet is available only in on-premises Exchange.
Use the Move-DatabasePath cmdlet to set a new path to the location of a database on the specified Mailbox server and to move the related files to that location.
For information about the parameter sets in the Syntax section below, see Exchange cmdlet syntax.
Как переименовать и перенести почтовую базу по умолчанию в Exchange Server?
Сначала нужно определить имя базы данных, путь к файлу EDB и логам. Запустите консоль Exchange Management Shell (EMS) или подключитесь к своему Exchange Server удаленно с помощью PowerShell:
Чтобы изменить имя базы, воспользуйтесь командлетом Set-MailboxDatabase (не обязательно отмонтировать базу):
Set-MailboxDatabase “Mailbox Database 1200388344” -Name MBX3-01
Exchange по умолчанию помещает базу данных на системный диск (C:\). Обязательно перенесите файлы базы данных на другой диск. Благодаря этому рост размена edb файла и лог файлов почтовой базы Exchange не займет все свободное место на системном диске Windows.
Для переноса базы данных используется PowerShell командлет Move-DatabasePath. Сначала нужно отмонтировать базу:
Dismount-Database -Identity MBX3-01
Затем запустите перенос файлов базы данных и лог-файлов:
Move-DatabasePath MBX3-01 -EdbFilePath E:\DB\MBX3-01.edb -LogFolderPath E:\DB\ MBX3-01
После окончания переноса можно смонтировать базу:
Mount-Database -Identity MBX3-01
Комментарии
Перенос почтовой базы Exchange 2010 с помощью Exchange Management Shell
Ту же самую операция можно выполнить и из командной строки Exchange Management Shell, для чего введите следующую команду:
И так же как в графическом мастере появится запрос о необходимости подтвердить отмонтирование почтового хранилища перед его переносом.
Outputs
To see the return types, which are also known as output types, that this cmdlet accepts, see Cmdlet Input and Output Types. If the Output Type field is blank, the cmdlet doesn't return data.
29.08.2012
itpro
Exchange
Один комментарий
В этой статье поговорим о том, как в Exchange 2010 можно перенести базу с почтовыми ящиками в другой каталог. Напомним, что по умолчанию дефолтная база на сервере Exchange с ролью Mailbox создается в каталоге Mailbox в директории, куда установлен сам сервер Exchange (обычно это C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\Mailbox Database). Естественно, у большинства администраторов возникает желание перенести почтовую базу и транзакционные логи в другой каталог. Сделать это можно из графической консоли Exchange Management Console (EMC) или же из командной строки Exchange Management Shell
Обычно такой перенос можно осуществить, если база пустая или содержит небольшое количество ящиков пользователей (ведь во время такого переноса база будет размонтирована), в противном случае, если длительный простой критичен, лучше создать новую базу в новом месте и перенести ящики из старой базы в новую (после чего старое хранилище можно удалить).
Восстановление базы Exchange Servera 2016 (сценарий 2)
Моделируем другую ситуацию. База "покараптилась", админ безответственно разместил ее на выделенном диске без резервирования (без RAID-а), появились проблемы доступности диска либо файлов на нем. Пользователи в панике, хотят работать. Шаг 1 ------------------------------------------------------------------------------------------------------------------------ 1. Создаем чистую базу данных (можно через Exchange Admin Centr) и монтируем ее: New-MailboxDatabase –Name “TempDB” –Server Lon-MBX1 -EdbFilePath C:\NewFolder\ TempDB .edb –LogFolderPath C:\NewFolder\ Mount - Database “ TempDB ” Выбираем все почтовые ящики, которые хранятся в битой базе данных и перекидываем их в новую базу (старая база при этом отмонтирована и недоступна). Get-Mailbox –Database MBD | Set-Mailbox –Database “TempDB1” Так-же рекомендуем перезапустить IIS - команда iisreset Пользователи при подключении увидят чистые почтовые ящики! Станут нарабатывать новую
Parameters
The ConfigurationOnly switch specifies whether to change the configuration of the database without moving any files. You don't need to specify a value with this switch.
If you don't use this switch, the configuration of the database changes and the files are moved.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Applies to: | Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019 |
The Confirm switch specifies whether to show or hide the confirmation prompt. How this switch affects the cmdlet depends on if the cmdlet requires confirmation before proceeding.
- Destructive cmdlets (for example, Remove-* cmdlets) have a built-in pause that forces you to acknowledge the command before proceeding. For these cmdlets, you can skip the confirmation prompt by using this exact syntax: -Confirm:$false .
- Most other cmdlets (for example, New-* and Set-* cmdlets) don't have a built-in pause. For these cmdlets, specifying the Confirm switch without a value introduces a pause that forces you acknowledge the command before proceeding.
Type: | Fqdn |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Applies to: | Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019 |
The EdbFilePath parameter specifies a new file path for the database. All current database files are moved to this location. The default location is %ExchangeInstallPath%Mailbox\LocalCopies\MBDatabase.edb . This file path can't be the same as the path for the backup copy of the database.
Type: | EdbFilePath |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Applies to: | Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019 |
The Force switch hides warning or confirmation messages. You don't need to specify a value with this switch.
You can use this switch to run tasks programmatically where prompting for administrative input is inappropriate.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Applies to: | Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019 |
The Identity parameter specifies the database that you want to move. You can use any value that uniquely identifies the database. For example:
- Name
- Distinguished name (DN)
- GUID
The LogFolderPath parameter specifies the folder where log files are stored.
Type: | NonRootLocalLongFullPath |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Applies to: | Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019 |
The WhatIf switch simulates the actions of the command. You can use this switch to view the changes that would occur without actually applying those changes. You don't need to specify a value with this switch.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Applies to: | Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019 |
Перемещения почтовых ящиков с помощью Exchange Admin Center
С помощью Exchange Admin Center вы можете переместить один или несколько ящиков пользователей.
Я сам практически не пользуюсь возможностями перемещения ящиков через EAC, т.к. с помощью PowerShell можно выполнить эти действия гораздо удобнее и быстрее.
Description
When you use the Move-DatabasePath cmdlet, consider the following:
- This cmdlet fails if it's run while the database is being backed up.
- If the specified database is mounted when this cmdlet is run, the database is automatically dismounted and then remounted, and is unavailable to users while it's dismounted.
- In Exchange 2013 or earlier, you can only run this cmdlet on the affected Mailbox server. If you include the ConfigurationOnly parameter with the value $true, you can run the cmdlet on an administrator's workstation. This does not apply to Exchange 2016 or later (you can run the cmdlet anywhere).
- This cmdlet can't be run against replicated mailbox databases. To move the path of a replicated database, you must first remove all replicated copies, and then you can perform the move operation. After the move operation is complete, you can add copies of the mailbox database.
You need to be assigned permissions before you can run this cmdlet. Although this topic lists all parameters for the cmdlet, you may not have access to some parameters if they're not included in the permissions assigned to you. To find the permissions required to run any cmdlet or parameter in your organization, see Find the permissions required to run any Exchange cmdlet.
Перенос базы Exchange 2010, состоявшей в DAG
В том случае, если почтовая база Exchange находится в группе DAG (Database Availability Group) и реплицируется на другие сервера, пункт Move Database Path будет недоступен. В этом случае для осуществления переноса придется удалить все копии за исключением активной, после чего можно будет осуществить перенос и вновь настроить пассивные копии. Не забудьте, что после переноса почтовые базы на всех серверах DAG должны находиться в одинаковых каталогах. Опять же не забудьте про простой почты, и в принципе в этом случае предпочтительнее создать новую базу, настроить ее копии и осуществить перенос ящиков, а не базы целиком.
20.04.2022
itpro
Exchange, PowerShell
Комментариев пока нет
При установке нового Exchange Server 2019/2016/2013/2010 с ролью почтовых ящиков (mailbox) автоматически создается база по умолчанию. База создается в каталоге установки Exchange (C:\Program Files\Microsoft\Exchange Server\V15\Mailbox). Имя базы данных генерируется также автоматически (в моем случае это «Mailbox Database 1200388344»). Если вы попробуете удалить почтовую базу по умолчанию, вы столкнетесь с ошибкой “ This mailbox database contains one or more mailboxes ”. Дело в том, что в этой почтовой базе хранится ряд системных почтовых ящиков, которые необходимы для работы Exchange.
Syntax
Inputs
To see the input types that this cmdlet accepts, see Cmdlet Input and Output Types. If the Input Type field for a cmdlet is blank, the cmdlet doesn't accept input data.
Example 1
This example sets a new path for the mailbox database specified by the mailbox database name. To perform the move operation, the database must be temporarily dismounted, making it inaccessible to all users. If the database is currently dismounted, it isn't remounted upon completion.
Перенос базы Exchange 2010 с помощью EMC
Откройте консоль EMC и перейдите в раздел Organization Configuration->Mailbox. На вкладке со списком почтовых баз (Database Management), щелкните правой кнопкой мыши по базе, которую хотите перенести и выберите пункт меню Move Database Path.
Укажите новое местоположение файла и путь к файлам журнала, затем нажмите кнопку Move.
Перед началом переноса почтовая база будет отмонтирована, что вы и должны далее подтвердить.
После этого начнется перенос фалов, продолжительность которого зависит от размера базы и скорости дисков.
Examples
Управление перемещением ящиков Exchange с помощью PowerShell
Чтобы узнать, в какой почтовой базе находится ящик пользователя, запустите Exchange Management Shell и выполните команду:
Get-Mailbox aaivanov| Format-List Database
В этом примере ящик пользователя находится в базе DB01.
Для создания локального запроса на перенос ящика используется командлет New-MoveRequest. Например:
New-MoveRequest -Identity aaivanov -TargetDatabase "MBX01" –BadItemLimit 10
Кроме имени пользователя важные параметры это:
- TargetDatabase – имя целевой почтовой базы, в которую нужно переместить ящик;
- BadItemLimit – количество поврежденных элементов в ящике, которое можно пропустить (игнорировать) при переносе ящике.
Если указать BadItemLimit 0, значит при наличии хотя бы одного поврежденного элемента, ящик не будет перемещен и останется в исходной базе. Если вы указали значение BadItemLimit > 50, нужно дополнительно указывать ключ AcceptLargeDataLoss.
Для переноса всех ящиков из одной почтовой базы Exchange в другую, используйте команду:
Get-Mailbox -Database DB01 -ResultSize Unlimited | New-MoveRequest -TargetDatabase DB02
Get-Mailbox -Database DB01 -Arbitration | New-MoveRequest -TargetDatabase DB02
В конфигурационном файле MSExchangeMailboxReplication.exe.config (C:\Program Files\Microsoft\Exchange Server\V15\Bin) можно изменить настройки миграции ящиков. Например, вы можете указать сколько одновременных операций перемещения поддерживается для одной базы или сервера. Это параметры MaxActiveMovesPerSourceMDB, MaxActiveMovesPerTargetMDB, MaxActiveMovesPerSourceServer, MaxActiveMovesPerTargetServer.
В зависимости от размер ящика и местоположения целевого сервера, его перенос может занять длительное время. Для отслеживания статуса миграции почтового ящика в % используется командлет Get-MoveRequestStatistics.
Get-MoveRequestStatistics -Identity aaivanov
В данном примере статус переноса — InProgress, процент завершения (PercentComplete) – 26%.
Можно вывести статус всех запросов на перемещения ящиков в организации:
После того, как перенос завершен, значение PercentComplete достигнет 100, а статус переноса изменится на Completed.
Get-MoveRequest | where | Get-MoveRequestStatistics | ft -a displayname,status*,percent
Вывести все ящики в процессе перемещения или ожидания в очереди:
Get-MoveRequest -movestatus inprogress
Get-MoveRequest -movestatus queued
Если при переносе произошла ошибка, можно вывести ее командой:
Get-MoveRequest aaivanov | Get-MoveRequestStatistics | fl *failure*, message
Для получения подробной информации об ошибках миграции ящиков, используйте:
Get-MoveRequest -resultsize unlimited | Where-Object | Get-MoveRequestStatistics -IncludeReport | select DisplayName, Message, FailureType, FailureSide, FailureTimeStamp, *bad*, *large*, Report, Identity | fl
Если нужно отменить перемещение ящика, выполните:
Remove-MoveRequest -Identity aaivanov
Чтобы удалить успешно завершенные запросы на перемещение (без этого вы не сможете перенести этот ящик в следующий раз), выполните:
Get-MoveRequest -MoveStatus Completed | Remove-MoveRequest
Удаляем базу данных по умолчанию в Exchange Server
Для удаления базы, требуется перенести все ящики пользователей и служебные ящики в другую базу данных. Командлет Get-Mailbox без дополнительных параметров не выводит системные и служебные ящики в базе. Для поиска арбитражных почтовых ящиков необходимо выполнить команду:
Get-Mailbox -Arbitration -Database "Mailbox Database 1200388344"
Если список почтовых ящиков пуст, возможно в вашей конфигурации Exchange установлен в дочернем домене. Чтобы выполнять поиск по всему лесу Active Directory, нужно включить следующий параметр:
Set-ADServerSettings -ViewEntireForest $true
Теперь переместим эти ящики в другую базу:
Get-Mailbox -Arbitration -Database "Mailbox Database 1200388344" | New-MoveRequest -TargetDatabase MBX3-02
Кроме арбитражных ящиков в дефолтной почтовой базе также могут ящики пользователей, почтовый ящик администратора и Discovery Search Mailbox (используется для поиска писем в ящиках Exchange. Их тоже нужно переместить:
Get-Mailbox -Database "Mailbox Database 1200388344" | New-MoveRequest -TargetDatabase MBX3-02
Также в почтовой базе могут быть другие типы ящиков: Monitoring, Auditing (используется для хранения событий аудита о действиях пользователей в ящиках), архивные ящики, ящики общих папок. Последовательно проверьте, что в вашей базе нет этих ящиков:
$mbxdb="Mailbox Database 1200388344"
Get-Mailbox -Database $mbxdb -Auditlog
Get-MailBox -Database $mbxdb -Archive
Get-MailBox -Database $mbxdb -PublicFolder
Get-MailBox -Database $mbxdb -GroupMailbox
Get-MailBox -Database $mbxdb -Monitoring
При обнаружении таких ящиков их нужно переместить с помощью pipe: | New-MoveRequest -TargetDatabase MBX3-02 (ящик Monitoring можно отключить | Disable-Mailbox -Confirm:$false )
Проверьте, что в базе данных не осталось ящиков пользователей:
Get-Mailbox -Database "Mailbox Database 1200388344"
В почтовой базе данных могут хранится удаленные ящики отключенных пользователей. Их список можно получить так:
Get-MailboxStatistics -Database "Mailbox Database 1200388344" | Where < $_.DisconnectReason -eq "Disabled" >| ft DisplayName,Database,DisconnectDate,MailboxGUID
После удаления базы эти ящики нельзя будет восстановить.
Проверьте, что процесс переноса закончился успешно (статус Completed):
После завершения переноса обязательно очистите очередь миграции:
Теперь почтовую базу данных по умолчанию можно удалить:
Remove-MailboxDatabase "Mailbox Database 1200388344"
После этого вручную удалите каталог с базой данных с диска:
Remove-Item -LiteralPath "C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1200388344" -Force -Recurse
Предыдущая статья Следующая статья
Вывести все ящики, к которым есть доступ у определенного пользователя Exchange/Microsoft 365
Управление правами доступа к ящикам и папкам Exchange и Microsoft 365
Аудит действий пользователей в почтовых ящиках Exchange и Microsoft 365
Отправка писем от имени другого пользователя или группы в Exchange Server/Microsoft 365
16.09.2020
itpro
Exchange
комментариев 6
Администратор Exchange может перемещать ящики пользователей между почтовыми базами на одном сервере или между удалёнными mailbox серверами. В этой статье мы рассмотрим, как перемещать почтовые ящики в Exchange с помощью Exchange Admin Center и PowerShell (статья актуальна для всех поддерживаемых версий 2010/2013/2016/2019, с небольшими оговорками касательно графического интерфейса управления Exchange).
Чаще всего ящики в организации Exchange перемещают, если пользователь переместился на другую площадку с собственными почтовыми северами; когда заканчивается место на диске, где хранится текущая база; когда нужно выполнить офлайн дефрагментацию базы без прерывания почтового сервиса для пользователей.
Обратите внимание, что перемещение и удаление ящика не уменьшит размер фалов почтовой базы на диске, а лишь освободит место внутри базы (white space). Освободившееся место в базе может использоваться для хранения почтовых элементов оставшихся пользователей. Для уменьшения размеры базы Exchange нужно выполнить ее офлайн дефрагментацию, или просто пересоздать (предварительно переместив пользователей в другие почтовые базы).
Для переноса почтового ящика из одной базы в другую, нужно создать запрос на перемещение. Есть три типа запроса на перемещение:
- Local move – локальный запрос на перенос ящика внутри одного леса (из одной базы в другую на том же самом почтовом сервере, или на другой сервер в этой же организации Exchange);
- Cross-forest enterprise move – перенос почтовых ящиков между разными лесами Active Directory;
- Remote mailbox moves in hybrid deployments – перенос почтовых ящиков в гибридных конфигурациях (между on-premises Exchange и Office 365).
Восстановление базы данных Exchange Server 2016 средствами Windows Server Backup
Я целенаправленно, в целях демонстрации, через Exchange Admin Centr отмонтировал базу и имитирую ее удаление\повреждение (удалил файл .edb). Для восстановления я запускаю Windows Server Backup и перехожу в режим восстановления. Далее следую подсказкам мастера произвожу востановление базы в то-же расположение где она хранилась до удаления. Для восстановления выберем режим "Приложения" Восстановление базы Exchange Server 2016 прошло успешно. Необходимо проконтролировать состояние базы. Сделать это возможно например через Exchange Admin Centr. Меню "Серверы" - "Базы данных" покажет список баз, которые подключены к серверу. При необходимости восстановленную базу необходимо подключить\подминтировать.
Пакетный перенос ящиков в Exchange
Для более удобного отслеживания перемещения ящиков можно использовать параметр –BatchName. Например, чтобы перенести все ящики из одной почтовой базы в другую в пакетном режиме, выполните:
Get-Mailbox -Database DB01 | New-MoveRequest -TargetDatabase DB02 -BatchName DB01toDB02Move20200915
Теперь, чтобы получить статус миграции всех ящиков в этом пакете нужно указать его имя:
Get-MoveRequest -BatchName DB01toDB02Move20200915| Get-MoveRequestStatistics
Так вы сможете убедиться, что все ящики из вашего задания успешно перенесены.
Можно временно приостановить перенос почтовых ящиков:
Get-MoveRequest | ? |Set-MoveRequest –SuspendWhenReadytoCompleate
Или продолжить миграцию:
В Exchange 2013, 2016, 2019 и Exchange Online можно перемещать несколько ящиков с помощью пакетного режима (командлет New-MigrationBatch). Список ящиков для миграции нужно указать в CSV файле, а затем выполнить команду:
New-MigrationBatch -Local -AutoStart -AutoComplete -Name DB01Move20200915 -CSVData ([System.IO.File]::ReadAllBytes("C:\PS\DB01Move20200915.csv")) -TargetDatabases DB02 -BadItemLimit 10
Для переноса только основного ящика укажите параметр PrimaryOnly , чтобы перенести архивный почтовый ящик – ArchiveOnly .
Иногда появляется необходимость переместить базу данных Exchange сервера на другой диск в другое расположение. Сделать это возможно через Power Shell с помощью командлета Move-Database. Первым параметром передаем имя базы, которую необходимо переместить, вторым путь куда мы ее хотим переместить, а так-же путь к лог файлам.
Move-DatabasePath –Identity MailboxDatabaseName –EdbFilePath E:\DB1\DB1.edb –LogFolderPath G:\Logs\DB1
Обрати внимание на то что база будет отмонтирована и для пользователей будет недоступна пока не закончится ее перемещение в другое расположение!
- Получить ссылку
- Электронная почта
- Другие приложения
Читайте также: