Udostępnij za pośrednictwem


Konfigurowanie wystąpienia klastra awaryjnego przełączania — NFS — SQL Server w systemie Linux

Dotyczy:programu SQL Server — Linux

W tym artykule wyjaśniono, jak skonfigurować magazyn NFS dla wystąpienia klastra trybu failover (FCI) w systemie Linux.

System plików NFS lub system plików sieciowych to powszechna metoda udostępniania dysków w świecie systemu Linux, ale nie systemu Windows. Podobnie jak w przypadku iSCSI, system plików NFS można skonfigurować na serwerze lub w jakimś urządzeniu lub jednostce magazynu, o ile spełnia wymagania dotyczące magazynu dla programu SQL Server.

Ważne informacje o serwerze NFS

Źródłowy system plików NFS (serwer z systemem Linux lub coś innego) musi być używany/zgodny z wersją 4.2 lub nowszą. Wcześniejsze wersje nie działają z programem SQL Server w systemie Linux.

Podczas konfigurowania folderów, które mają być udostępniane na serwerze NFS, upewnij się, że są one zgodne z następującymi ogólnymi opcjami:

  • rw, aby upewnić się, że folder można odczytywać i zapisywać
  • sync, aby zapewnić gwarantowane zapisy w folderze
  • Nie używaj no_root_squash jako opcji; jest uważany za zagrożenie bezpieczeństwa
  • Upewnij się, że na folderze zastosowano pełne prawa (777)

Zadbać o to, aby standardy zabezpieczeń były egzekwowane przy uzyskiwaniu dostępu. Podczas konfigurowania folderu upewnij się, że tylko serwery uczestniczące w klastrze trybu failover powinny widzieć folder NFS. W poniższym przykładzie pokazano zmodyfikowany /etc/exports w rozwiązaniu NFS opartym na systemie Linux, w którym folder jest ograniczony do FCIN1 i FCIN2.

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients. See export(5).
#
/var/nfs/fci1   FCIN1(rw,sync) FCIN2(rw,sync)

