Ćwiczenie — wysoka dostępność krytyczna dla działania firmy
W tym ćwiczeniu baza danych zostanie uaktualniona do warstwy Krytyczne dla działania firmy. Zobaczysz, jak ta warstwa zapewnia repliki do odczytu i zwiększoną wydajność.
Użyjesz narzędzia ostress, którego użyto w poprzednim ćwiczeniu do utworzenia obciążenia. Następnie zainicjujesz tryb failover przy użyciu modułu Azure PowerShell w usłudze Azure Cloud Shell. Na koniec zobaczysz efekt przełączenia w tryb failover w obciążeniu narzędzia ostress.
Podstawowa wysoka dostępność w usłudze Azure SQL — warstwa usługi Krytyczne dla działania firmy
W tym ćwiczeniu należy wykonać następujące kroki:
- Wdrożenie bazy danych z poprzedniego ćwiczenia w warstwie Krytyczne dla działania firmy.
- Uruchomienie obciążenia narzędzia ostress.
- Inicjowanie trybu failover przy użyciu programu PowerShell.
- Wyświetlenie wyników w narzędziu ostress.
- Nawiązywanie połączenia z pomocniczą możliwą do odczytu.
Wdrożenie tej samej bazy w warstwie Krytyczne dla działania firmy
W poprzednim module przedstawiono sposób skalowania bazy danych przy użyciu języka T-SQL. Celem tego ćwiczenia jest uaktualnienie bazy danych, która była używana w poprzednim ćwiczeniu, z warstwy Ogólnego przeznaczenia do warstwy Krytyczne dla działania firmy. Do uaktualnienia bazy danych użyjesz usługi Azure Cloud Shell. Ponieważ istnieje ograniczenie częstotliwości pracy w trybie failover, należy użyć tej samej przykładowej bazy danych, ale tym razem nazwiemy ją AdventureWorks-bc.
W terminalu usługi Azure Cloud Shell w prawej części tej strony uruchom następujący skrypt programu PowerShell, aby skonfigurować środowisko:
$resourceGroup = "<rgn>Sandbox resource group name</rgn>" $database = "AdventureWorks-bc" $server = Get-AzureRmSqlServer -ResourceGroupName $resourceGroup $server = $server.ServerName # Specify your default resource group and Azure SQL Database logical server az configure --defaults group=$resourceGroup sql-server=$server # Confirm the defaults are set az configure --list-defaults
Uruchom to polecenie, aby utworzyć bazę danych w warstwie usługi Krytyczne dla działania firmy:
az sql db create --name $database ` --edition BusinessCritical ` --family Gen5 ` --capacity 2 ` --sample-name AdventureWorksLT ` --read-scale Enabled ` --zone-redundant false
Wykonanie tego polecenia zajmuje trochę czasu. Gdy polecenie jest uruchomione, możesz przejrzeć niektóre z użytych parametrów:
family
: ten parametr określa generację sprzętu. Aby zapewnić spójność z poprzednim ćwiczeniem, używana jest wartośćGen5
.capacity
: ten parametr określa liczbę jednostek DTU lub rdzeni wirtualnych. Aby zapewnić spójność z poprzednim ćwiczeniem, używane są rdzenie wirtualne2
.sample-name
: Aby zachować spójność z poprzednim ćwiczeniem, użyliśmy przykładowejAdventureWorksLT
bazy danych.edition
: ta nazwa parametru jest nieco myląca. W rzeczywistości odnosi się do warstwy usług, która nie jest taka sama jak wersja używana w programie SQL Server.read-scale
: Ta opcja nie jest domyślnie włączona, ale nie wiąże się z nią żadnych dodatkowych kosztów. Włączenie tej funkcji powoduje włączenie jednej z replik pomocniczych, która będzie używana jako pomocnicza do odczytu.zone-redundant
: Domyślnie ten parametr ma wartość false. Można ustawić parametr na wartość true, jeśli chcesz użyć wdrożenia „Multi-Az” bez dodatkowych kosztów. Podczas kolejnej lekcji dowiesz się więcej o strefach dostępności.Uwaga
Strefy dostępności są dostępne tylko w niektórych regionach. Nie są obecnie dostępne w usłudze Azure SQL Managed Instance.
Po utworzeniu bazy danych powinny zostać wyświetlone szczegółowe informacje o aktualizacjach w danych wyjściowych usługi Azure Cloud Shell. Zobaczysz dwie główne kategorie (mimo że zobaczysz także wskaźniki kilku innych właściwości):
currentServiceObjectiveName
: powinien mieć wartośćBC_Gen5_2
.BC
oznacza warstwę Krytyczne dla działania firmy.currentSku
:name
: powinien mieć wartośćBC_Gen5
.tier
: powinien mieć wartośćBusinessCritical
.
Innym sposobem sprawdzenia warstwy usługi jest przejście do bazy danych w witrynie Azure Portal. Na karcie Przegląd zobacz pozycję Warstwa cenowa.
Napiwek
Istnieją różne sposoby wyświetlania tych aktualizacji. Innym sposobem jest użycie programu SSMS. Można wyświetlić zmiany, klikając prawym przyciskiem myszy bazę danych i wybierając pozycję Właściwości>Konfiguruj wylogowanie jednokrotne.
Uruchamianie obciążenia narzędzia ostress
Podobnie jak w poprzednim ćwiczeniu, użyjesz narzędzia ostress, aby wielokrotnie wykonywać zapytania dotyczące bazy danych usługi Azure SQL.
Jeśli wiersz polecenia użyty w poprzednim ćwiczeniu został zamknięty, otwórz nowe okno wiersza polecenia na komputerze lokalnym. Użyj polecenia
cd
, aby przejść do katalogu we wcześniej sklonowanym lub pobranym repozytorium, w którym zawarto moduł dostępności. Na przykład można użyć tego polecenia:cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
Obciążenie narzędzia ostress nawiąże połączenie i uruchomi proste zapytanie 50 000 razy.
Aby uruchomić obciążenie, użyj następującego skryptu narzędzia ostress. Zastąp ciąg
serverName
nazwą serwera logicznego usługi Azure SQL Database. Zastąp ciągpassword
hasłem. To polecenie jest nieco inne niż w poprzednim ćwiczeniu. Nazwa bazy danych to terazAdventureWorks-bc
..\ostress.exe -S"serverName.database.windows.net" -Q"SELECT COUNT(*) FROM SalesLT.Customer" -U"cloudadmin" -d"AdventureWorks-bc" -P"password" -n1 -r50000
Jeśli obciążenie działa prawidłowo, wynik zapytania
847
powinien być wielokrotnie wyświetlany w oknie wiersza polecenia.Jeśli chcesz zatrzymać uruchamianie obciążenia narzędzia ostress przed jego ukończeniem, możesz wybrać kombinację klawiszy Ctrl + C w terminalu.
Jeśli zechcesz ponownie uruchomić obciążenie, możesz uruchomić polecenie jeszcze raz.
Inicjowanie trybu failover i wyświetlanie wyników
Skonfiguruj okna tak, aby widzieć tę przeglądarkę i okno wiersza polecenia w jednym widoku w tym samym czasie.
Uruchom następujący kod w terminalu usługi Azure Cloud Shell. To polecenie jest takie samo jak polecenie użyte w poprzednim ćwiczeniu.
# create a failover Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup ` -ServerName $server ` -DatabaseName $database
Podczas wykonywania tego polecenia zwróć uwagę na wszelkie zmiany widoczne w wierszu polecenia. Zauważysz, że po przejściu w tryb failover nie można uzyskać dostępu do bazy danych. Trwa to bardzo krótko. Po rozłączeniu ponownie połączenie powinno nastąpić po około 5 sekundach! Ten tryb failover jest ponad sześć razy szybszy niż w przypadku warstwy Ogólnego przeznaczenia.
Pamiętaj, że bazy danych lub wystąpienia zarządzane w warstwie usługi Krytyczne dla działania firmy zasadniczo mają zawsze włączoną grupę dostępności wdrożoną w tle, więc po przejściu w tryb failover wszystko, co się dzieje, jest zmianą wskaźników w zapleczu, gdy platforma Azure przekierowuje Cię do jednego z drugich. To dlatego przejście w tryb failover jest znacznie szybsze niż w warstwie Ogólnego przeznaczenia.
Łączenie z repliką tylko do odczytu
Ponieważ włączono parametr read-scale
, można używać jednej z replik pomocniczych dla obciążeń tylko do odczytu. Aby uzyskać dostęp do repliki tylko do odczytu w aplikacjach, wystarczy dodać ten parametr do parametrów połączenia z bazą danych:
ApplicationIntent=ReadOnly;
W programie SSMS utwórz nowe połączenie z zapytaniem. (Wybierz pozycję Plik>Nowy>Zapytanie aparatu bazy danych).
W oknie dialogowym Połącz z serwerem użyj konfiguracji, która została użyta do nawiązania połączenia z serwerem logicznym usługi Azure SQL Database. (Oznacza to, użyj polecenia Uwierzytelnianie programu SQL Server). Wybierz pozycję Opcje.
Wybierz pozycję Właściwości połączenia, a następnie wybierz pozycję Resetuj wszystko. W obszarze Łączenie z bazą danych wybierz pozycję Przeglądaj serwer i wybierz bazę danych AdventureWorks-bc. Wybierz przycisk OK.
Wybierz kartę Dodatkowe parametry połączenia i wklej następujący tekst w polu tekstowym. Wybierz pozycję Połącz.
ApplicationIntent=ReadOnly;
W programie SSMS musisz określić serwer i bazę danych, z którymi ma zostać nawiązane połączenie tylko do odczytu. Wynika to z faktu, że na serwerze może znajdować się wiele baz danych z różnymi możliwościami w zakresie czytelnych elementów pomocniczych.
W ramach testu wykonaj następujące zapytanie w nowym aparacie zapytań bazy danych. Obserwuj wyniki. Czy wyniki są zgodne z oczekiwaniami?
SELECT DATABASEPROPERTYEX(DB_NAME(), 'Updateability')
Opcjonalnie możesz ponownie nawiązać połączenie i zaktualizować dodatkowe parametry połączenia. (Zastąp ciąg
ReadOnly
ReadWrite
ciągiem .) Upewnij się, że uzyskujesz dostęp do repliki podstawowej odczytu/zapisu.ReadWrite
jest wartością domyślną, dlatego, jeśli nie wybrano żadnej wartości, wyniki będą następujące: