MySQL Replication umożliwia łatwe kopiowanie bazy danych z jednego serwera na drugi. MySQL obsługuje różne rodzaje replikacji, takie jak replikacja master-slave, master-master i replikacja grupowa. MariaDB obsługuje również replikację z wieloma wzorcami. W tym artykule przyjrzymy się replikacji Master-Slave w MySQL i nauczymy się replikować bazę danych MySQL w Linuksie. Możesz użyć tych kroków, aby zreplikować bazę danych MySQL w Ubuntu, Debianie, CentOS, Fedorze, Red hat i innych typach Linuksa.
Jak zreplikować bazę danych MySQL
Oto kroki, aby zreplikować bazę danych MySQL. Do naszej konfiguracji będziemy potrzebować bazy danych master (IP – 54.24.32.12) i bazy danych slave (IP – 45.12.21.23). Zreplikujemy bazę danych o nazwie exampledb od pana do niewolnika. Założyliśmy, że masz zainstalowany MySQL na obu tych serwerach i masz uprawnienia roota na obu z nich. W przeciwnym razie możesz zainstalować MySQL za pomocą następującego polecenia
$ sudo apt-get install mysql-server mysql-client
Przeczytaj bonus:Najlepsze alternatywy dla MySQL Workbench
1. Edytuj plik konfiguracji głównej
Otwórz terminal na serwerze głównej bazy danych i uruchom następujące polecenie
$ sudo vi /etc/mysql/my.cnf
Domyślnie połączenia zdalne są wyłączone w MySQL. Musimy zezwolić na zdalne połączenie od urządzenia podrzędnego do urządzenia nadrzędnego w celu replikacji. Odkomentujmy więc następujące dwie linie, aby umożliwić zdalne połączenia, dodając # na ich początku, jak pokazano poniżej
#skip-networking #bind-address=127.0.0.1
Dodaj lub odkomentuj następujące wiersze w bloku [mysqld], aby wyglądały jak poniżej.
[mysqld]
server-id=1
log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb
Przyjrzyjmy się każdemu z powyższych wierszy. Identyfikator serwera w pierwszym wierszu określa unikalny numer identyfikacyjny dla mastera. Musi to być liczba dodatnia od 1 do 2^32.
pojemnik na dziennik określa lokalizację pliku dziennika, który zostanie wypełniony przez MySQL szczegółami replikacji.
binlog-do-db wskazuje nazwę bazy danych, która ma zostać zreplikowana.
Zrestartuj MySQL Server, aby zastosować zmiany
$ sudo service mysql restart
Zaloguj się do MySQL jako użytkownik root
$ sudo mysql -u root -p
i uruchom następujące polecenie
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | exampledb | | +------------------+----------+--------------+------------------+
Zwróć uwagę na powyższe szczegóły, będziemy ich potrzebować później w kroku 3.
Przeczytaj bonus:Jak włączyć SSL/TLS w MySQL
2. Utwórz użytkownika replikacji
Zaloguj się do serwera MySQL na master.
$ sudo mysql -u root -p
Zostaniesz poproszony o hasło roota.
Po zalogowaniu się do MySQL uruchom następujące polecenia, aby utworzyć zdalnego użytkownika slave_user i nadaj mu uprawnienia do replikacji dla wszystkich baz danych. Zastąp 45.12.21.23 poniżej adresem IP swojego serwera podrzędnego i zastąp $password odpowiednim hasłem zgodnie z wymaganiami.
mysql> CREATE USER slave_user@45.12.21.23; mysql> GRANT REPLICATION SLAVE ON *.* TO slave_user@45.12.21.23 IDENTIFIED BY '$password'; mysql> FLUSH PRIVILEGES;
Dodaj regułę zapory przychodzącej dla portu 3306 i zezwól na 45.12.21.23. Ten zdalny użytkownik musi połączyć się z główną bazą danych, aby nastąpiła replikacja.
Przeczytaj bonus:Jak zmienić sortowanie wszystkich tabel w MySQL
3. Edytuj plik konfiguracyjny urządzenia podrzędnego
Otwórz terminal na serwerze podrzędnej bazy danych i uruchom następujące polecenie
$ sudo vi /etc/mysql/my.cnf
Dodaj następujące wiersze pod [mysqld], aby wyglądały jak
[mysqld] server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.log log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = exampledb
W pierwszym wierszu przypisujemy identyfikator serwera 2 do serwera podrzędnego. Następne kilka wierszy określa lokalizacje plików dziennika przekazywania i dziennika replikacji. Ostatni wiersz określa bazę danych do replikacji.
Zrestartuj MySQL Server i zaloguj się do MySQL
$ sudo service mysql restart $ sudo mysql -u root -p
Uruchom następujące polecenia, aby utworzyć pustą bazę danych na urządzeniu podrzędnym.
mysql> CREATE DATABASE exampledb; mysql> USE exampledb;
Załaduj dane z głównej bazy danych do podrzędnej bazy danych
mysql> LOAD DATA FROM MASTER;
Wyjdź z MySQL.
Przeczytaj bonus:Najlepsze blogi dotyczące baz danych do obserwowania
4. Zainicjuj replikację
Gdy jesteś zalogowany do MySQL, uruchom następujące polecenia, aby zainicjować proces replikacji. Zastąp części pogrubieniem z Twoimi wartościami.
mysql> SLAVE STOP; mysql> CHANGE MASTER TO MASTER_HOST='54.24.32.12', MASTER_USER='slave_user', MASTER_PASSWORD='<password>', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
MASTER_HOST – adres IP lub nazwa hosta mastera (54.24.32.12).
MASTER_USER – użytkownik podrzędny, który utworzyliśmy w kroku #2.
MASTER_PASSWORD – hasło użytkownika slave, które utworzyliśmy w kroku #2.
MASTER_LOG_FILE – plik MySQL oddany w kroku #1 podczas uruchamiania
POKAŻ STATUS MASTER
MASTER_LOG_POS – pozycja zwrócona przez MySQL po uruchomieniu SHOW MASTER STATUS w kroku #1
Na koniec uruchamiamy urządzenie podrzędne, aby rozpocząć replikację bazy danych MySQL.
mysql> START SLAVE;
Mamy nadzieję, że ten artykuł pomoże ci zreplikować bazę danych MySQL.