Android

Cum se configurează mysql master

Slavii

Slavii

Cuprins:

Anonim

Replicarea MySQL este un proces care vă permite să copiați automat datele de la un server de baze de date pe unul sau mai multe servere.

MySQL acceptă o serie de topologii de replicare, cu topologia Master / Slave fiind una dintre cele mai cunoscute topologii în care un server de baze de date acționează ca master, în timp ce unul sau mai multe servere acționează ca slave. În mod implicit, replicarea este asincronă în cazul în care masterul trimite evenimente care descriu modificările bazei de date în jurnalul său binar și sclavii solicită evenimentele când sunt gata.

În acest tutorial, vom explica cum să configurați o replicare Master / Slave MySQL cu un server master și un server slave pe CentOS 7. Același pași se aplică pentru MariaDB.

Acest tip de topologie de replicare este cel mai potrivit pentru implementarea de replici citite pentru scalare la citire, backup pentru baze de date în direct pentru recuperarea dezastrelor și pentru lucrări de analiză.

Cerințe preliminare

În acest exemplu, presupunem că aveți două servere care rulează CentOS 7, care pot comunica între ele printr-o rețea privată. Dacă furnizorul dvs. de găzduire nu furnizează adrese IP private, puteți utiliza adrese IP publice și configurați firewallul pentru a permite traficul pe portul 3306 numai din surse de încredere.

Serverele din acest exemplu au următoarele IP-uri:

Master IP: 192.168.121.59 Slave IP: 192.168.121.14

Instalați MySQL

Depozitele CentOS 7 implicite nu includ pachete MySQL, astfel încât vom instala MySQL din depozitul lor oficial Yum. Pentru a evita orice probleme, vom instala aceeași versiune MySQL 5.7 pe ambele servere.

Instalați MySQL atât pe serverele Master cât și pe Slave:

sudo yum localinstall sudo yum install mysql-community-server

După terminarea instalării, porniți serviciul MySQL și permiteți-l să pornească automat la pornire cu:

sudo systemctl enable mysqld sudo systemctl start mysqld

Când serverul MySQL pornește pentru prima dată, o parolă temporară este generată pentru utilizatorul rădăcină MySQL. Pentru a găsi parola, utilizați următoarea comandă grep:

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

Rulați comanda mysql_secure_installation pentru a seta noua parolă rădăcină și pentru a îmbunătăți securitatea instanței MySQL:

mysql_secure_installation

Introduceți parola rădăcină temporară și răspundeți Y (da) la toate întrebările.

Noua parolă trebuie să aibă cel puțin 8 caractere și să conțină cel puțin o literă mare, una minusculă, un număr și un caracter special.

Configurați serverul principal

În primul rând, vom configura serverul principal MySQL și vom face următoarele modificări:

  • Setați serverul MySQL pentru a asculta pe IP-ul privat.Setați un ID de server unic. Activați jurnalul binar.

Pentru aceasta, deschideți fișierul de configurare MySQL și adăugați următoarele linii în fișierul secțiune:

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

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

Odată terminat, reporniți serviciul MySQL pentru ca modificările să aibă efect

sudo systemctl restart mysqld

Următorul pas este crearea unui nou utilizator de replicare. Conectați-vă la serverul MySQL ca utilizator rădăcină:

mysql -uroot -p

Din interiorul promptului MySQL, executați următoarele interogări SQL care vor crea utilizatorul replica și vor acorda utilizatorului privilegiul REPLICATION SLAVE :

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

GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14'; Asigurați-vă că schimbați adresa IP cu adresa IP a sclavului. Puteți numi utilizatorul așa cum doriți.

În timp ce încă se află în promptul MySQL, executați următoarea comandă care va imprima numele și fișierul binar.

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)

Rețineți numele fișierului, „mysql-bin.000001” și poziția „1427”. Veți avea nevoie de aceste valori atunci când configurați serverul slave. Aceste valori vor fi probabil diferite pe serverul dvs.

Configurați serverul Slave

Ca și pentru serverul principal de mai sus, vom face următoarele modificări serverului slave:

  • Setați serverul MySQL pentru a asculta pe IPSetul privat un server unic IDEnable logging binar

Deschide fișierul de configurare MySQL și editează următoarele linii:

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

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

Reporniți serviciul MySQL:

sudo systemctl restart mysqld

Următorul pas este să configurați parametrii pe care îi va folosi serverul sclav pentru a se conecta la serverul principal. Conectați-vă la shell-ul MySQL:

mysql -uroot -p

În primul rând, opriți firele de sclavi:

STOP SLAVE;

Rulați următoarea interogare care va configura sclavul pentru a reproduce masterul:

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;

Asigurați-vă că utilizați adresa IP corectă, numele de utilizator și parola. Numele și poziția fișierului jurnal trebuie să fie aceleași cu valorile pe care le-ați obținut de la serverul principal.

După ce ați terminat, începeți firele de sclavi.

START SLAVE;

Testați configurația

În acest moment, ar trebui să aveți o configurare de replicare Master / Slave funcțională.

Pentru a verifica dacă totul funcționează așa cum era de așteptat, vom crea o nouă bază de date pe serverul principal:

mysql -uroot -p

CREATE DATABASE replicatest;

Conectați-vă la shell-ul MySQL sclav:

mysql -uroot -p

Rulați următoarea comandă pentru a lista toate bazele de date:

SHOW DATABASES;

Veți observa că baza de date creată pe serverul principal este replicată pe slave:

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

Concluzie

În acest tutorial, v-am arătat că creați o replicare Master / Slave MySQL pe CentOS 7.

Simțiți-vă liber să lăsați un comentariu dacă aveți întrebări.

centos mysql mariadb