Czyszczenie dzienników transakcji utworzonych podczas wykonywania przez RecoveryManager Plus dowolnej operacji tworzenia kopii zapasowych i przywracania

Problem

Po wdrożeniu lokalnej usługi Exchange wolne miejsce na dysku szybko się zmniejszy ze względu na wzrost liczby dzienników generowanych przez skrzynki pocztowe. Ten problem z dużym rozmiarem dzienników występuje przede wszystkim w wersjach usługi Exchange 2013 i nowszych.

Po zainstalowaniu RecoveryManager Plus w celu tworzenia kopii zapasowych lokalnych skrzynek pocztowych usługi Exchange produkt korzysta z interfejsu API Exchange Web Services (EWS), aby uzyskać dostęp do skrzynek pocztowych znajdujących się na serwerze Exchange. Za każdym razem, gdy produkt uzyskuje dostęp do tych interfejsów API w celu wykonania dowolnej akcji, takiej jak wykonanie kopii zapasowej lub przywrócenie, Microsoft Exchange tworzy dziennik. Jeśli środowisko obejmuje dużą liczbę skrzynek pocztowych i zaplanowano codzienne przyrostowe kopie zapasowe, dostępne miejsce na dysku szybko się zmniejszy.

Oprócz dzienników generowanych przez serwer po uruchomieniu operacji tworzenia kopii zapasowej, istnieje wiele dzienników generowanych codziennie przez serwer Exchange. Jeśli regularnie nie czyścisz starych plików dziennika, bardzo często zdarza się, że bazy danych skrzynek pocztowych automatycznie odinstalowują się i powodują zakłócenia dla użytkowników, wywołując błąd 452 4.3.1 Niewystarczające zasoby systemowe.

Rozwiązanie

Najskuteczniejszym sposobem na rozwiązanie tego problemu jest okresowe czyszczenie starych dzienników utworzonych przez serwer Exchange w wyniku tworzenia kopii zapasowych i innych normalnych działań. Ponieważ dzienniki te są tworzone przez serwer Microsoft Exchange, nie mogą one zostać usunięte przez RecoveryManager Plus.

W tym artykule wyjaśniono, w jaki sposób można zautomatyzować czyszczenie dowolnych plików dziennika transakcji.

Zastrzeżenie: Należy pamiętać, że RecoveryManager Plus nie tworzy bezpośrednio żadnych dzienników na serwerze Exchange ani nie usuwa istniejących dzienników. W tym artykule wyjaśniono, w jaki sposób można automatycznie wyczyścić dzienniki, które zostały i zostaną utworzone przez serwer Exchange.

Krok 1: Utworzenie wymaganego skryptu PowerShell

  1. Utwórz skrypt PowerShell.
    # Set execution policy if not set
            $ExecutionPolicy = Get-ExecutionPolicy
            if ($ExecutionPolicy -ne "RemoteSigned") {
                Set-ExecutionPolicy RemoteSigned -Force
            }
            # Cleanup logs older than the set of days in numbers
            $days = 2
    
            # Path of the logs that you like to cleanup
            $LogPaths = "C:\Program Files\Microsoft\Exchange Server\V15\Logging\Ews\"
    
            # Clean the logs
            Function CleanLogfiles($TargetFolders) {
             foreach ($TargetFolder in $TargetFolders) {
                Write-Host -Debug -ForegroundColor Yellow -BackgroundColor Cyan $TargetFolder
    
                if (Test-Path $TargetFolder) {
                    $Now = Get-Date
                    $LastWrite = $Now.AddDays(-$days)
                    $Files = Get-ChildItem $TargetFolder -Recurse | Where-Object { $_.Name -like "*.log" } 
    | Where-Object { $_.lastWriteTime -ge "$lastwrite" } | Select-Object FullName foreach ($File in $Files) { $FullFileName = $File.FullName Write-Host "Deleting file $FullFileName" -ForegroundColor "yellow"; Remove-Item $FullFileName -ErrorAction SilentlyContinue | out-null } } Else { Write-Host "The folder $TargetFolder doesn't exist! Check the folder path!"
    -ForegroundColor "red" } } } CleanLogfiles($LogPaths)
    Uwaga 1: W tym przykładzie w 7. wierszu skryptu podaliśmy wartość 2. W zależności od podanej tutaj wartości, dzienniki starsze niż liczba dni według podanej wartości zostaną usunięte. Można zmienić wartość na dowolną liczbę w zależności od skonfigurowanej częstotliwości tworzenia przyrostowych kopii zapasowych. W przypadku korzystania z harmonogramu dziennego zalecamy podanie wartości 1. Na tej samej zasadzie użyj wartości 7 i 31, jeśli przyrostowe kopie zapasowe są tworzone odpowiednio co tydzień i co miesiąc.
    Uwaga 2: Jeśli zainstalowano usługę Exchange w innym katalogu zamiast domyślnej ścieżki, należy podać ścieżkę w wierszu 10 skryptu. W zależności od wersji serwera Exchange wartość ../V15/... należy zmienić na odpowiedni numer. Aby okresowo czyścić inne dzienniki w systemie, należy dodać lokalizację dzienników na końcu $LogPaths oddzieloną przecinkiem.
  2. Zapisz skrypt jako CleanupLogs.ps1 i umieść go w folderze C:\Scripts\. Jeśli nie masz folderu Scripts, utwórz go na dysku C:\.

