MySQL master-slave-replicatie is een procedure waarmee databasebestanden kunnen worden gerepliceerd of gekopieerd over een of meer knooppunten in een netwerk. Deze opstelling biedt redundantie en fouttolerantie zodat in het geval van een storing in de Master node , kunnen de databases nog steeds worden hersteld in de Slave-node . Dit geeft gebruikers de gemoedsrust dat in geen geval alles verloren gaat, aangezien een replica van de databases nog steeds van een andere server kan worden opgehaald.
In deze handleiding leert u hoe u een MySQL . uitvoert database Master-slave replicatie op een Ubuntu 18.04 systeem.
Vereisten
In de setup hebben we twee servers met Ubuntu 18.04 met de volgende IP-adressen.
Master server: 10.128.0.28 Slave server: 10.128.0.29
Laten we er nu in duiken en kijken hoe we de Master-slave . kunnen configureren replicatie instellen op Ubuntu .
Stap 1:installeer MySQL op master- en slave-knooppunten
Ubuntu repositories bevatten versie 5.7 van MySQL . Om te profiteren van nieuwe functies en mogelijke problemen te voorkomen, moet u de nieuwste MySQL-versie installeren. Maar laten we eerst de twee knooppunten bijwerken met het volgende apt-commando.
$ sudo apt update
MySQL installeren Voer op beide knooppunten het commando uit.
$ sudo apt install mysql-server mysql-client
Open vervolgens de mysql configuratiebestand.
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Op het Hoofdknooppunt , scroll en zoek het bind-address
kenmerk zoals hieronder weergegeven.
bind-address =127.0.0.1
Wijzig het loopback-adres zodat het overeenkomt met het IP-adres van het Masterknooppunt .
bind-address =10.128.0.28
Geef vervolgens een waarde op voor de server-id
attribuut in de [mysqld]
sectie. Het nummer dat u kiest, mag niet overeenkomen met een ander server-ID-nummer. Laten we de waarde toewijzen 1
.
server-id =1
Helemaal aan het einde van het configuratiebestand kopieer en plak je de onderstaande regels.
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
Sluit het configuratiebestand af en start de MySQL-service opnieuw om de wijzigingen door te voeren op het hoofdknooppunt.
$ sudo systemctl restart mysql
Geef de opdracht om te controleren of de MySQL-server werkt zoals verwacht.
$ sudo systemctl status mysql
Perfect! MySQL-server werkt zoals verwacht!
Stap 2:maak een nieuwe gebruiker voor replicatie op hoofdknooppunt
In deze sectie gaan we een replicatiegebruiker maken in het hoofdknooppunt . Om dit te bereiken, logt u in op de MySQL-server zoals weergegeven.
$ sudo mysql -u root -p
Ga vervolgens verder en voer de onderstaande query's uit om een replicagebruiker te maken en toegang te verlenen tot de replicatieslave. Vergeet niet uw IP-adres te gebruiken.
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';
Voer vervolgens de volgende opdracht uit.
mysql> SHOW MASTER STATUS\G
De uitvoer zou vergelijkbaar moeten zijn met wat u hieronder kunt zien.
Wees scherp en noteer de mysql-bin.000002
waarde en de Positie-ID 1643
. Deze waarden zijn cruciaal bij het instellen van de slave-server .
Stap 3:Configureer de MySQL Slave Server
Ga naar de slave-server en zoals we deden met de Master-server , open het MySQL-configuratiebestand.
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Net als de hoofdserver , ga verder met het bewerken van de volgende regels.
bind-address = 10.128.0.29
Geef zoals eerder een waarde op voor de server-id
attribuut in de [mysqld]
sectie. Selecteer deze keer een andere waarde. Laten we gaan met 2
.
server-id =2
Plak nogmaals de onderstaande regels helemaal aan het einde van het configuratiebestand.
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
Start vervolgens de MySQL-server opnieuw op het slave-knooppunt.
$ sudo systemctl restart mysql
Als u klaar bent, slaat u de teksteditor op en sluit u deze af
Log vervolgens in op de MySQL-shell zoals weergegeven.
$ sudo mysql -u root -p
In deze stap moet u een configuratie maken waarmee de slave-server om verbinding te maken met de hoofdserver . Maar stop eerst de slave-threads zoals weergegeven.
mysql> STOP SLAVE;
Om de slave-server toe te staan om de Hoofdserver te repliceren , voer de opdracht uit.
mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='[email protected]', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;
Als je enthousiast genoeg bent, zul je zien dat we de mysql-bin.00002
hebben gebruikt waarde en positie-ID 1643
eerder weergegeven na het aanmaken van de slave-replicatiegebruiker.
Bovendien zijn het IP-adres, de replicatiegebruiker en het wachtwoord van de hoofdserver gebruikt.
Start later de draad die u eerder had gestopt.
mysql> START SLAVE;
Stap 4:Controleer de MySQL Master-Slave-replicatie
Om te controleren of de setup inderdaad werkt zoals verwacht, gaan we een nieuwe database maken op de master en controleren of deze is gerepliceerd op de MySQL Slave-server.
Log in op MySQL op de Hoofdserver .
$ sudo mysql -u root -p
Laten we een testdatabase maken. In dit geval zullen we een database maken met de naam replication_db .
mysql> CREATE DATABASE replication_db;
Log nu in op uw MySQL-instantie op de slave-server .
$ sudo mysql -u root -p
Maak nu een lijst van de databases met behulp van de query.
mysql> SHOW DATABASES;
U zult de database opmerken die u hebt gemaakt op de master is gerepliceerd op slave . Geweldig ! Uw MySQL Master-slave-replicatie werkt zoals verwacht! U kunt er nu zeker van zijn dat in het geval van een storing, kopieën van databasebestanden worden gerepliceerd naar de slave-server.
Conclusie
In deze handleiding hebt u geleerd hoe u een MySQL Master-slave . instelt replicatie instellen op Ubuntu 18.04 .