การย้ายกล่องจดหมาย Exchange ไปยังฐานข้อมูลอื่น
ผู้ดูแลระบบ Exchange สามารถย้ายกล่องจดหมายของผู้ใช้ระหว่างฐานข้อมูลบนเซิร์ฟเวอร์เดียวกันหรือระหว่างเซิร์ฟเวอร์กล่องจดหมายระยะไกล ในบทความนี้ เราจะแสดงวิธีย้ายกล่องจดหมายใน Exchange Server โดยใช้ Exchange Admin Center (EAC) และ PowerShell บทความนี้เกี่ยวข้องกับ Exchange 2010/2013/2016/2019 เวอร์ชันที่รองรับทั้งหมด โดยมีข้อแตกต่างบางประการเกี่ยวกับ Exchange Management GUI
โดยทั่วไป กล่องจดหมายขององค์กรในองค์กร Exchange จะถูกย้ายหากผู้ใช้ย้ายไปยังไซต์อื่น (สำนักงาน) ด้วยเซิร์ฟเวอร์กล่องจดหมาย Exchange ของตนเอง เมื่อพื้นที่ดิสก์ที่จัดเก็บฐานข้อมูลปัจจุบันหมด หรือเมื่อคุณต้องการจัดเรียงข้อมูลแบบออฟไลน์ของฐานข้อมูลโดยไม่ขัดจังหวะบริการอีเมลสำหรับผู้ใช้
โปรดทราบว่าการย้ายหรือลบกล่องจดหมายไม่ได้ลดขนาดฐานข้อมูลกล่องจดหมายบนดิสก์ แต่จะเพิ่มพื้นที่ว่างในฐานข้อมูลเท่านั้น (
white space). พื้นที่ว่างนี้สามารถใช้เพื่อจัดเก็บรายการกล่องจดหมายใหม่สำหรับผู้ใช้รายอื่นในฐานข้อมูลเดียวกัน หากต้องการลดขนาดของฐานข้อมูล Exchange คุณต้องจัดเรียงข้อมูลแบบออฟไลน์หรือสร้างใหม่ (ย้ายผู้ใช้ไปยังฐานข้อมูลอื่นล่วงหน้า)
หากต้องการย้ายกล่องจดหมายจากฐานข้อมูลไปยังอีกฐานข้อมูลหนึ่ง คุณต้องสร้างคำขอย้าย Exchange คำขอย้ายมีสามประเภท:
-
การย้ายภายในเครื่อง เป็นคำขอภายในเครื่องเพื่อย้ายกล่องจดหมายในฟอเรสต์เดียวกัน (จากฐานข้อมูลหนึ่งไปยังอีกฐานข้อมูลหนึ่งบนเซิร์ฟเวอร์กล่องจดหมายเดียวกัน หรือไปยังเซิร์ฟเวอร์อื่นในองค์กร Exchange เดียวกัน)
การย้ายองค์กรข้ามฟอเรสต์ - ย้ายกล่องจดหมายระหว่างฟอเรสต์ Active Directory ต่างๆ
การย้ายกล่องจดหมายระยะไกล ที่ใช้ในการปรับใช้แบบไฮบริดเพื่อย้ายกล่องจดหมายในการกำหนดค่าแบบไฮบริด (ระหว่าง Exchange ในองค์กรและ Office 365)
วิธีย้ายกล่องจดหมายโดยใช้ Exchange Admin Center (EAC)
เมื่อใช้ ศูนย์ดูแล Exchange คุณสามารถย้ายกล่องจดหมายของผู้ใช้ตั้งแต่หนึ่งกล่องขึ้นไป
เปิด EAC และไปที่แท็บ ผู้รับ -> การย้ายข้อมูล
คลิก + และเลือก ย้ายไปยังฐานข้อมูลอื่น
เลือกกล่องจดหมายของผู้ใช้ที่คุณต้องการย้าย
คุณสามารถระบุรายการกล่องจดหมายที่จะย้ายในไฟล์ CSV และอัปโหลดไปยัง EAC
-
จากนั้นระบุฐานข้อมูลกล่องจดหมายเป้าหมายที่คุณต้องการย้ายกล่องจดหมายไป
จากนั้นคุณสามารถเลือกได้ว่าต้องการเริ่มย้ายทันทีหรือในภายหลัง และระบุกล่องจดหมายเพื่อส่งรายงานเกี่ยวกับการย้ายกล่องจดหมายที่สำเร็จ
ฉันไม่ได้ใช้คุณลักษณะการย้ายกล่องจดหมาย EAC เนื่องจากทำได้ง่ายกว่าและเร็วกว่าด้วย PowerShell
การย้ายกล่องจดหมาย Exchange ด้วย New-MoveRequest PowerShell Cmdlet
ก่อนอื่น คุณต้องได้รับฐานข้อมูลกล่องจดหมายที่เก็บกล่องจดหมายของผู้ใช้ เปิด Exchange Management Shell (EMS) และเรียกใช้คำสั่งนี้:
Get-Mailbox jkurtin| Format-List Databaseในตัวอย่างนี้ กล่องจดหมายของผู้ใช้จะอยู่ในฐานข้อมูลชื่อ DB01
หากต้องการสร้างคำขอในเครื่องเพื่อย้ายกล่องจดหมาย จะมีการใช้ cmdlet New-MoveRequest ตัวอย่างเช่น:
New-MoveRequest -Identity jkurtin -TargetDatabase "DB02" -BadItemLimit 10นอกจากชื่อผู้ใช้แล้ว พารามิเตอร์ต่อไปนี้มีความสำคัญ:
TargetDatabase คือชื่อของฐานข้อมูลกล่องจดหมายเป้าหมายที่คุณต้องการย้ายกล่องจดหมายไป
-
BadItemLimit - จำนวนรายการที่เสียหายในกล่องจดหมายที่อาจถูกข้าม (ละเว้น) ขณะย้ายกล่องจดหมาย
หากคุณตั้งค่า BadItemLimit เป็น 0 กล่องจดหมายจะไม่ถูกย้ายไปยังฐานข้อมูลเป้าหมายหากพบรายการที่เสียหาย หากคุณตั้งค่า BadItemLimit > 50 คุณต้องระบุพารามิเตอร์AcceptLargeDataLoss เพิ่มเติม
cmdlet ส่งคืนกล่องจดหมายและขนาดไฟล์เก็บถาวร (TotalMailboxSize, TotalArchiveSize) และข้อความแจ้งว่าคำขอย้ายอยู่ในคิว
เมื่อต้องการย้ายกล่องจดหมายทั้งหมดจากฐานข้อมูล 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ขึ้นอยู่กับขนาดกล่องจดหมายและตำแหน่งของเซิร์ฟเวอร์เป้าหมาย อาจใช้เวลานานในการย้ายกล่องจดหมาย ในการติดตามสถานะการย้ายข้อมูลกล่องจดหมายเป็น % จะใช้ cmdlet Get-MoveRequestStatistics
Get-MoveRequestStatistics -Identity jkurtinในตัวอย่างนี้ สถานะการย้ายคืออยู่ระหว่างดำเนินการ และความคืบหน้า (PercentComplete) คือ 26%
คุณสามารถแสดงสถานะของคำขอย้ายกล่องจดหมายทั้งหมดในองค์กร:
Get-MoveRequest | Get-MoveRequestStatisticsหลังจากการย้ายข้อมูลสิ้นสุดลง ค่า PercentComplete จะถึง 100 และสถานะการย้ายข้อมูลจะเปลี่ยนเป็น เสร็จสมบูรณ์
คุณสามารถแสดงสถิติเกี่ยวกับการโอนคำขอย้ายที่รอดำเนินการได้เท่านั้น:
Get-MoveRequest | where {$_.status -ne "completed"} | Get-MoveRequestStatistics | ft -a displayname,status*,percentหากต้องการแสดงกล่องจดหมายทั้งหมดที่กำลังย้ายหรืออยู่ในคิว:
Get-MoveRequest -movestatus inprogress
Get-MoveRequest -movestatus queuedหากเกิดข้อผิดพลาดระหว่างการย้ายเมลบ็อกซ์ คุณสามารถแสดงข้อผิดพลาดได้โดยใช้คำสั่งนี้:
Get-MoveRequest jkurtin | Get-MoveRequestStatistics | fl *failure*, messageเมื่อต้องการรับข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดในการโยกย้ายกล่องจดหมาย ให้ใช้คำสั่งต่อไปนี้:
Get-MoveRequest -resultsize unlimited | Where-Object {$_.status -like “failed”} | Get-MoveRequestStatistics -IncludeReport | select DisplayName, Message, FailureType, FailureSide, FailureTimeStamp, *bad*, *large*, Report, Identity | flหากคุณต้องการยกเลิกการย้ายเมลบ็อกซ์ ให้รัน:
Remove-MoveRequest -Identity jkurtinหากต้องการลบคำขอย้ายที่เสร็จสมบูรณ์ (คุณจะไม่สามารถย้ายกล่องจดหมายในครั้งต่อไปหากไม่มี) ให้รันคำสั่ง:
Get-MoveRequest -MoveStatus Completed | Remove-MoveRequestการโยกย้ายกล่องจดหมายเป็นชุดใน Exchange Server
เพื่อให้การติดตามการโยกย้ายกล่องจดหมายสะดวกยิ่งขึ้น คุณอาจใช้ตัวเลือก -BatchName ตัวอย่างเช่น เมื่อต้องการย้ายกล่องจดหมายทั้งหมดจากฐานข้อมูลกล่องจดหมายไปยังอีกกล่องหนึ่งในโหมดแบตช์ ให้รันคำสั่งต่อไปนี้:
Get-Mailbox -Database RO-DB01 | New-MoveRequest -TargetDatabase RO-DB02 -BatchName RODB01toRoDB02Move20210422จากนั้น เพื่อรับสถานะการย้ายของกล่องจดหมายทั้งหมดในชุดงาน ให้ระบุชื่อชุดงาน:
Get-MoveRequest -BatchName RODB01toRoDB02Move20210422| Get-MoveRequestStatisticsดังนั้น คุณสามารถตรวจสอบให้แน่ใจว่าได้ย้ายกล่องจดหมายทั้งหมดในงานเรียบร้อยแล้ว
คุณสามารถระงับการโยกย้ายกล่องจดหมายเป็นชุด:
Get-MoveRequest | ? {$_.Batchname -like “*RODB01toRoDB02Move20210422”}|Set-MoveRequest -SuspendWhenReadytoCompleateหรือดำเนินการย้ายข้อมูลต่อ:
Get-MoveRequest | ? {$_.Batchname -like “*RODB01toRoDB02Move20210422”|Resume-MoveRequestใน Exchange Server 2013, 2016, 2019 และ Exchange Online คุณสามารถย้ายกล่องจดหมายหลายกล่องเป็นชุดโดยใช้ New-MigrationBatch สร้างรายการกล่องจดหมายที่จะย้ายในไฟล์ CSV และใช้คำสั่งนี้:
New-MigrationBatch -Local -AutoStart -AutoComplete -Name RODB01Move20210422 -CSVData ([System.IO.File]::ReadAllBytes("C:\PS\RODB01Move20210422.csv")) -TargetDatabases RO-DB03 -BadItemLimit 10หากต้องการย้ายเฉพาะกล่องจดหมายหลัก ให้ใช้ปุ่ม
PrimaryOnlyตัวเลือก; หากต้องการย้ายกล่องจดหมายเก็บถาวร ให้ใช้
ArchiveOnly





