Parametry serwera w usłudze Azure Database for MySQL
DOTYCZY: Azure Database for MySQL — pojedynczy serwer
Ważne
Pojedynczy serwer usługi Azure Database for MySQL znajduje się na ścieżce wycofania. Zdecydowanie zalecamy uaktualnienie do serwera elastycznego usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do serwera elastycznego usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MySQL — pojedynczy serwer?
Ten artykuł zawiera zagadnienia i wskazówki dotyczące konfigurowania parametrów serwera w usłudze Azure Database for MySQL.
Co to są parametry serwera?
Aparat MySQL udostępnia wiele różnych zmiennych i parametrów serwera używanych do konfigurowania i dostrajania zachowania aparatu. Niektóre parametry można ustawiać dynamicznie w czasie wykonywania, podczas gdy inne są statyczne i wymagają ponownego uruchomienia serwera w celu zastosowania.
Usługa Azure Database for MySQL uwidacznia możliwość zmiany wartości różnych parametrów serwera MySQL przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure i programu PowerShell w celu dopasowania ich do potrzeb obciążenia.
Konfigurowalne parametry serwera
Lista obsługiwanych parametrów serwera stale rośnie. W witrynie Azure Portal użyj karty Parametry serwera, aby wyświetlić pełną listę i skonfigurować wartości parametrów serwera.
Zapoznaj się z poniższymi sekcjami, aby dowiedzieć się więcej na temat limitów kilku często aktualizowanych parametrów serwera. Limity są określane przez warstwę cenową i rdzenie wirtualne serwera.
Pule wątków
Program MySQL tradycyjnie przypisuje wątek dla każdego połączenia klienta. Wraz ze wzrostem liczby równoczesnych użytkowników występuje odpowiedni spadek wydajności. Wiele aktywnych wątków może znacząco wpływać na wydajność z powodu zwiększonego przełączania kontekstu, rywalizacji o wątki i nieprawidłowej lokalizacji pamięci podręcznych procesora CPU.
Pule wątków, funkcja po stronie serwera i różni się od buforowania połączeń, maksymalizuj wydajność, wprowadzając dynamiczną pulę wątków roboczych. Ta funkcja pozwala ograniczyć liczbę aktywnych wątków uruchomionych na serwerze i zminimalizować współczynnik zmian wątków. Pomaga to zapewnić, że wzrost liczby połączeń nie powoduje, że serwer zabraknie zasobów ani pamięci. Pule wątków są najbardziej wydajne w przypadku krótkich zapytań i obciążeń intensywnie korzystających z procesora CPU, takich jak obciążenia OLTP.
Aby uzyskać więcej informacji, zobacz Wprowadzenie do pul wątków w usłudze Azure Database for MySQL.
Uwaga
Pule wątków nie są obsługiwane w przypadku programu MySQL 5.6.
Konfigurowanie puli wątków
Aby włączyć pulę wątków, zaktualizuj thread_handling
parametr serwera na pool-of-threads
. Domyślnie ten parametr jest ustawiony na one-thread-per-connection
wartość , co oznacza, że program MySQL tworzy nowy wątek dla każdego nowego połączenia. Jest to parametr statyczny i wymaga ponownego uruchomienia serwera w celu zastosowania.
Można również skonfigurować maksymalną i minimalną liczbę wątków w puli, ustawiając następujące parametry serwera:
thread_pool_max_threads
: Ta wartość ogranicza liczbę wątków w puli.thread_pool_min_threads
: Ta wartość określa liczbę wątków zarezerwowanych, nawet po zamknięciu połączeń.
Aby poprawić problemy z wydajnością krótkich zapytań w puli wątków, możesz włączyć wykonywanie wsadowe. Zamiast wracać do puli wątków natychmiast po uruchomieniu zapytania, wątki będą aktywne przez krótki czas, aby poczekać na następne zapytanie za pośrednictwem tego połączenia. Następnie wątek szybko uruchamia zapytanie, a po zakończeniu ten wątek czeka na następny. Ten proces będzie kontynuowany, dopóki całkowity czas spędzony nie przekroczy progu.
Zachowanie wykonywania wsadowego można określić przy użyciu następujących parametrów serwera:
thread_pool_batch_wait_timeout
: Ta wartość określa czas oczekiwania wątku na przetworzenie innego zapytania.thread_pool_batch_max_time
: Ta wartość określa maksymalny czas, przez jaki wątek będzie powtarzał cykl wykonywania zapytań i czekał na następne zapytanie.
Ważne
Nie włączaj puli wątków w środowisku produkcyjnym, dopóki nie zostanie przetestowana.
log_bin_trust_function_creators
W usłudze Azure Database for MySQL dzienniki binarne są zawsze włączone ( log_bin
parametr jest ustawiony na ON
wartość ). Jeśli chcesz używać wyzwalaczy, zostanie wyświetlony błąd podobny do następującego: nie masz uprawnień ADMINISTRATORA i włączono rejestrowanie binarne (możesz użyć mniej bezpiecznej log_bin_trust_function_creators
zmiennej).
Format rejestrowania binarnego jest zawsze wierszem, a wszystkie połączenia z serwerem zawsze używają rejestrowania binarnego opartego na wierszach. Rejestrowanie binarne oparte na wierszach pomaga zachować bezpieczeństwo, a rejestrowanie binarne nie może uszkodzić, dzięki czemu można bezpiecznie ustawić wartość log_bin_trust_function_creators
TRUE
.
innodb_buffer_pool_size
Zapoznaj się z dokumentacją programu MySQL, aby dowiedzieć się więcej na temat tego parametru.
Serwery w magazynie ogólnego przeznaczenia w wersji 1 (obsługa do 4 TB)
Warstwa cenowa | Rdzenie wirtualne | Wartość domyślna (bajty) | Minimalna wartość (bajty) | Maksymalna wartość (bajty) |
---|---|---|---|---|
Podstawowy | 1 | 872415232 | 134217728 | 872415232 |
Podstawowy | 2 | 2684354560 | 134217728 | 2684354560 |
Ogólnego przeznaczenia | 2 | 3758096384 | 134217728 | 3758096384 |
Ogólnego przeznaczenia | 100 | 8053063680 | 134217728 | 8053063680 |
Ogólnego przeznaczenia | 8 | 16106127360 | 134217728 | 16106127360 |
Ogólnego przeznaczenia | 16 | 32749125632 | 134217728 | 32749125632 |
Ogólnego przeznaczenia | 32 | 66035122176 | 134217728 | 66035122176 |
Ogólnego przeznaczenia | 64 | 132070244352 | 134217728 | 132070244352 |
Optymalizacja pod kątem pamięci | 2 | 7516192768 | 134217728 | 7516192768 |
Optymalizacja pod kątem pamięci | 100 | 16106127360 | 134217728 | 16106127360 |
Optymalizacja pod kątem pamięci | 8 | 32212254720 | 134217728 | 32212254720 |
Optymalizacja pod kątem pamięci | 16 | 65498251264 | 134217728 | 65498251264 |
Optymalizacja pod kątem pamięci | 32 | 132070244352 | 134217728 | 132070244352 |
Serwery w magazynie ogólnego przeznaczenia w wersji 2 (obsługa do 16 TB)
Warstwa cenowa | Rdzenie wirtualne | Wartość domyślna (bajty) | Minimalna wartość (bajty) | Maksymalna wartość (bajty) |
---|---|---|---|---|
Podstawowy | 1 | 872415232 | 134217728 | 872415232 |
Podstawowy | 2 | 2684354560 | 134217728 | 2684354560 |
Ogólnego przeznaczenia | 2 | 7516192768 | 134217728 | 7516192768 |
Ogólnego przeznaczenia | 100 | 16106127360 | 134217728 | 16106127360 |
Ogólnego przeznaczenia | 8 | 32212254720 | 134217728 | 32212254720 |
Ogólnego przeznaczenia | 16 | 65498251264 | 134217728 | 65498251264 |
Ogólnego przeznaczenia | 32 | 132070244352 | 134217728 | 132070244352 |
Ogólnego przeznaczenia | 64 | 264140488704 | 134217728 | 264140488704 |
Optymalizacja pod kątem pamięci | 2 | 15032385536 | 134217728 | 15032385536 |
Optymalizacja pod kątem pamięci | 100 | 32212254720 | 134217728 | 32212254720 |
Optymalizacja pod kątem pamięci | 8 | 64424509440 | 134217728 | 64424509440 |
Optymalizacja pod kątem pamięci | 16 | 130996502528 | 134217728 | 130996502528 |
Optymalizacja pod kątem pamięci | 32 | 264140488704 | 134217728 | 264140488704 |
innodb_file_per_table
Program MySQL przechowuje tabelę InnoDB
w różnych przestrzeniach tabel na podstawie konfiguracji podanej podczas tworzenia tabeli. Systemowa przestrzeń tabel to obszar przechowywania słownika InnoDB
danych. Przestrzeń tabel dla pliku na tabelę zawiera dane i indeksy dla pojedynczej InnoDB
tabeli i jest przechowywana w systemie plików we własnym pliku danych.
To zachowanie można kontrolować przy użyciu parametru innodb_file_per_table
serwera. Ustawienie innodb_file_per_table
przyczyn OFF
InnoDB
tworzenia tabel w systemowej przestrzeni tabel. InnoDB
W przeciwnym razie tworzy tabele w przestrzeniach tabel dla plików na tabelę.
Uwaga
Można aktualizować innodb_file_per_table
tylko w warstwach cenowych ogólnego przeznaczenia i zoptymalizowanych pod kątem pamięci w magazynie ogólnego przeznaczenia w wersji 2 i magazynu ogólnego przeznaczenia w wersji 1.
Usługa Azure Database for MySQL obsługuje 4 TB (co do wielkości) w jednym pliku danych w magazynie ogólnego przeznaczenia w wersji 2. Jeśli rozmiar bazy danych jest większy niż 4 TB, należy utworzyć tabelę w przestrzeni tabel innodb_file_per_table . Jeśli masz jeden rozmiar tabeli większy niż 4 TB, należy użyć tabeli partycji.
join_buffer_size
Zapoznaj się z dokumentacją programu MySQL, aby dowiedzieć się więcej na temat tego parametru.
Warstwa cenowa | Rdzenie wirtualne | Wartość domyślna (bajty) | Minimalna wartość (bajty) | Maksymalna wartość (bajty) |
---|---|---|---|---|
Podstawowy | 1 | Nie można skonfigurować w warstwie Podstawowa | Brak | Brak |
Podstawowy | 2 | Nie można skonfigurować w warstwie Podstawowa | Brak | Brak |
Ogólnego przeznaczenia | 2 | 262144 | 128 | 268435455 |
Ogólnego przeznaczenia | 100 | 262144 | 128 | 536870912 |
Ogólnego przeznaczenia | 8 | 262144 | 128 | 1073741824 |
Ogólnego przeznaczenia | 16 | 262144 | 128 | 2147483648 |
Ogólnego przeznaczenia | 32 | 262144 | 128 | 4294967295 |
Ogólnego przeznaczenia | 64 | 262144 | 128 | 4294967295 |
Optymalizacja pod kątem pamięci | 2 | 262144 | 128 | 536870912 |
Optymalizacja pod kątem pamięci | 100 | 262144 | 128 | 1073741824 |
Optymalizacja pod kątem pamięci | 8 | 262144 | 128 | 2147483648 |
Optymalizacja pod kątem pamięci | 16 | 262144 | 128 | 4294967295 |
Optymalizacja pod kątem pamięci | 32 | 262144 | 128 | 4294967295 |
max_connections
Warstwa cenowa | Rdzenie wirtualne | Wartość domyślna | Minimalna wartość | Wartość maksymalna |
---|---|---|---|---|
Podstawowy | 1 | 50 | 10 | 50 |
Podstawowy | 2 | 100 | 10 | 100 |
Ogólnego przeznaczenia | 2 | 300 | 10 | 600 |
Ogólnego przeznaczenia | 100 | 625 | 10 | 1250 |
Ogólnego przeznaczenia | 8 | 1250 | 10 | 2500 |
Ogólnego przeznaczenia | 16 | 2500 | 10 | 5000 |
Ogólnego przeznaczenia | 32 | 5000 | 10 | 10 000 |
Ogólnego przeznaczenia | 64 | 10 000 | 10 | 20000 |
Optymalizacja pod kątem pamięci | 2 | 625 | 10 | 1250 |
Optymalizacja pod kątem pamięci | 100 | 1250 | 10 | 2500 |
Optymalizacja pod kątem pamięci | 8 | 2500 | 10 | 5000 |
Optymalizacja pod kątem pamięci | 16 | 5000 | 10 | 10 000 |
Optymalizacja pod kątem pamięci | 32 | 10 000 | 10 | 20000 |
Jeśli liczba połączeń przekroczy limit, może zostać wyświetlony błąd.
Napiwek
Aby efektywnie zarządzać połączeniami, warto użyć programu puli połączeń, takiego jak ProxySQL. Aby dowiedzieć się więcej na temat konfigurowania serwera ProxySQL, zobacz wpis w blogu Load balance read replicas using ProxySQL in Azure Database for MySQL (Równoważenie obciążenia replik do odczytu przy użyciu serwera ProxySQL w usłudze Azure Database for MySQL). Należy pamiętać, że serwer ProxySQL jest narzędziem społeczności typu open source. Jest ona obsługiwana przez firmę Microsoft na zasadzie najlepszych wysiłków.
max_heap_table_size
Zapoznaj się z dokumentacją programu MySQL, aby dowiedzieć się więcej na temat tego parametru.
Warstwa cenowa | Rdzenie wirtualne | Wartość domyślna (bajty) | Minimalna wartość (bajty) | Maksymalna wartość (bajty) |
---|---|---|---|---|
Podstawowy | 1 | Nie można skonfigurować w warstwie Podstawowa | Brak | Brak |
Podstawowy | 2 | Nie można skonfigurować w warstwie Podstawowa | Brak | Brak |
Ogólnego przeznaczenia | 2 | 16777216 | 16384 | 268435455 |
Ogólnego przeznaczenia | 100 | 16777216 | 16384 | 536870912 |
Ogólnego przeznaczenia | 8 | 16777216 | 16384 | 1073741824 |
Ogólnego przeznaczenia | 16 | 16777216 | 16384 | 2147483648 |
Ogólnego przeznaczenia | 32 | 16777216 | 16384 | 4294967295 |
Ogólnego przeznaczenia | 64 | 16777216 | 16384 | 4294967295 |
Optymalizacja pod kątem pamięci | 2 | 16777216 | 16384 | 536870912 |
Optymalizacja pod kątem pamięci | 100 | 16777216 | 16384 | 1073741824 |
Optymalizacja pod kątem pamięci | 8 | 16777216 | 16384 | 2147483648 |
Optymalizacja pod kątem pamięci | 16 | 16777216 | 16384 | 4294967295 |
Optymalizacja pod kątem pamięci | 32 | 16777216 | 16384 | 4294967295 |
query_cache_size
Pamięć podręczna zapytań jest domyślnie wyłączona. Aby włączyć pamięć podręczną zapytań, skonfiguruj query_cache_type
parametr .
Zapoznaj się z dokumentacją programu MySQL, aby dowiedzieć się więcej na temat tego parametru.
Uwaga
Pamięć podręczna zapytań jest przestarzała w wersji MySQL 5.7.20 i została usunięta w programie MySQL 8.0.
Warstwa cenowa | Rdzenie wirtualne | Wartość domyślna (bajty) | Minimalna wartość (bajty) | Wartość maksymalna |
---|---|---|---|---|
Podstawowy | 1 | Nie można skonfigurować w warstwie Podstawowa | Brak | Brak |
Podstawowy | 2 | Nie można skonfigurować w warstwie Podstawowa | Brak | Brak |
Ogólnego przeznaczenia | 2 | 0 | 0 | 16777216 |
Ogólnego przeznaczenia | 100 | 0 | 0 | 33554432 |
Ogólnego przeznaczenia | 8 | 0 | 0 | 67108864 |
Ogólnego przeznaczenia | 16 | 0 | 0 | 134217728 |
Ogólnego przeznaczenia | 32 | 0 | 0 | 134217728 |
Ogólnego przeznaczenia | 64 | 0 | 0 | 134217728 |
Optymalizacja pod kątem pamięci | 2 | 0 | 0 | 33554432 |
Optymalizacja pod kątem pamięci | 100 | 0 | 0 | 67108864 |
Optymalizacja pod kątem pamięci | 8 | 0 | 0 | 134217728 |
Optymalizacja pod kątem pamięci | 16 | 0 | 0 | 134217728 |
Optymalizacja pod kątem pamięci | 32 | 0 | 0 | 134217728 |
lower_case_table_names
Parametr lower_case_table_name
jest domyślnie ustawiony na 1 i można zaktualizować ten parametr w programach MySQL 5.6 i MySQL 5.7.
Zapoznaj się z dokumentacją programu MySQL, aby dowiedzieć się więcej na temat tego parametru.
Uwaga
W programie MySQL 8.0 lower_case_table_name
jest domyślnie ustawiona wartość 1 i nie można jej zmienić.
innodb_strict_mode
Jeśli wystąpi błąd podobny do Row size too large (> 8126)
, rozważ wyłączenie parametru innodb_strict_mode
. Nie można modyfikować innodb_strict_mode
globalnie na poziomie serwera. Jeśli rozmiar danych wierszy jest większy niż 8K, dane są obcinane bez powiadomienia o błędzie, co prowadzi do potencjalnej utraty danych. Dobrym pomysłem jest zmodyfikowanie schematu w celu dopasowania go do limitu rozmiaru strony.
Ten parametr można ustawić na poziomie sesji przy użyciu polecenia init_connect
. Aby ustawić na innodb_strict_mode
poziomie sesji, zapoznaj się z parametrem ustawienia, który nie ma na liście.
Uwaga
Jeśli masz serwer repliki do odczytu, ustawienie innodb_strict_mode
na OFF
poziomie sesji na serwerze źródłowym spowoduje przerwanie replikacji. Zalecamy przechowywanie parametru ustawionego na ON
wartość , jeśli masz repliki do odczytu.
sort_buffer_size
Zapoznaj się z dokumentacją programu MySQL, aby dowiedzieć się więcej na temat tego parametru.
Warstwa cenowa | Rdzenie wirtualne | Wartość domyślna (bajty) | Minimalna wartość (bajty) | Maksymalna wartość (bajty) |
---|---|---|---|---|
Podstawowy | 1 | Nie można skonfigurować w warstwie Podstawowa | Brak | Brak |
Podstawowy | 2 | Nie można skonfigurować w warstwie Podstawowa | Brak | Brak |
Ogólnego przeznaczenia | 2 | 524288 | 32768 | 4194304 |
Ogólnego przeznaczenia | 100 | 524288 | 32768 | 8388608 |
Ogólnego przeznaczenia | 8 | 524288 | 32768 | 16777216 |
Ogólnego przeznaczenia | 16 | 524288 | 32768 | 33554432 |
Ogólnego przeznaczenia | 32 | 524288 | 32768 | 33554432 |
Ogólnego przeznaczenia | 64 | 524288 | 32768 | 33554432 |
Optymalizacja pod kątem pamięci | 2 | 524288 | 32768 | 8388608 |
Optymalizacja pod kątem pamięci | 100 | 524288 | 32768 | 16777216 |
Optymalizacja pod kątem pamięci | 8 | 524288 | 32768 | 33554432 |
Optymalizacja pod kątem pamięci | 16 | 524288 | 32768 | 33554432 |
Optymalizacja pod kątem pamięci | 32 | 524288 | 32768 | 33554432 |
tmp_table_size
Zapoznaj się z dokumentacją programu MySQL, aby dowiedzieć się więcej na temat tego parametru.
Warstwa cenowa | Rdzenie wirtualne | Wartość domyślna (bajty) | Minimalna wartość (bajty) | Maksymalna wartość (bajty) |
---|---|---|---|---|
Podstawowy | 1 | Nie można skonfigurować w warstwie Podstawowa | Brak | Brak |
Podstawowy | 2 | Nie można skonfigurować w warstwie Podstawowa | Brak | Brak |
Ogólnego przeznaczenia | 2 | 16777216 | 1024 | 67108864 |
Ogólnego przeznaczenia | 100 | 16777216 | 1024 | 134217728 |
Ogólnego przeznaczenia | 8 | 16777216 | 1024 | 268435456 |
Ogólnego przeznaczenia | 16 | 16777216 | 1024 | 536870912 |
Ogólnego przeznaczenia | 32 | 16777216 | 1024 | 1073741824 |
Ogólnego przeznaczenia | 64 | 16777216 | 1024 | 1073741824 |
Optymalizacja pod kątem pamięci | 2 | 16777216 | 1024 | 134217728 |
Optymalizacja pod kątem pamięci | 100 | 16777216 | 1024 | 268435456 |
Optymalizacja pod kątem pamięci | 8 | 16777216 | 1024 | 536870912 |
Optymalizacja pod kątem pamięci | 16 | 16777216 | 1024 | 1073741824 |
Optymalizacja pod kątem pamięci | 32 | 16777216 | 1024 | 1073741824 |
Rozgrzewka puli InnoDB
Po ponownym uruchomieniu usługi Azure Database for MySQL strony danych, które znajdują się na dysku, są ładowane w miarę odpytania tabel. Prowadzi to do zwiększonego opóźnienia i wolniejszej wydajności pierwszego uruchomienia zapytań. W przypadku obciążeń, które są wrażliwe na opóźnienia, może się okazać, że ta niższa wydajność jest niedopuszczalna.
Możesz użyć InnoDB
rozgrzewki puli, aby skrócić okres rozgrzewki. Ten proces ponownie ładuje strony dysków, które znajdowały się w puli przed ponownym uruchomieniem, zamiast czekać na operacje DML lub SELECT w celu uzyskania dostępu do odpowiednich wierszy. Aby uzyskać więcej informacji, zobacz Parametry serwera puli InnoDB.
Jednak zwiększona wydajność jest kosztem dłuższego czasu uruchamiania serwera. Po włączeniu tego parametru oczekiwane jest zwiększenie czasu uruchamiania i ponownego uruchamiania serwera w zależności od liczby operacji we/wy na sekundę aprowizowanej na serwerze. Dobrym pomysłem jest przetestowanie i monitorowanie czasu ponownego uruchomienia, aby upewnić się, że wydajność uruchamiania lub ponownego uruchamiania jest akceptowalna, ponieważ serwer jest niedostępny w tym czasie. Nie używaj tego parametru, gdy liczba aprowizowanej liczby operacji we/wy na sekundę jest mniejsza niż 1000 operacji we/wy na sekundę (innymi słowy, gdy aprowizowana pamięć jest mniejsza niż 335 GB).
Aby zapisać stan puli podczas zamykania serwera, ustaw parametr innodb_buffer_pool_dump_at_shutdown
serwera na ON
wartość . Podobnie ustaw parametr innodb_buffer_pool_load_at_startup
serwera, aby ON
przywrócić stan puli podczas uruchamiania serwera. Wpływ uruchamiania lub ponownego uruchamiania można kontrolować, obniżając i dostrajając wartość parametru innodb_buffer_pool_dump_pct
serwera . Domyślnie ten parametr ma wartość 25
.
Uwaga
InnoDB
Parametry rozgrzewania puli są obsługiwane tylko w przypadku serwerów magazynu ogólnego przeznaczenia z maksymalnie 16 TB magazynu. Aby uzyskać więcej informacji, zobacz Opcje magazynu usługi Azure Database for MySQL.
time_zone
Podczas początkowego wdrażania serwer z uruchomioną usługą Azure Database for MySQL zawiera tabele systemów dla informacji o strefie czasowej, ale te tabele nie są wypełniane. Tabele można wypełnić, wywołując procedurę mysql.az_load_timezone
składowaną z narzędzi takich jak wiersz polecenia MySQL lub MySQL Workbench. Aby uzyskać informacje na temat wywoływania procedur składowanych i ustawiania globalnych lub stref czasowych na poziomie sesji, zobacz Praca z parametrem strefy czasowej (Azure Portal) lub Praca z parametrem strefy czasowej (interfejs wiersza polecenia platformy Azure).
binlog_expire_logs_seconds
W usłudze Azure Database for MySQL ten parametr określa liczbę sekund oczekiwania usługi przed przeczyszczeniem pliku dziennika binarnego.
Dziennik binarny zawiera zdarzenia opisujące zmiany bazy danych, takie jak operacje tworzenia tabeli lub zmiany danych tabeli. Zawiera również zdarzenia dla instrukcji, które mogą potencjalnie wprowadzać zmiany. Dziennik binarny jest używany głównie do dwóch celów, replikacji i odzyskiwania danych.
Zazwyczaj dzienniki binarne są czyszczone, gdy tylko dojście jest wolne od usługi, kopii zapasowej lub zestawu replik. Jeśli istnieje wiele replik, dzienniki binarne czekają na najwolniejszą replikę, aby odczytać zmiany przed przeczyszczeniem. Jeśli chcesz, aby dzienniki binarne trwały dłużej, możesz skonfigurować parametr binlog_expire_logs_seconds
. Jeśli ustawisz binlog_expire_logs_seconds
0
wartość , która jest wartością domyślną, zostanie ona przeczyszczona natychmiast po uwolnieniu dojścia do dziennika binarnego. Jeśli ustawisz wartość binlog_expire_logs_seconds
większą niż 0, dziennik binarny będzie czyszczący tylko po upływie tego czasu.
W przypadku usługi Azure Database for MySQL funkcje zarządzane, takie jak tworzenie kopii zapasowych i czyszczenie replik do odczytu plików binarnych, są obsługiwane wewnętrznie. W przypadku replikowania danych z usługi Azure Database for MySQL należy ustawić ten parametr w podstawowym, aby uniknąć przeczyszczania dzienników binarnych przed odczytem repliki ze zmian z podstawowego. Jeśli ustawisz binlog_expire_logs_seconds
wartość na wyższą, dzienniki binarne nie zostaną przeczyszczone wystarczająco szybko. Może to prowadzić do zwiększenia rozliczeń magazynu.
event_scheduler
W usłudze Azure Database for MySQL event_schedule
parametr serwera zarządza tworzeniem, planowaniem i uruchamianiem zdarzeń, czyli zadaniami uruchamianymi zgodnie z harmonogramem i są uruchamiane przez specjalny wątek harmonogramu zdarzeń. event_scheduler
Gdy parametr jest ustawiony na WŁ., wątek harmonogramu zdarzeń jest wyświetlany jako proces demona w danych wyjściowych SHOW PROCESSLIST. Zdarzenia można tworzyć i planować przy użyciu następującej składni SQL:
CREATE EVENT <event name>
ON SCHEDULE EVERY _ MINUTE / HOUR / DAY
STARTS TIMESTAMP / CURRENT_TIMESTAMP
ENDS TIMESTAMP / CURRENT_TIMESTAMP + INTERVAL 1 MINUTE / HOUR / DAY
COMMENT ‘<comment>’
DO
<your statement>;
Uwaga
Aby uzyskać więcej informacji na temat tworzenia zdarzenia, zobacz dokumentację usługi MySQL Event Scheduler tutaj:
Konfigurowanie parametru serwera event_scheduler
Poniższy scenariusz ilustruje jeden ze sposobów użycia parametru event_scheduler
w usłudze Azure Database for MySQL. Aby zademonstrować ten scenariusz, rozważmy następujący przykład: prosta tabela:
mysql> describe tab1;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| CreatedAt | timestamp | YES | | NULL | |
| CreatedBy | varchar(16) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.23 sec)
Aby skonfigurować event_scheduler
parametr serwera w usłudze Azure Database for MySQL, wykonaj następujące kroki:
W witrynie Azure Portal przejdź do serwera, a następnie w obszarze Ustawienia wybierz pozycję Parametry serwera.
W bloku Parametry serwera wyszukaj ciąg
event_scheduler
, na liście rozwijanej WARTOŚĆ wybierz pozycję WŁĄCZONE, a następnie wybierz pozycję Zapisz.Uwaga
Zmiana konfiguracji parametru serwera dynamicznego zostanie wdrożona bez ponownego uruchomienia.
Następnie, aby utworzyć zdarzenie, połączyć się z serwerem MySQL i uruchomić następujące polecenie SQL:
CREATE EVENT test_event_01 ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR COMMENT ‘Inserting record into the table tab1 with current timestamp’ DO INSERT INTO tab1(id,createdAt,createdBy) VALUES('',NOW(),CURRENT_USER());
Aby wyświetlić szczegóły harmonogramu zdarzeń, uruchom następującą instrukcję SQL:
SHOW EVENTS;
Wyświetlane są następujące dane wyjściowe:
mysql> show events; +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ | Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation | +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ | db1 | test_event_01 | azureuser@% | SYSTEM | RECURRING | NULL | 1 | MINUTE | 2023-04-05 14:47:04 | 2023-04-05 15:47:04 | ENABLED | 3221153808 | latin1 | latin1_swedish_ci | latin1_swedish_ci | +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ 1 row in set (0.23 sec)
Po kilku minutach wykonaj zapytanie o wiersze z tabeli, aby rozpocząć wyświetlanie wierszy wstawionych co minutę zgodnie ze skonfigurowanym parametrem
event_scheduler
:mysql> select * from tab1; +----+---------------------+-------------+ | id | CreatedAt | CreatedBy | +----+---------------------+-------------+ | 1 | 2023-04-05 14:47:04 | azureuser@% | | 2 | 2023-04-05 14:48:04 | azureuser@% | | 3 | 2023-04-05 14:49:04 | azureuser@% | | 4 | 2023-04-05 14:50:04 | azureuser@% | +----+---------------------+-------------+ 4 rows in set (0.23 sec)
Po godzinie uruchom instrukcję Select w tabeli, aby wyświetlić pełny wynik wartości wstawionych do tabeli co minutę przez godzinę, zgodnie z
event_scheduler
konfiguracją w naszym przypadku.mysql> select * from tab1; +----+---------------------+-------------+ | id | CreatedAt | CreatedBy | +----+---------------------+-------------+ | 1 | 2023-04-05 14:47:04 | azureuser@% | | 2 | 2023-04-05 14:48:04 | azureuser@% | | 3 | 2023-04-05 14:49:04 | azureuser@% | | 4 | 2023-04-05 14:50:04 | azureuser@% | | 5 | 2023-04-05 14:51:04 | azureuser@% | | 6 | 2023-04-05 14:52:04 | azureuser@% | ..< 50 lines trimmed to compact output >.. | 56 | 2023-04-05 15:42:04 | azureuser@% | | 57 | 2023-04-05 15:43:04 | azureuser@% | | 58 | 2023-04-05 15:44:04 | azureuser@% | | 59 | 2023-04-05 15:45:04 | azureuser@% | | 60 | 2023-04-05 15:46:04 | azureuser@% | | 61 | 2023-04-05 15:47:04 | azureuser@% | +----+---------------------+-------------+ 61 rows in set (0.23 sec)
Inne scenariusze
Zdarzenie można skonfigurować na podstawie wymagań konkretnego scenariusza. Poniżej przedstawiono kilka podobnych przykładów planowania instrukcji SQL do uruchamiania w różnych interwałach czasu.
Uruchom teraz instrukcję SQL i powtórz raz dziennie bez końca
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
COMMENT 'Comment'
DO
<your statement>;
Uruchamianie instrukcji SQL co godzinę bez końca
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Comment'
DO
<your statement>;
Uruchamianie instrukcji SQL codziennie bez końca
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS str_to_date( date_format(now(), '%Y%m%d 0200'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
COMMENT 'Comment'
DO
<your statement>;
Niekonfigurowalne parametry serwera
Następujące parametry serwera nie są konfigurowalne w usłudze:
Parametr | Stała wartość |
---|---|
innodb_file_per_table w warstwie podstawowa |
WYŁ. |
innodb_flush_log_at_trx_commit |
1 |
sync_binlog |
1 |
innodb_log_file_size |
256 MB |
innodb_log_files_in_group |
2 |
Inne zmienne, które nie zostały wymienione tutaj, są ustawione na domyślne wartości MySQL. Zapoznaj się z dokumentacją programu MySQL dla wersji 8.0, 5.7 i 5.6.
Następne kroki
- Dowiedz się, jak skonfigurować parametry serwera przy użyciu witryny Azure Portal
- Dowiedz się, jak skonfigurować parametry serwera przy użyciu interfejsu wiersza polecenia platformy Azure
- Dowiedz się, jak skonfigurować parametry serwera przy użyciu programu PowerShell