Základní řešení je stejné i pro Exchange server 2007. Na Exchange serveru 2010 se přidává pouze komplikace s databázovými kopiemi u DAGu (ten popisuji v minulém článku).
Pozn.: Při změně umístění souborů pro databázi dojde k dočasnému odpojení DB, takže klienti ztratí spojení.
Hned na začátku zmíním, že buď můžeme provádět přesun databáze/logů, to znamená, že se aktuální soubory uloží do nové cesty. Nebo pouze změnit konfiguraci, takže se změní cesta, ale soubory zůstanou na starém místě (a můžeme je přesunout ručně), to řeší některé krizové situace, kdy přesun selže. Po dobu přesunu se musí DB odpojit, pak se automaticky připojí (pokud ji odpojíme ručně, tak by se neměla automaticky připojit, ale mě se tak někdy stalo). Přesun databáze/logů můžeme provádět pomocí Exchange Management Console (EMC), ale při tomto použití mi přesun trval i čtyřikrát déle a objevovaly se chyby. Takže jednoznačně doporučuji využít přímo PowerShell.
Standardní přesun
Nejprve si můžeme vypsat všechny mailbox databáze, a kde mají nastaveny cesty k souborům.
[PS] C:\>Get-MailboxDatabase | FT Name, Server, EdbFilePath, LogFolderPath Name Server EdbFilePath LogFolderPath ---- ------ ----------- ------------- DB01 EXCH01 D:\DB01\DB01.edb E:\DB01 DB02 EXCH02 D:\DB02\DB02.edb E:\DB02
Stejným způsobem můžeme vypsat Public Folder databáze (někdy s nimi pracujeme stejně jako se schránkami, ale zde ne).
[PS] C:\>Get-PublicFolderDatabase | FT Name, Server, EdbFilePath, LogFolderPath Name Server EdbFilePath LogFolderPath ---- ------ ----------- ------------- DBPF1 EXCH01 d:\DBPF1\DBPF1.edb e:\DBPF1log DBPF2 EXCH02 d:\DBPF2\DBPF2.edb e:\DBPF2log
Přesun databáze provedeme jednoduchým příkazem.
Pozn.: Přesun nemůžeme dělat vzdáleně, to znamená, že PowerShell musíme spustit přímo na serveru, kde jsou přesouvané soubory.
[PS] C:\>Move-DatabasePath DBPF2 -EdbFilePath f:\DBPF2\DBPF2.edb Confirm Are you sure you want to perform this action? Moving database path "DBPF2". [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y Confirm To perform the move operation, database "DBPF2" must be temporarily dismounted, which will make it inaccessible to all users. Do you want to continue? [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y
Přesun logů je podobný.
[PS] C:\>Move-DatabasePath DBPF2 -LogFolderPath g:\DBPF2 Confirm Are you sure you want to perform this action? Moving database path "DBPF2". [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y Confirm To perform the move operation, database "DBPF2" must be temporarily dismounted, which will make it inaccessible to all users. Do you want to continue? [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y
Pokud chceme změnit nastavení bez přesouvání souborů, tak můžeme doplnit přepínač.
[PS] C:\>Move-DatabasePath DBPF2 -LogFolderPath g:\DBPF2 –ConfigurationOnly
Pokud používáme DAG (máme databázové kopie)
Složitější situace je pro mailboxové databáze, kde používáme DAG. U DAGu je důležitá podmínka, že se databázové kopie na všech serverech musí nacházet ve stejné cestě. Pokud bychom zkusili normální přesun, tak dostaneme chybu.
[PS] C:\>Move-DatabasePath DB01 -LogFolderPath g:\DB01 Move-DatabasePath is not allowed for replicated databases. For detailed steps to change the location of a replicated da tabase, see the Help file topic, Move the Mailbox Database Path for a Mailbox Database Copy. + CategoryInfo : InvalidOperation: (DB01:ADObjectId) [Move-DatabasePath], InvalidOperationException + FullyQualifiedErrorId : 7889D1AB,Microsoft.Exchange.Management.SystemConfigurationTasks.MoveDatabasePath
Podrobný popis je v MS článku Move the Mailbox Database Path for a Mailbox Database Copy. Zde je stručná verze. Přesun je náročnější, musíme odstranit všechny pasivní kopie databází, provést přesun a znovu kopie vytvořit (ale s původními daty, takže se nemusí znovu replikovat).
Seznam databází a jejich kopií dostaneme příkazem.
[PS] C:\>Get-MailboxDatabase | FT Name, Server, DatabaseCopies -AutoSize Name Server DatabaseCopies ---- ------ -------------- DB01 EXCH01 {DB01\EXCH01, DB01\EXCH02} DB02 EXCH02 {DB02\EXCH02, DB02\EXCH01}
Nejprve tedy odstraníme kopie, aby zůstala pouze jedna aktivní. Zde tedy odstraníme jednu kopii.
[PS] C:\>Remove-MailboxDatabaseCopy DB01\Exch02 Confirm Are you sure you want to perform this action? Removing database copy for database "DB01" on server "Exch02". [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): WARNING: The copy of mailbox database "DB01" on server "Exch02" has been removed. If necessary, manually delete the database copy's files located at "E:\DB01" and "D:\DB01\DB01.edb" on that server.
Potom provedeme klasický přesun, který nyní již projde.
[PS] C:\>Move-DatabasePath DB01 -LogFolderPath g:\DB01 Confirm Are you sure you want to perform this action? Moving database path "DB01". [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"):y Confirm To perform the move operation, database "DB01" must be temporarily dismounted, which will make it inaccessible to all users. Do you want to continue? [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"):y
Na serveru, kde databáze existovala (Exch01) , se vytvořila nová složka a přesunul se obsah. Na ostatních serverech, kde jsme měli kopie (Exch02), provedeme přesun starých dat ručně. To je důležité, aby se po vytvoření kopie, nemusela data znovu přesunovat po síti.
POZOR. Nyní je důležité, pokud máme servery v různých Sites, aby proběhla replikace AD, protože do té doby jeden Exchange server neví o změně cest, které jsme nastavili na druhém.
Následně znovu vytvoříme databázové kopie.
[PS] C:\>Add-MailboxDatabaseCopy –Identity DB01 –MailboxServer Exch02 -ActivationPreference 2
Na závěr je potřeba restartovat službu Microsoft Exchange Search Indexer a Microsoft Search (Exchange). Ty jsou na sobě závislé, takže při zastavování první se zastaví i druhá a při startování naopak.
net stop msftesql-Exchange net start MSExchangeSearch
Zatím zde nejsou žádné komentáře.