Android

Hoe mysql master te configureren

How to Configure MySQL Database Replication with Master and Slave on CentOS

How to Configure MySQL Database Replication with Master and Slave on CentOS

Inhoudsopgave:

Anonim

MySQL-replicatie is een proces waarmee u automatisch gegevens van een databaseserver naar een of meer servers kunt kopiëren.

MySQL ondersteunt een aantal replicatietopologieën waarbij Master / Slave-topologie een van de meest bekende topologieën is waarin één databaseserver fungeert als master, terwijl een of meer servers fungeren als slaves. Standaard is de replicatie asynchroon, waarbij de master gebeurtenissen die databasemodificaties beschrijven naar het binaire logboek verzendt en slaves de gebeurtenissen aanvragen wanneer ze gereed zijn.

In deze zelfstudie leggen we uit hoe u een MySQL Master / Slave-replicatie instelt met één master en één slave-server op CentOS 7. Dezelfde stappen zijn van toepassing op MariaDB.

Dit type replicatietopologie is het meest geschikt voor het inzetten van leesreplica's voor leesschaling, live databaseback-up voor noodherstel en voor analysetaken.

voorwaarden

In dit voorbeeld gaan we ervan uit dat u twee servers hebt waarop CentOS 7 wordt uitgevoerd, die via een privénetwerk met elkaar kunnen communiceren. Als uw hostingprovider geen privé-IP-adressen verstrekt, kunt u de openbare IP-adressen gebruiken en uw firewall configureren om verkeer op poort 3306 alleen van vertrouwde bronnen toe te staan.

De servers in dit voorbeeld hebben de volgende IP's:

Master IP: 192.168.121.59 Slave IP: 192.168.121.14

Installeer MySQL

De standaard De CentOS 7-opslagplaatsen bevatten geen MySQL-pakketten, dus installeren we MySQL vanuit hun officiële Yum Repository. Om problemen te voorkomen, zullen we dezelfde MySQL-versie 5.7 op beide servers installeren.

Installeer MySQL op zowel de Master- als Slave-servers:

sudo yum localinstall sudo yum install mysql-community-server

Nadat de installatie is voltooid, start u de MySQL-service en schakelt u deze in om automatisch op te starten met:

sudo systemctl enable mysqld sudo systemctl start mysqld

Wanneer de MySQL-server voor het eerst wordt gestart, wordt een tijdelijk wachtwoord gegenereerd voor de MySQL-rootgebruiker. Gebruik het volgende grep-commando om het wachtwoord te vinden:

sudo grep 'temporary password' /var/log/mysqld.log

Voer de opdracht mysql_secure_installation uit om uw nieuwe mysql_secure_installation te stellen en de beveiliging van het MySQL-exemplaar te verbeteren:

mysql_secure_installation

Voer het tijdelijke root-wachtwoord in en beantwoord Y (ja) op alle vragen.

Het nieuwe wachtwoord moet ten minste 8 tekens lang zijn en ten minste één hoofdletter, één kleine letter, één cijfer en één speciaal teken bevatten.

Configureer de hoofdserver

Eerst zullen we de master MySQL-server configureren en de volgende wijzigingen aanbrengen:

  • Stel de MySQL-server in om te luisteren op het privé-IP. Stel een unieke server-ID in. Schakel de binaire logboekregistratie in.

Open hiervoor het MySQL-configuratiebestand en voeg de volgende regels toe aan de sectie:

sudo nano /etc/my.cnf meester: /etc/my.cnf

bind-address = 192.168.121.59 server-id = 1 log_bin = mysql-bin

Nadat u klaar bent, start u de MySQL-service opnieuw om de wijzigingen door te voeren

sudo systemctl restart mysqld

De volgende stap is het maken van een nieuwe replicatiegebruiker. Log in op de MySQL-server als rootgebruiker:

mysql -uroot -p

Voer vanuit de MySQL-prompt de volgende SQL-query's uit die de replica gebruiker maken en het recht REPLICATION SLAVE aan de gebruiker verlenen:

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';

GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14'; Zorg ervoor dat u het IP-adres wijzigt met uw slave IP-adres. U kunt de gebruiker een naam geven zoals u dat wilt.

Terwijl u zich nog steeds in de MySQL-prompt bevindt, voert u de volgende opdracht uit die de binaire bestandsnaam en positie afdrukt.

SHOW MASTER STATUS\G

*************************** 1. row *************************** File: mysql-bin.000001 Position: 1427 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec)

Let op de bestandsnaam 'mysql-bin.000001' en positie '1427'. U hebt deze waarden nodig bij het configureren van de slaveserver. Deze waarden zullen waarschijnlijk anders zijn op uw server.

Configureer de slaveserver

Zoals voor de hoofdserver hierboven, zullen we de volgende wijzigingen aanbrengen in de slaveserver:

  • Stel de MySQL-server in om op de privé-IPS te luisteren Stel een unieke server-ID in Schakel de binaire logboekregistratie in

Open het MySQL-configuratiebestand en bewerk de volgende regels:

sudo nano /etc/my.cnf slave: /etc/my.cnf

bind-address = 192.168.121.14 server-id = 2 log_bin = mysql-bin

Start de MySQL-service opnieuw:

sudo systemctl restart mysqld

De volgende stap is het configureren van de parameters die de slaveserver zal gebruiken om verbinding te maken met de masterserver. Log in op de MySQL-shell:

mysql -uroot -p

Stop eerst de hulpdraden:

STOP SLAVE;

Voer de volgende query uit waarmee de slave de master repliceert:

CHANGE MASTER TO MASTER_HOST='192.168.121.59', MASTER_USER='replica', MASTER_PASSWORD='strong_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1427;

Zorg ervoor dat u het juiste IP-adres, gebruikersnaam en wachtwoord gebruikt. De naam en positie van het logboekbestand moeten hetzelfde zijn als de waarden die u van de masterserver hebt verkregen.

Zodra u klaar bent, start u de slave-threads.

START SLAVE;

Test de configuratie

Op dit punt zou u een werkende Master / Slave-replicatie-instelling moeten hebben.

Om te controleren of alles werkt zoals verwacht, maken we een nieuwe database op de hoofdserver:

mysql -uroot -p

CREATE DATABASE replicatest;

Log in op de slave MySQL-shell:

mysql -uroot -p

Voer de volgende opdracht uit om alle databases weer te geven:

SHOW DATABASES;

U zult merken dat de database die u op de masterserver hebt gemaakt, op de slave wordt gerepliceerd:

+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | replicatest | | sys | +--------------------+ 5 rows in set (0.00 sec)

Conclusie

In deze tutorial hebben we laten zien dat u een MySQL Master / Slave-replicatie op CentOS 7 maakt.

Als je nog vragen hebt, kun je een reactie achterlaten.

centos mysql mariadb