
Wprowadzenie
Pracując z MySQL, można napotkać różne błędy, które mogą zakłócić działanie systemu. Kod błędu 1114 jest jednym z nich i wskazuje na sytuację, gdy tabela, do której użytkownik próbuje zapisać dane, jest pełna. Ten problem jest szczególnie znaczący w systemie replikacji MySQL, gdzie jego rozwiązanie jest kluczowe dla zapewnienia ciągłości pracy.
Opis problemu
Błąd 1114 manifestuje się komunikatem: „Could not execute Write_rows event on table docs; The table 'docs’ is full”. Oznacza to, że nowe wiersze nie mogą zostać zapisane z powodu przekroczenia rozmiaru tabeli tymczasowej. Szczegółowy komunikat błędu może wyglądać tak:
Zaloguj się do MySQL:
| 1 | # mysql -u root -p | 
Zmień wartości zmiennej:
| 1 2 | SET GLOBAL tmp_table_size = 268435456;  -- Ustawienie na 256M SET GLOBAL max_heap_table_size = 268435456;  -- Ustawienie na 256M | 
Po wprowadzeniu tych zmian, wszystkie nowe połączenia do serwera MySQL będą używać tych zaktualizowanych wartości. Możesz je sprawdzić, wykonując:
| 1 2 | SHOW GLOBAL VARIABLES LIKE 'tmp_table_size'; SHOW GLOBAL VARIABLES LIKE 'max_heap_table_size'; | 
Albo
| 1 | SELECT @@tmp_table_size, @@max_heap_table_size; | 
Teraz replikacje można wznowić i powinna lepiej działać. Jednak należy pamiętaj, o modyfikacji konfiguracji, aby po restarcie mysqla zmienne te zostały poprawnie ustawione. Może być koniecznie tutaj wznowienie np replikacji (jeśli wcześniej została zatrzymana):
| 1 | START SLAVE; | 
Jeśli problem został rozwiązany, na tym etapie sprawdzenie stanu replikacji:
| 1 | show slave status \G | 
Nie powinien zwracać żadnych błędów.
Modyfikacja pliku konfiguracyjnego /etc/mysql/my.cnf:
| 1 2 3 4 5 | # cat /etc/mysql/my.cnf ... tmp_table_size=256M max_heap_table_size=256M ... | 
Restart usługi MySQL:
| 1 | # systemctl restart mysql | 
Przed restartem usługi zalecane jest wykonanie SHUTDOWN; w kliencie MySQL.
Należy pamiętać o wznowieniu replikacji.
Ważne uwagi
- Zasoby systemowe: Upewnij się, że serwer dysponuje wystarczającą ilością pamięci RAM do obsługi zwiększonych wartości zmiennych.
- Monitoring wydajności: Po dokonaniu zmian monitoruj wydajność, aby sprawdzić, czy problem został rozwiązany.
- Trwałość konfiguracji: Zmiany w pliku konfiguracyjnym powinny być trwałe, aby uniknąć resetowania wartości po restarcie.
Dodatkowe kroki sprawdzające
- Sprawdzenie dostępnej przestrzeni dyskowej: Możliwe, że problem wynika również z braku dostępnej przestrzeni na dysku. Można to sprawdzić za pomocą poniższej komendy:
| 1 | # df -h | 
Podsumowanie
Rozwiązanie problemu związanego z kodem błędu 1114 w replikacji MySQL wymaga zrozumienia i dostosowania konfiguracji systemu. Opisane kroki pokazują, jak poprzez zwiększenie rozmiaru tabeli tymczasowej można zapobiec występowaniu tego błędu, co umożliwia sprawne działanie systemu replikacji.