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.