Krok 2: Zautomatyzuj procedurę czyszczenia dziennika za pomocą Harmonogramu zadań

  1. Uruchom Harmonogram zadań

    cleaning-up-transaction-logs-in-exchange-server

  2. Kliknij Biblioteka harmonogramu zadań w lewym okienku, a następnie Nowy folder w prawym okienku. Nazwij folder RecoveryManager Plus i kliknij OK.

    cleaning-up-transaction-logs-in-exchange-server

  3. Kliknij nowo utworzony folder usługi Exchange w lewym okienku i kliknij Utwórz zadanie w prawym okienku.

    cleaning-up-transaction-logs-in-exchange-server

  4. Pojawi się okno Tworzenie zadania.
  5. Kliknij kartę Ogólne.
  6. W polu Nazwa wpisz EWSLogsCleanup.
  7. W opcjach zabezpieczeń
    • kliknij przycisk Zmień użytkownika lub grupę i wybierz opcję SYSTEM.
    • Włącz opcję Uruchom z najwyższymi uprawnieniami.
    • Zaznacz opcję Konfiguruj dla Windows Server 2016, jeśli masz system Windows Server w tej wersji. Jeśli masz inną wersję systemu Windows Server, wybierz odpowiednią.

      cleaning-up-transaction-logs-in-exchange-server

  8. Kliknij kartę Wyzwalacze i kliknij przycisk Nowy.

    cleaning-up-transaction-logs-in-exchange-server

  9. W sekcji Ustawienia zaznacz opcję Codziennie i podaj godzinę, o której chcesz uruchomić czyszczenie dzienników w polu Początek. Wybierz Włączona i kliknij OK.
    Uwaga: W tym przykładzie zaznaczyliśmy opcję Daily (Codziennie). Jeśli jednak RecoveryManager Plus ma wykonywać przyrostowe kopie zapasowe co tydzień lub co miesiąc, można to odpowiednio zmienić.

    cleaning-up-transaction-logs-in-exchange-server

  10. Kliknij kartę Działania i kliknij przycisk Nowe.

    cleaning-up-transaction-logs-in-exchange-server

  11. W sekcji Ustawienia
    • zaznacz opcję PowerShell.exe w polu Program/skrypt.
    • W polu Dodaj argumenty (opcjonalnie): wpisz -ExecutionPolicy Bypass C:\Scripts\CleanupLogs.ps1 .
    • Kliknij OK.

      cleaning-up-transaction-logs-in-exchange-server

  12. Kliknij OK.

    cleaning-up-transaction-logs-in-exchange-server

Zadanie zostało zaplanowane, a dzienniki usługi Exchange EWS będą teraz czyszczone w określonym czasie i z określoną częstotliwością.

Krok 3: Ręcznie uruchom i przetestuj zadanie czyszczenia dzienników usługi Exchange

  1. Kliknij utworzone zadanie CleanupLogs w środkowym okienku i kliknij Uruchom w prawym okienku.
  2. Status ostatniej operacji uruchomienia można sprawdzić w kolumnie Wynik ostatniego uruchomienia (Wynik ostatniego uruchomienia) w środkowym okienku.

    cleaning-up-transaction-logs-in-exchange-server

  3. Sprawdź, czy zadanie CleanupLogs spowodowało wyczyszczenie dzienników w następujących folderach.
    C:\Program Files\Microsoft\Exchange Server\V15\Logging\Ews\
    Uwaga: Jeśli dodano dodatkowe dzienniki do wyczyszczenia za pomocą skryptu (wiersz 10. skryptu), sprawdź, czy te dzienniki również zostały pomyślnie wyczyszczone.
Uwaga: Należy pamiętać, że RecoveryManager Plus nie tworzy bezpośrednio żadnych dzienników na serwerze Exchange ani nie usuwa istniejących dzienników. W tym artykule wyjaśniono, w jaki sposób można wyczyścić dzienniki, które zostały i zostaną utworzone przez serwer Exchange.

Potrzebujesz dalszej pomocy?

Wypełnij ten formularz, abyśmy mogli się z Tobą niezwłocznie skontaktować.

Poproś o wsparcie

  •  
  • *
     
  • *
     
  • *
     
  • Przez kliknięcie „Prześlij ”zgadzasz się na przetwarzania danych osobowych zgodnie z naszą polityką prywatności.

„Dziękujemy za przesłanie prośby.

Nasz zespół wsparcia technicznego skontaktuje się z Tobą najwcześniej."