sql >> Database teknologi >  >> RDS >> Mysql

Sådan replikeres MySQL-database til en anden server

MySQL-replikering giver dig mulighed for nemt at kopiere database fra en server til en anden. MySQL understøtter forskellige former for replikering såsom master-slave, master-master og gruppe replikering. MariaDB understøtter også multi-master replikering. I denne artikel vil vi se Master-Slave-replikering i MySQL og lære, hvordan man replikerer MySQL-database i Linux. Du kan bruge disse trin til at replikere MySQL-database i Ubuntu, Debian, CentOS, Fedora, Red hat og andre typer Linux.


Sådan replikeres MySQL-database

Her er trinene til at replikere MySQL-databasen. Til vores opsætning skal vi bruge en masterdatabase (IP – 54.24.32.12) og en slavedatabase (IP – 45.12.21.23). Vi vil replikere databasen med navnet exampledb fra herre til slave. Vi har antaget, at du har MySQL installeret på begge disse servere, og du har root-rettigheder til dem begge. Ellers kan du installere MySQL med følgende kommando

$ sudo apt-get install mysql-server mysql-client

Bonus Læs:Top MySQL Workbench Alternativer


1. Rediger masterkonfigurationsfil

Åbn terminal på masterdatabasens server og kør følgende kommando

$ sudo vi /etc/mysql/my.cnf

Som standard er fjernforbindelser deaktiveret i MySQL. Vi skal tillade fjernforbindelse fra slave til master for replikering. Så vi fjerner de følgende to linjer for at tillade fjernforbindelser ved at tilføje # i begyndelsen, som vist nedenfor

#skip-networking
#bind-address=127.0.0.1

Tilføj eller fjern kommentarer til følgende linjer i [mysqld]-blokken for at se ud som følgende.

[mysqld]
server-id=1
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=exampledb

Lad os se på hver af ovenstående linje. Den første linjes server-id angiver et unikt ID-nummer for master. Det skal være et positivt tal fra 1 til 2^32.

log-bin angiver den logfilplacering, der vil blive udfyldt af MySQL med detaljer om replikering.

binlog-do-db angiver navnet på databasen, der skal replikeres.

Genstart MySQL Server for at anvende ændringer

$ sudo service mysql restart

Log ind på MySQL som root-bruger

$ sudo mysql -u root -p

og kør følgende kommando

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 |   exampledb  |                  |
+------------------+----------+--------------+------------------+

Bemærk venligst ovenstående detaljer, vi skal bruge dem senere i trin #3.

Bonus Læs:Sådan aktiverer du SSL/TLS i MySQL


2. Opret replikeringsbruger

Log ind på MySQL-serveren på master.

$ sudo mysql -u root -p

Du bliver bedt om root-adgangskode.

Når du er logget ind på MySQL, skal du køre følgende kommandoer for at oprette en fjernbruger slave_user , og giv det replikeringstilladelser til alle databaser. Erstat venligst 45.12.21.23 nedenfor med din slaveservers IP, og erstat $password med en passende adgangskode i henhold til dit krav.

mysql> CREATE USER slave_user@45.12.21.23; 
mysql> GRANT REPLICATION SLAVE ON *.* TO slave_user@45.12.21.23
       IDENTIFIED BY '$password';
mysql> FLUSH PRIVILEGES;

Tilføj venligst en indgående firewall-regel for port 3306 og tillad 45.12.21.23. Denne fjernbruger skal oprette forbindelse til masterdatabasen for at replikering kan ske.

Bonus Læs:Sådan ændres samling af alle tabeller i MySQL


3. Rediger slavekonfigurationsfil

Åbn terminal på slavedatabasens server og kør følgende kommando

$ sudo vi /etc/mysql/my.cnf

Tilføj følgende linjer under [mysqld] for at se ud

[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = exampledb

I den første linje tildeler vi server-ID 2 til slaveserveren. Næste par linjer angiver placeringer af relælog- og replikeringslogfiler. Sidste linje angiver den database, der skal replikeres.

Genstart MySQL Server og log ind på MySQL

$ sudo service mysql restart
$ sudo mysql -u root -p

Kør følgende kommandoer for at oprette en tom database på slave.

mysql> CREATE DATABASE exampledb; 
mysql> USE exampledb;

Indlæs data fra masterdatabasen for at udfylde slavedatabasen

mysql> LOAD DATA FROM MASTER;

Afslut MySQL.

Bonuslæsning:Topdatabaseblogs at følge


4. Initialiser replikering

Mens du er logget på MySQL, skal du køre følgende kommandoer for at starte replikeringsprocessen. Udskift dele med fed skrift med dine værdier.

mysql> SLAVE STOP;
mysql> CHANGE MASTER TO MASTER_HOST='54.24.32.12',
       MASTER_USER='slave_user', 
       MASTER_PASSWORD='<password>', 
       MASTER_LOG_FILE='mysql-bin.000001', 
       MASTER_LOG_POS=107;

MASTER_HOST – IP-adresse eller værtsnavn på masteren (54.24.32.12).
MASTER_USER – slavebruger vi oprettede i trin #2.
MASTER_PASSWORD – adgangskode for slavebruger, vi oprettede i trin #2.
MASTER_LOG_FILE – fil MySQL gav tilbage i trin #1, da du kørte
VIS MASTER STATUS
MASTER_LOG_POS – position MySQL gav tilbage, da du kørte SHOW MASTER STATUS i trin #1

Til sidst starter vi slaven for at begynde replikering af MySQL-databasen.

mysql> START SLAVE;

Forhåbentlig hjælper denne artikel dig med at replikere MySQL-databasen.

  1. PostgreSQL-fejl:Fatal:rollebrugernavn findes ikke

  2. Oracle current_timestamp til sekunder konvertering

  3. Hvordan indstiller man sortering for en forbindelse i SQL Server?

  4. Bedste måde at forkorte UTF8 streng baseret på byte længde