Instrukcje

  1. Wybierz jeden z serwerów, który weźmie udział w konfiguracji FCI. Nie ma znaczenia, który z nich.

  2. Sprawdź, czy serwer może zobaczyć instalację na serwerze NFS.

    sudo showmount -e <IPAddressOfNFSServer>
    
    • <IPAddressOfNFSServer> to adres IP serwera NFS, którego będziesz używać.
  3. W przypadku systemowych baz danych lub dowolnych elementów przechowywanych w domyślnej lokalizacji danych wykonaj następujące kroki. W przeciwnym razie przejdź do kroku 4.

    • Upewnij się, że program SQL Server został zatrzymany na serwerze, nad którym pracujesz.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Przełącz się w pełni, aby być superużytkownikiem.

      sudo -i
      
    • Przełącz się na użytkownika mssql.

      su mssql
      
    • Utwórz katalog tymczasowy do przechowywania danych i plików dziennika programu SQL Server.

      mkdir <TempDir>
      
      • <TempDir> jest nazwą folderu. Poniższy przykład tworzy folder o nazwie /var/opt/mssql/tmp.
      mkdir /var/opt/mssql/tmp
      
    • Skopiuj dane i pliki dziennika programu SQL Server do katalogu tymczasowego.

      cp /var/opt/mssql/data/* <TempDir>
      
      • <TempDir> to nazwa folderu z poprzedniego kroku.
    • Sprawdź, czy pliki znajdują się w katalogu.

      ls TempDir
      
      • <TempDir> to nazwa folderu z poprzedniego kroku.
    • Usuń pliki z istniejącego katalogu danych programu SQL Server.

      rm - f /var/opt/mssql/data/*
      
    • Sprawdź, czy pliki zostały usunięte.

      ls /var/opt/mssql/data
      
    • Wpisz exit ,aby przełączyć się z powrotem do użytkownika głównego.

    • Zamontuj udział NFS w folderze danych programu SQL Server.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> to adres IP serwera NFS, którego będziesz używać
      • <FolderOnNFSServer> jest nazwą udziału NFS. Poniższa przykładowa składnia odpowiada informacjom systemu plików NFS z kroku 2.
      mount -t nfs4 10.201.202.63:/var/nfs/fci1 /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
    • Sprawdź, czy montowanie zakończyło się pomyślnie, wydając polecenie mount bez przełączników.

      mount
      

      Oto oczekiwane dane wyjściowe.

      10.201.202.63:/var/nfs/fcil on /var/opt/mssql/data type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard, proto=tcp,port=0,timeo=14, retrans=2,sec=sys,clientaddr=10.201.202.128,local lock=none, addr=10.201.202.63)
      
    • Przejdź do użytkownika mssql.

      su mssql
      
    • Skopiuj pliki z katalogu tymczasowego /var/opt/mssql/data.

      cp /var/opt/mssql/tmp/* /var/opt/mssqldata
      
    • Sprawdź, czy znajdują się tam pliki.

      ls /var/opt/mssql/data
      
    • Wprowadź exit, aby nie być mssql.

    • Wprowadź exit, aby nie być użytkownikiem root.

    • Uruchom program SQL Server. Jeśli wszystko zostało skopiowane poprawnie, a zabezpieczenia zostały zastosowane poprawnie, program SQL Server powinien być wyświetlany jako uruchomiony.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    • Utwórz bazę danych, aby przetestować, czy zabezpieczenia są prawidłowo skonfigurowane. W poniższym przykładzie pokazano, że odbywa się to za pośrednictwem języka Transact-SQL; można to zrobić za pośrednictwem programu SSMS.

      Zrzut ekranu przedstawiający sposób tworzenia testowej bazy danych.

    • Zatrzymaj program SQL Server i sprawdź, czy został zamknięty.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Jeśli nie tworzysz żadnych innych instalacji systemu plików NFS, odinstaluj udział. Jeśli tak jest, nie odinstaluj.

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> to adres IP serwera NFS, którego będziesz używać
      • <FolderOnNFSServer> jest nazwą udziału NFS
      • <FolderMountedIn> jest folderem utworzonym w poprzednim kroku.
  4. W przypadku innych elementów niż systemowe bazy danych, takie jak bazy danych użytkowników lub kopie zapasowe, wykonaj następujące kroki. Jeśli używasz tylko lokalizacji domyślnej, przejdź do kroku 5.

    • Przełącz się na superużytkownika.

      sudo -i
      
    • Utwórz folder, który będzie używany przez program SQL Server.

      mkdir <FolderName>
      
      • <FolderName> jest nazwą folderu. Pełna ścieżka folderu musi być określona, jeśli nie znajduje się w odpowiedniej lokalizacji.

      Poniższy przykład tworzy folder o nazwie /var/opt/mssql/userdata.

      mkdir /var/opt/mssql/userdata
      
    • Zainstaluj udział NFS w folderze utworzonym w poprzednim kroku.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn> -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> to adres IP serwera NFS, którego będziesz używać
      • <FolderOnNFSServer> jest nazwą udziału NFS
      • <FolderToMountIn> jest folderem utworzonym w poprzednim kroku.

      Poniższy przykład montuje udział NFS.

      mount -t nfs4 10.201.202.63:/var/nfs/fci2 /var/opt/mssql/userdata -o nfsvers=4.2,timeo=14,intr
      
    • Sprawdź, czy montowanie zakończyło się pomyślnie, wydając polecenie mount bez użycia przełączników.

    • Wpisz exit, aby nie być już superużytkownikiem.

    • Aby przetestować, utwórz bazę danych w tym folderze. W poniższym przykładzie użyto narzędzia sqlcmd do utworzenia bazy danych, przełączenia kontekstu do niej, sprawdzenia, czy pliki istnieją na poziomie systemu operacyjnego, a następnie usuwa lokalizację tymczasową. Możesz użyć programu SSMS.

      Zrzut ekranu przedstawiający polecenie sqlcmd i odpowiedź na polecenie.

    • Odmontuj udział

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> to adres IP serwera NFS, którego będziesz używać
      • <FolderOnNFSServer> jest nazwą udziału NFS
      • <FolderMountedIn> jest folderem utworzonym w poprzednim kroku.
  5. Powtórz kroki w innych węzłach.