Używam log-error do zapisywania ostrzeżeń/błędów w pliku. Kiedy wykonuję polecenie INSERT IGNORE..SELECT, po prostu zapisz to ostrzeżenie.Ostrzegawcze ostrzeżenie mysql dotyczące ostrzeżenia
120905 3:01:23 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT IGNORE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.
Chcę zatrzymać mysql logwriter zachować błąd powyżej wielokrotnie. (Nie widzę innego logu, ponieważ wypełniają cały plik dziennika ...)
Przede wszystkim wstawiam (a, b, c) do tabeli. c powinno być unikalne w tabeli, a a, b są używane do wyboru. Zapytanie będzie tak
SELECT c FROM table WHERE a=value1 AND value2<b AND b<value3
I moje zapytanie wkładka jest
INSERT IGNORE INTO table VALUES (,,),(,,)...(,,)
Myślałem, że mogę zmienić zapytanie nie produkują ostrzeżenie, ale moje dane zawierają unikalne pole i muszę zagwarantować, że złożone jest unikalny w tabeli. I 500 ~ 2000 wiersze powinny być wstawiane co kilka sekund, więc muszę zrobić luzem wstawić.
Jeśli wrzucono już kilkadziesiąt milionów wierszy, potrzebuję wstawić kolejne 2000 wierszy w kilka sekund. Jak mogę bezpiecznie umieścić je w tabeli bez wypełniania pliku dziennika ostrzeżeniami?
(nie mogę wyłączyć dziennik binarny bo trzeba użyć mysql replikacji).
Powtarzasz tabele - ponieważ jeśli ten błąd jest znaczący. –
Tak, używam replikacji mysql do tworzenia kopii zapasowych, powody skalowalności – user1640242
Czy przeczytałeś wtedy komunikat o błędzie? – zerkms