Android

Hur man konfigurerar mysql master

Mysql: Master-Slave Replication | CentOS 7

Mysql: Master-Slave Replication | CentOS 7

Innehållsförteckning:

Anonim

MySQL-replikering är en process som låter dig automatiskt kopiera data från en databaseserver till en eller flera servrar.

MySQL stöder ett antal replikeringstopologier där Master / Slave-topologi är en av de mest kända topologierna där en databaseserver fungerar som master, medan en eller flera servrar fungerar som slavar. Som standard är replikationen asynkron där befälhavaren skickar händelser som beskriver databasändringar till dess binära logg och slavar begär händelserna när de är redo.

I den här tutorialen kommer vi att förklara hur man ställer in en MySQL Master / Slave-replikering med en master och en slaveserver på CentOS 7. Samma steg gäller för MariaDB.

Denna typ av replikeringstopologi är bäst lämpad för distribution av lästa repliker för lässkalning, live databaser backup för katastrofåterställning och för analysjobb.

förutsättningar

I det här exemplet antar vi att du har två servrar som kör CentOS 7, som kan kommunicera med varandra via ett privat nätverk. Om din webbhotell inte tillhandahåller privata IP-adresser kan du använda de offentliga IP-adresserna och konfigurera din brandvägg för att tillåta trafik på port 3306 endast från pålitliga källor.

Servrarna i detta exempel har följande IP: er:

Master IP: 192.168.121.59 Slave IP: 192.168.121.14

Installera MySQL

Standarden CentOS 7-förvar inkluderar inte MySQL-paket så vi kommer att installera MySQL från deras officiella Yum-förvar. För att undvika problem installerar vi samma MySQL version 5.7 på båda servrarna.

Installera MySQL på både Master- och Slave-servrarna:

sudo yum localinstall sudo yum install mysql-community-server

När installationen är klar, starta MySQL-tjänsten och aktivera den automatiskt att starta vid start med:

sudo systemctl enable mysqld sudo systemctl start mysqld

När MySQL-servern startar första gången genereras ett tillfälligt lösenord för MySQL-rootanvändaren. För att hitta lösenordet använder du följande grep-kommando:

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

Kör kommandot mysql_secure_installation att ställa in ditt nya root-lösenord och förbättra säkerheten för MySQL-instansen:

mysql_secure_installation

Ange det tillfälliga root-lösenordet och svara på Y (ja) på alla frågor.

Det nya lösenordet måste vara minst 8 tecken långt och innehålla minst en stor bokstav, en liten bokstav, ett nummer och ett specialtecken.

Konfigurera huvudservern

Först konfigurerar vi master MySQL-servern och gör följande ändringar:

  • Ställ in MySQL-servern så att den lyssnar på den privata IP. Ställ in ett unikt server-ID. Aktivera den binära loggningen.

För att göra det öppnar du MySQL-konfigurationsfilen och lägger till följande rader i sektion:

sudo nano /etc/my.cnf mästare: /etc/my.cnf

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

När du är klar, starta om MySQL-tjänsten så att ändringarna träder i kraft

sudo systemctl restart mysqld

Nästa steg är att skapa en ny replikationsanvändare. Logga in på MySQL-servern som rotanvändare:

mysql -uroot -p

Från inuti MySQL-prompten kör du följande SQL-frågor som skapar replica och ger användaren REPLICATION SLAVE :

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

GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14'; Se till att du byter IP med din slav-IP-adress. Du kan namnge användaren som du vill.

När du fortfarande är inne i MySQL-prompten, kör följande kommando som kommer att skriva ut det binära filnamnet och positionen.

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)

Notera filnamnet "mysql-bin.000001" och Position "1427". Du behöver dessa värden när du konfigurerar slavservern. Dessa värden kommer förmodligen att vara olika på din server.

Konfigurera slaveservern

Liksom för huvudservern ovan kommer vi att göra följande ändringar på slavservern:

  • Ställ in MySQL-servern att lyssna på den privata IPSet en unik server IDEnable the binär loggning

Öppna MySQL-konfigurationsfilen och redigera följande rader:

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

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

Starta om MySQL-tjänsten:

sudo systemctl restart mysqld

Nästa steg är att konfigurera parametrarna som slaveservern kommer att använda för att ansluta till huvudservern. Logga in på MySQL-skalet:

mysql -uroot -p

Stoppa först slavtrådarna:

STOP SLAVE;

Kör följande fråga som ställer in slaven för att replikera befälhavaren:

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;

Se till att du använder rätt IP-adress, användarnamn och lösenord. Loggfilsnamnet och positionen måste vara desamma som de värden du fick från masterservern.

När du är klar börjar du slavtrådarna.

START SLAVE;

Testa konfigurationen

Vid denna punkt bör du ha en fungerande Master / Slave replication setup.

För att verifiera att allt fungerar som förväntat skapar vi en ny databas på huvudservern:

mysql -uroot -p

CREATE DATABASE replicatest;

Logga in på slaven MySQL shell:

mysql -uroot -p

Kör följande kommando för att lista alla databaser:

SHOW DATABASES;

Du kommer att märka att databasen du skapade på huvudservern replikeras på slaven:

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

Slutsats

I denna handledning har vi visat att du skapar en MySQL Master / Slave-replikering på CentOS 7.

Lämna gärna en kommentar om du har några frågor.

centos mysql mariadb