Powrót do bloga

Konfiguracja replikacji w MySQL na Ubuntu

Konfiguracja replikacji w MySQL na Ubuntu

Replikacja MySQL to interesująca funkcja, która pozwala użytkownikom zarządzać wieloma kopiami jednej lub więcej baz danych MySQL. Dane są kopiowane automatycznie z źródłowych do replikowanych baz danych. Może to być przydatne w wielu sytuacjach, takich jak praca z danymi bez narażania głównej bazy danych, tworzenie kopii zapasowych danych lub skalowanie dostępu do bazy danych itp.

W tym poradniku omówimy kroki konfiguracji instancji MySQL na jednym serwerze jako bazy źródłowej, a następnie skonfigurowania instancji MySQL na innym serwerze, aby działała jako jej replika.

Wymagania wstępne

Ten poradnik zademonstruje bardzo prosty przykład replikacji MySQL. Obejmuje on jedną źródłową i jedną replikowaną bazę danych. Baza źródłowa jest główną kopią bazy danych, podczas gdy baza replika będzie repliką źródłowej bazy danych. Na potrzeby naszej demonstracji skonfigurowano dwa serwery o następujących adresach IP:

  • Serwer źródłowy: 31.171.240.179
  • Serwer repliki: 31.171.250.139

Każdy serwer jest skonfigurowany z najnowszą wersją Ubuntu 20.04 server. Najpierw wykonaj kroki z samouczka, które pokazują jak skonfigurować serwer Ubuntu. Pamiętaj, że liczba baz replik może być większa. Ten poradnik zakłada, że masz już zainstalowany i skonfigurowany serwer MySQL. Potrzebujesz pomocy z instalacją MySQL? Ten poradnik szczegółowo przedstawia kroki instalacji i podstawowego użytkowania MySQL.

Krótko mówiąc, oto pakiety, których potrzebujesz:

Zapory sieciowe (firewalle) na obu systemach powinny być skonfigurowane tak, aby zezwalać na ruch z obu systemów na porcie 3306. Jest to domyślny port dla MySQL. Możesz dowiedzieć się więcej o podstawach UFW wraz z demonstracją z naszego wpisu na blogu.

Konfiguracja źródłowej bazy danych

  • Dostrajanie konfiguracji MySQL

MySQL używa my.cnf jako głównego pliku konfiguracyjnego. Zaktualizujemy my.cnf, aby wyznaczyć serwer jako źródłowy. Najpierw otwórz plik konfiguracyjny za pomocą edytora tekstu:

Następnie dodaj poniższe linie w sekcji mysqld:

Replication in MySQL 4

Co oznaczają te linie?

  • bind-address: To wpis, który definiuje powiązanie między usługą a adresem IP. Domyślnie wartością może być 127.0.0.1 (localhost). Nową wartością będzie adres IP serwera.
  • server-id: W replikacji MySQL każdy serwer must mieć unikalny identyfikator serwera (server ID). Może to być dowolna liczba. Dla uproszczenia ustawiono go na 1.
  • log_bin: Przechowuje rzeczywiste szczegóły replikacji. Baza danych repliki skopiuje wszystko, co zostało zarejestrowane w logu.
  • binlog_do_db: Ten wpis wskazuje bazę danych, która będzie podlegać replikacji na serwerze repliki. Baz danych może być więcej niż jedna. W tym przypadku przykładową bazą danych jest newdatabase.

Po wprowadzeniu zmian zapisz plik konfiguracyjny. MySQL wymaga restartu, aby załadować zmiany w my.cnf:

  • Nadawanie uprawnień użytkownikowi repliki

Kolejnym krokiem jest utworzenie użytkownika repliki i nadanie mu odpowiednich uprawnień. Należy to zrobić z poziomu powłoki MySQL. Najpierw uruchom powłokę MySQL:

Następnie utwórz dedykowanego użytkownika dla bazy danych repliki. Odpowiednio zmień nazwę użytkownika i hasło:

Teraz nadaj użytkownikowi odpowiednie uprawnienia:

Więcej informacji o użytkownikach i uprawnieniach MySQL znajdziesz w naszym wpisie na blogu. Następnie przeładuj tabelę uprawnień, aby zmiany weszły w życie:

FLUSH PRIVILEGES

  • Dostrajanie bazy danych

