Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zreplikować bazę danych MySQL na inny serwer

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie pliku .php do generowania zrzutu MySQL

  2. Wskazówki dotyczące zapewniania wydajności bazy danych MySQL — część pierwsza

  3. Jak uzyskać wszystkie wartości w kolumnie za pomocą PHP?

  4. Jak stworzyć bloga w PHP i bazie danych MySQL - projektowanie DB

  5. Przywracanie bazy danych MySQL z fizycznych plików