Obsługa zawsze włączonych grup dostępności w systemie Linux

Dotyczy:Program SQL Server w systemie Linux

Aktualizacja grupy dostępności

Przed uaktualnieniem grupy dostępności zapoznaj się z wzorami i praktykami w sekcji Repliki grupy dostępności – aktualizacja.

W poniższych sekcjach opisano sposób przeprowadzania aktualizacji ciągłej dla instancji SQL Server na systemie Linux z użyciem grup dostępności.

Kroki uaktualniania w systemie Linux

Gdy repliki grup dostępności znajdują się w wystąpieniach programu SQL Server działających w systemie Linux, typ klastra tej grupy dostępności to EXTERNAL lub NONE. Grupa dostępności zarządzana przez menedżera klastra innego niż klaster trybu failover systemu Windows Server (WSFC) jest EXTERNAL. Program Pacemaker z aplikacją Corosync jest przykładem zewnętrznego menedżera klastra. Grupa dostępności bez menedżera klastra ma typ klastra NONE Kroki uaktualniania opisane tutaj są specyficzne dla grup dostępności typu klastra EXTERNAL lub NONE.

Kolejność uaktualniania wystąpień zależy od tego, czy ich rola jest pomocnicza oraz od tego, czy hostują repliki synchroniczne lub asynchroniczne. Najpierw uaktualnij wystąpienia programu SQL Server, które hostują asynchroniczne repliki pomocnicze. Następnie uaktualnij instancje, które hostują synchroniczne repliki wtórne.

Notatka

Jeśli grupa dostępności ma tylko repliki asynchroniczne, aby uniknąć utraty danych, zmień jedną replikę na synchroniczną i zaczekaj na jej zsynchronizowanie. Następnie uaktualnij tę replikę.

Przed rozpoczęciem wykonaj kopię zapasową każdej bazy danych.

  1. Zatrzymaj zasób na węźle, który hostuje replikę pomocniczą przeznaczoną do aktualizacji.

    Przed uruchomieniem polecenia uaktualnienia zatrzymaj zasób, aby klaster nie monitorował go i nie powodował jego niepotrzebnego awarii. W poniższym przykładzie dodano ograniczenie lokalizacji w węźle, które spowoduje zatrzymanie zasobu. Zaktualizuj ag_cluster-master przy użyciu nazwy zasobu i nodeName1 za pomocą węzła obsługującego replikę przeznaczoną do uaktualnienia.

    pcs constraint location ag_cluster-master avoids nodeName1
    
  2. Uaktualnij program SQL Server w repliki pomocniczej.

    Poniższy przykład uaktualnia pakiety mssql-server i mssql-server-ha.

    sudo yum update mssql-server
    sudo yum update mssql-server-ha
    
  3. Usuń ograniczenie lokalizacji.

    Przed uruchomieniem polecenia uaktualnienia zatrzymaj zasób, aby klaster nie monitorował go i nie powodował jego niepotrzebnego awarii. W poniższym przykładzie dodano ograniczenie lokalizacji w węźle, które spowoduje zatrzymanie zasobu. Zaktualizuj ag_cluster-master przy użyciu nazwy zasobu i nodeName1 za pomocą węzła obsługującego replikę przeznaczoną do uaktualnienia.

    pcs constraint remove location-ag_cluster-master-rhel1--INFINITY
    

    Najlepszym rozwiązaniem jest upewnienie się, że zasób został uruchomiony (przy użyciu polecenia pcs status), a replika pomocnicza jest połączona i synchronizowana po uaktualnieniu.

  4. Po uaktualnieniu wszystkich replik pomocniczych, ręcznie przełącz na jedną z synchronicznych replik pomocniczych.

    W przypadku grup dostępności z typem klastra EXTERNAL użyj narzędzi do zarządzania klastrem, aby przejść w tryb failover; grupy dostępności z typem klastra NONE powinny używać Transact-SQL do przełączania w tryb failover.
    W poniższym przykładzie grupa dostępności przełącza się za pomocą narzędzi do zarządzania klastrem. Zastąp <targetReplicaName> nazwą synchronicznej repliki pomocniczej, która stanie się podstawowa:

    sudo pcs resource move ag_cluster-master <targetReplicaName> --master
    

    Ważny

    Poniższe kroki dotyczą tylko grup dostępności, które nie mają menedżera klastra.

    Jeśli typ klastra grupy dostępności jest NONE, ręcznie wykonaj przełączenie awaryjne. Wykonaj następujące kroki w następującej kolejności:

    1. Następujące polecenie ustawia replikę podstawową na pomocniczą. Zastąp AG1 nazwą grupy dostępności. Uruchom polecenie Transact-SQL na instancji programu SQL Server, która obsługuje replikę podstawową.

      ALTER AVAILABILITY GROUP [ag1] SET (ROLE = SECONDARY);
      
    2. Następujące polecenie ustawia synchroniczną replikę pomocniczą na podstawową. Uruchom następujące polecenie Transact-SQL w docelowym wystąpieniu programu SQL Server — wystąpieniu hostującym synchroniczną replikę pomocniczą.

      ALTER AVAILABILITY GROUP [ag1] FAILOVER;
      
  5. Po przejściu w tryb failover uaktualnij program SQL Server na starej repliki podstawowej, powtarzając poprzednią procedurę.

    Poniższy przykład uaktualnia pakiety mssql-server i mssql-server-ha.

    # add constraint for the resource to stop on the upgraded node
    # replace 'nodename2' with the name of the cluster node targeted for upgrade
    pcs constraint location ag_cluster-master avoids nodeName2
    sudo yum update mssql-server
    sudo yum update mssql-server-ha
    
    # upgrade mssql-server and mssql-server-ha packages
    sudo yum update mssql-server
    sudo yum update mssql-server-ha
    
    # remove the constraint; make sure the resource is started and replica is connected and synchronized
    pcs constraint remove location-ag_cluster-master-rhel1--INFINITY
    
  6. W przypadku grup dostępności z zewnętrznym menedżerem klastra, gdzie typ klastra to EXTERNAL, usuń ograniczenie lokalizacji spowodowane przez ręczne przełączenie awaryjne.

    sudo pcs constraint remove cli-prefer-ag_cluster-master
    
  7. Wznów przenoszenie danych dla nowo uaktualnionej repliki pomocniczej — byłej repliki podstawowej. Ten krok jest wymagany, gdy wyższe wystąpienie wersji programu SQL Server przenosi bloki dziennika do niższego wystąpienia wersji w grupie dostępności. Uruchom następujące polecenie w nowej repliki pomocniczej (poprzednia replika podstawowa).

    ALTER DATABASE database_name SET HADR RESUME;
    

Po uaktualnieniu wszystkich serwerów można powrócić po awarii. Przełączenie z powrotem do oryginalnego głównego systemu — w razie potrzeby.

Usuwanie grupy dostępności

Aby usunąć grupę dostępności, uruchom DROP AVAILABILITY GROUP. Jeśli typ klastra jest EXTERNAL lub NONE uruchom polecenie na każdym wystąpieniu programu SQL Server, które hostuje replikę. Aby na przykład usunąć grupę dostępności o nazwie group_name uruchom następujące polecenie:

DROP AVAILABILITY GROUP group_name