Potrzebujemy kopii źródłowej bazy danych na replice. Istnieje możliwość ręcznego zbudowania struktury. Jednak w większości przypadków jest to dość niewygodne. Dlatego bezpośredni eksport bazy danych jest najbardziej optymalnym rozwiązaniem. W tym przykładzie źródłową bazą danych jest newdatabase. Zmień bieżącą bazę danych:

Poniższe polecenie zablokuje bazę danych, zapobiegając wprowadzaniu nowych zmian:

Następnie sprawdź status bazy danych:

Replication in MySQL 3

Z tej pozycji baza danych repliki rozpocznie replikację ze źródła. Te liczby będą przydatne później, więc warto je zapisać. Jeśli jakiekolwiek zmiany zostaną wprowadzone z tego samego okna, MySQL automatycznie odblokuje bazę danych. Dlatego zaleca się wykonanie kolejnych kroków w innej karcie lub oknie terminala. Baza danych jest nadal zablokowana. Wyeksportuj ją do przenośnego pliku SQL:

Zadanie zostało zakończone. Następnie odblokuj bazę danych:

Na koniec wyjdź z powłoki:

Konfiguracja repliki

Teraz nadszedł czas na skonfigurowanie bazy danych repliki.

  • Importowanie źródłowej bazy danych

Potrzebujemy kopii źródłowej bazy danych na serwerze repliki. W tym celu użyjemy wyeksportowanego wcześniej pliku SQL. Uruchom powłokę MySQL:

Następnie utwórz pustą bazę danych, używając tej samej nazwy bazy danych:

Następnie wyjdź z powłoki:

Teraz zaimportuj plik SQL do bazy danych:

sudo mysql -u

  • Dostrajanie konfiguracji MySQL

W pliku konfiguracyjnym MySQL należy zadeklarować kilka rzeczy. Otwórz plik konfiguracyjny w edytorze tekstu:

Poniższe wpisy powinny znaleźć się w sekcji mysqld. W przeciwnym razie to nie zadziała. Pierwszym z nich jest identyfikator serwera (server ID). Jak wspomniano wcześniej, musi on być unikalny dla wszystkich serwerów w konfiguracji replikacji źródło-replika. Na potrzeby demonstracji ustawiono go na 2:

Następnie dodaj następujące linie:

Replication in MySQL 2

W tym miejscu tylko relay-log jest nowym wpisem. Jest to dziennik, który serwer repliki tworzy podczas replikacji. Format dziennika jest taki sam jak w przypadku dziennika binarnego. Zapisz plik konfiguracyjny i zrestartuj MySQL:

  • Włączanie replikacji

Na koniec jesteśmy gotowi do włączenia replikacji z poziomu MySQL. Uruchom powłokę MySQL:

Uruchom następujące polecenie. Najpierw odpowiednio zmień adres IP, nazwę użytkownika i hasła:

CHANGE MASTER TO MASTER_HOST

Polecenie to realizuje następujące zadania:

  • Bieżący serwer zostaje oznaczony jako replika serwera źródłowego.
  • Serwer repliki posiada odpowiednie dane logowania.
  • Serwer repliki wie, od którego miejsca rozpocząć replikację. Pamiętasz status bazy danych, który sprawdzaliśmy na serwerze źródłowym? Stamtąd pochodzą plik dziennika źródłowego i pozycja dziennika.

Na koniec aktywuj serwer repliki:

START REPLICA

  • Różne

Chcesz sprawdzić szczegóły bieżącego stanu repliki? Uruchom następujące polecenie w powłoce MySQL. Znak \G na końcu służy do zmiany układu tekstu, aby uczynić go bardziej czytelnym:

Replication in MySQL 1

Jeśli wystąpi problem z połączeniem, spróbuj uruchomić serwer repliki, aby go pominąć:

Podsumowanie

Replikacja MySQL niesie za sobą wiele konsekwencji. To tylko krótka demonstracja jej podstawowej formy. Można ją jednak łatwo rozszerzyć na konfiguracje z wieloma źródłami i replikami. Te same kroki będą miały zastosowanie również do wszelkich bardziej złożonych konfiguracji wyższego poziomu. Zawsze warto przetestować konfigurację po jej zakończeniu. Spróbuj wykonać kilka poleceń insertdelete lub update na źródłowej bazie danych. Jeśli konfiguracja działa, baza danych repliki powinna poprawnie wszystko pobrać.

Ponadto możesz zapoznać się z dodatkowymi materiałami na naszym blogu, opisującymi, co można zrobić z MySQL:

Miłego korzystania!

 

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.