Czy istnieje sposób na pominięcie określonej tabeli w dziennikach binarnych?
Mam skonfigurowane dzienniki binarne jako moją strategię przyrostowego tworzenia kopii zapasowych między nocnymi kopiami zapasowymi. Ale mamy jedną ogromną tabelę referencyjną, którą będziemy aktualizować co noc z procesu wsadowego (tabela 70 GB). Ta tabela jest tylko czytana i jest aktualizowana co noc przy użyciumysqlimport
.
Podczas procesu aktualizacji tej tabeli tylko do celów referencyjnych dzienniki binarne powodują dość poważne opóźnienie (szczególnie, gdy wykonuję pełną aktualizację 70 GB). Zasadniczo musi to zrobić 70 GB dwa razy. fuj.
Tabela referencyjna używa obecnie MyISAM (zablokowałem InnoDB, próbując go załadować, więc wypróbowałem MyISAM).
Odpowiedzi:
Nie ma opcji mysql, aby zignorować tabelę w dzienniku binarnym.
Jeśli możesz przenieść tabelę do osobnej bazy danych, możesz skorzystać z opcji binlog-ignore-db , ale ma to swoją gotchas . Powinieneś zrozumieć, jak MySQL ocenia reguły replikacji .
Jeśli potrafisz napisać skrypt opakowujący, aby załadować dane zamiast mysqlimport (strona podręcznika mówi, że jest to interfejs wiersza poleceń LOAD DATA INFILE), a użytkownik, którego importujesz dane, może mieć uprawnienia SUPER, których możesz użyć zmiennej sesji sql_log_bin lubić:
Spowoduje to wyłączenie rejestrowania binarnego dla bieżącej sesji, załadowanie danych i ponowne włączenie rejestrowania binarnego.
źródło
możesz użyć
--replicate-ignore-table=db_name.tbl_name
Szczegóły znajdują się na stronie http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_replicate-ignore-table .
źródło