Mam replikację uruchomioną na Percona Server 5.5, postępując zgodnie z tym przewodnikiem i zastanawiałem się, czy powinienem dodać read-only=1
do mojego urządzenia podrzędnego, my.cnf
aby był tylko do odczytu?
Przewodnik konfiguruje replikację dla tabeli mysql, aby użytkownicy byli replikowani, ale przede wszystkim używam slave'a do robienia mysqldump, aw nagłych wypadkach rekonfiguruję go jako master, więc nie sądzę, że potrzebujemy (lub powinniśmy) włączyć zapis na ciągle?
mysql
replication
mysql-5.5
percona
odnośnik
źródło
źródło
Odpowiedzi:
Gdy Slave jest tylko do odczytu , nie jest w 100% chronione przed światem.
Według dokumentacji MySQL na
read-only
Zatem każdy z uprawnieniami SUPER może czytać i pisać do takiego Slave ...
Upewnij się, że wszyscy nieuprzywilejowani użytkownicy nie mają uprawnienia SUPER.
Jeśli chcesz cofnąć wszystkie uprawnienia SUPER za jednym razem, uruchom to na Master i Slave:
W odniesieniu do Slave, to zarezerwuje SUPER przywilej do sprawiedliwego
root
i zapobiegnie robieniu zapisów, od których w przeciwnym razie byliby ograniczeni.AKTUALIZACJA 28.08.2015, 17:39 EDT
Niedawno dowiedziałem się, że MySQL 5.7 wprowadzi super_read_only .
To zatrzyma SUPER użytkowników na ich ścieżkach, ponieważ 5.7 Dokumenty mówią
źródło
Tak, lepiej uruchomić serwery podrzędne z dostępnymi trybami R / O. Wcześniej uprzywilejowani użytkownicy i tak mogli modyfikować dane takiego urządzenia podrzędnego, ale później otrzymali również „pokrętło” ograniczenia R / O.
Dlaczego jest to ważne - lepiej zawodzić przy zapisie niż żałować przy niewłaściwym zapisie, które może skutecznie uczynić slave bezużytecznym z powodu zwykłego pomieszania danych lub takich rzeczy jak konflikt kluczy, który mógłby przerwać replikację (nigdy więcej rzeczywistego slave).
Istnieje również oprogramowanie używane do koordynowania / podziału obciążenia, które bierze pod uwagę status R / O serwerów w pulach, które skonfigurowali dla prawidłowego routingu żądań między tymi serwerami.
To jest bezpieczeństwo. Użyj tego.
źródło
Problem tutaj, w tym MySQL 8.0, polega na tym, że MySQL nie zmusza cię do ustawienia
read_only = ON
podczas wykonywaniastart slave
polecenia. Dlaczego jest problem? Ponieważ prawie wszystkie bazy danych MySQL DBA używają swoich slaveów na RO, aby zapobiec uszkodzeniu danych, i zawsze istnieje jeden dba, który przypadkowo nieprawidłowo uruchamia SQL, który modyfikuje dane na slave, lub aplikację, która nie zmieni jego konf. Jeśli chcę pisać na niewolnikach, ponieważ ma kilka schematów i muszę pisać na tym schemacie, więcread_only
polecenie musi być bardziej inteligentne i pozwól nam zrobićread_only for schema
. Może to być bardzo przydatne na serwerach i masterach podrzędnych, które wykonująReplicate_Ignore_DB
. Więc na razie musisz ręcznie kontrolować i być bardzo ostrożnym.Cieszyć się.
źródło