Wéi Setup MySQL Master-Slave Replikatioun op Ubuntu 18.04


MySQL Master-Sklave Replikatioun ass eng Prozedur déi et erlaabt Datebankdateien iwwer een oder méi Noden an engem Netzwierk ze replizéieren oder kopéieren. Dëse Setup bitt Redundanz a Feelertoleranz sou datt am Fall vun engem Ausfall am Master Node d'Datebanken nach ëmmer am Sklave Node erëmfonnt kënne ginn. Dëst gëtt de Benotzer Fridden vum Geescht datt alles an all Fall net verluer geet well eng Replika vun den Datenbanken nach ëmmer vun engem anere Server zréckgezunn kënne ginn.

An dësem Guide gitt Dir léiere wéi Dir eng MySQL Datebank Master-Sklave Replikatioun op engem Ubuntu 18.04 System ausféiert.

Am Setup wäerte mir zwee Server hunn déi Ubuntu 18.04 mat de folgende IP Adressen lafen.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Loosst eis elo tauchen a kucken wéi mir de Master-Sklave Replikatiounssetup op Ubuntu konfiguréieren.

Schrëtt 1: Installéiert MySQL op Master- a Sklavennoden

Ubuntu Repositories enthalen Versioun 5.7 vu MySQL. Fir all nei Features ze profitéieren a potenziell Problemer ze vermeiden, sollt Dir déi lescht MySQL Versioun installéieren. Awer als éischt, loosst eis déi zwee Noden aktualiséieren mat dem folgenden apt Kommando.

$ sudo apt update

Fir MySQL op béide Wirbelen z'installéieren, fuert de Kommando aus.

$ sudo apt install mysql-server mysql-client

Als nächst, öffnen d'mysql Konfiguratiounsdatei.

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

Um Master Node, scroll a lokaliséiert den bind-Adress Attribut wéi hei ënnendrënner.

bind-address 	 =127.0.0.1

Ännert d'Loopback Adress fir mat der IP Adress vum Master Node ze passen.

bind-address  	=10.128.0.28

Als nächst gitt e Wäert fir den Server-ID Attribut an der [mysqld] Sektioun. D'Zuel déi Dir gewielt hutt sollt net mat enger anerer Server-ID Nummer passen. Loosst eis de Wäert 1 zouginn.

server-id	 =1

Um Enn vun der Konfiguratiounsdatei, kopéiert a paste d'Linnen hei ënnen.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Gitt d'Konfiguratiounsdatei aus an de MySQL Service nei starten fir d'Ännerungen op de Master Node a Kraaft ze huelen.

$ sudo systemctl restart mysql

Fir z'iwwerpréiwen datt MySQL Server leeft wéi erwaart, gitt de Kommando aus.

$ sudo systemctl status mysql

Perfekt! MySQL Server leeft wéi erwaart!

Schrëtt 2: Erstellt en neie Benotzer fir Replikatioun um Master Node

An dëser Sektioun wäerte mir e Replikatiouns Benotzer am Master Node erstellen. Fir dëst z'erreechen, aloggen op de MySQL Server wéi gewisen.

$ sudo mysql -u root -p

Als nächst gitt weider an fuert d'Ufroen hei ënnen aus fir e Replik Benotzer ze kreéieren an Zougang zum Replikatiounssklav ze ginn. Denkt drun Är IP Adress ze benotzen.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

Als nächst fuert de folgende Kommando aus.

mysql> SHOW MASTER STATUS\G

D'Output sollt ähnlech sinn wéi dat wat Dir hei ënnen gesitt.

Sidd gär an notéiert de mysql-bin.000002 Wäert an d'Positiouns-ID 1643. Dës Wäerter wäerten entscheedend sinn wann Dir de Sklave Server opstellt.

Schrëtt 3: Konfiguréieren de MySQL Sklave Server

Gitt op de Sklave Server eraus a wéi mir mam Master Server gemaach hunn, öffnen d'MySQL Konfiguratiounsdatei.

$ sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

Just wéi de Master Server, fuert weider fir déi folgend Zeilen z'änneren.

bind-address           = 10.128.0.29

Wéi virdrun, spezifizéiert e Wäert fir den Server-ID Attribut an der [mysqld] Sektioun. Dës Kéier wielt en anere Wäert. Loosst eis mat 2 goen.

server-id		=2 

Nach eng Kéier, Paste d'Linnen hei ënnen um Enn vun der Konfiguratiounsdatei.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Nächst Restart MySQL Server op Sklave Node.

$ sudo systemctl restart mysql

Eemol gemaach, späichert a gitt den Texteditor aus

Als nächst, loggt Iech op d'MySQL Shell un wéi et ugewise gëtt.

$ sudo mysql -u root -p

An dësem Schrëtt musst Dir eng Konfiguratioun maachen, déi de Sklave-Server erlaabt mat dem Master-Server ze verbannen. Awer als éischt, stoppt d'Sklave thread wéi gewisen.

mysql> STOP SLAVE; 

Fir de Sklave-Server z'erméiglechen de Master-Server ze replizéieren, fuert de Kommando.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='[email ', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Wann Dir gär genuch sidd, wäert Dir beobachten datt mir de mysql-bin.00002 Wäert a Positiouns ID 1643 virdrun benotzt hunn, dee virdru ugewise gouf nodeems de Sklave Replikatioun Benotzer erstallt gouf.

Zousätzlech goufen d'IP Adress vum Master Server, de Replikatiouns Benotzer a Passwuert benotzt.

Méi spéit, fänkt de Fuedem un, deen Dir virdru gestoppt hat.

mysql> START SLAVE;

Schrëtt 4: Verifizéiert d'MySQL Master-Slave Replikatioun

Fir z'iwwerpréiwen ob de Setup wierklech funktionnéiert wéi erwaart, wäerte mir eng nei Datebank um Master erstellen a kucken ob et um MySQL Slave Server replizéiert gouf.

Log op MySQL am Master Server.

$ sudo mysql -u root -p

Loosst eis eng Testdatebank erstellen. An dësem Fall wäerte mir eng Datebank mam Numm repplication_db erstellen.

mysql> CREATE DATABASE replication_db;

Elo loggt Iech op Är MySQL Instanz am Sklave Server un.

$ sudo mysql -u root -p

Elo Lëscht d'Datenbanken mat der Ufro.

mysql> SHOW DATABASES;

Dir mierkt datt d'Datebank, déi Dir um Master erstallt hutt, op Sklave replizéiert gouf. Fantastesch ! Är MySQL Master-Sklave Replikatioun funktionnéiert wéi erwaart! Dir kënnt elo sécher sinn datt am Fall vun engem Echec Kopie vun Datebankdateien op de Sklave Server replizéiert ginn.

An dësem Guide hutt Dir geléiert wéi Dir e MySQL Master-Sklave Replikatiounssetup op Ubuntu 18.04 opstellt.