MySQL-replikering låter dig enkelt kopiera databas från en server till en annan. MySQL stöder olika typer av replikering som master-slave, master-master och gruppreplikering. MariaDB stöder också multi-master replikering. I den här artikeln kommer vi att titta på Master-Slave-replikering i MySQL och lära oss hur man replikerar MySQL-databas i Linux. Du kan använda dessa steg för att replikera MySQL-databas i Ubuntu, Debian, CentOS, Fedora, Red hat och andra typer av Linux.
Hur man replikerar MySQL-databas
Här är stegen för att replikera MySQL-databas. För vår installation kommer vi att behöva en huvuddatabas (IP – 54.24.32.12) och en slavdatabas (IP – 45.12.21.23). Vi kommer att replikera databasen med namnet exampledb från herre till slav. Vi har antagit att du har MySQL installerat på båda dessa servrar, och att du har root-privilegier för dem båda. Annars kan du installera MySQL med följande kommando
$ sudo apt-get install mysql-server mysql-client
Bonus Läs:Top MySQL Workbench Alternativen
1. Redigera huvudkonfigurationsfil
Öppna terminalen på masterdatabasens server och kör följande kommando
$ sudo vi /etc/mysql/my.cnf
Som standard är fjärranslutningar inaktiverade i MySQL. Vi måste tillåta fjärranslutning från slav till master för replikering. Så vi avkommenterar följande två rader för att tillåta fjärranslutningar, genom att lägga till # i början, som visas nedan
#skip-networking #bind-address=127.0.0.1
Lägg till eller avkommentera följande rader i blocket [mysqld] för att se ut som följande.
[mysqld]
server-id=1
log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb
Låt oss titta på var och en av raden ovan. Första radens server-id anger ett unikt ID-nummer för master. Det måste vara ett positivt tal från 1 till 2^32.
logga anger loggfilens plats som kommer att fyllas i av MySQL med detaljer om replikering.
binlog-do-db indikerar namnet på databasen som behöver replikeras.
Starta om MySQL Server för att tillämpa ändringar
$ sudo service mysql restart
Logga in på MySQL som root-användare
$ sudo mysql -u root -p
och kör följande kommando
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | exampledb | | +------------------+----------+--------------+------------------+
Observera ovanstående detaljer, vi kommer att behöva dem senare i steg #3.
Bonus Läs:Hur man aktiverar SSL/TLS i MySQL
2. Skapa replikeringsanvändare
Logga in på MySQL-servern på master.
$ sudo mysql -u root -p
Du kommer att bli ombedd att ange root-lösenord.
Efter att ha loggat in på MySQL, kör följande kommandon för att skapa en fjärranvändare slave_user , och ge det replikeringsbehörigheter för alla databaser. Vänligen ersätt 45.12.21.23 nedan med din slavservers IP och ersätt $password med ett passande lösenord enligt dina 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;
Lägg till en regel för inkommande brandvägg för port 3306 och tillåt 45.12.21.23. Den här fjärranvändaren måste ansluta till huvuddatabasen för att replikering ska ske.
Bonus Läs:Hur man ändrar samling av alla tabeller i MySQL
3. Redigera slavkonfigurationsfil
Öppna terminalen på slavdatabasens server och kör följande kommando
$ sudo vi /etc/mysql/my.cnf
Lägg till följande rader under [mysqld] för att se ut
[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
På den första raden tilldelar vi server-ID 2 till slavservern. Nästa par rader anger platser för relälogg- och replikeringsloggfiler. Sista raden anger databasen som ska replikeras.
Starta om MySQL Server och logga in på MySQL
$ sudo service mysql restart $ sudo mysql -u root -p
Kör följande kommandon för att skapa en tom databas på slav.
mysql> CREATE DATABASE exampledb; mysql> USE exampledb;
Ladda data från huvuddatabasen för att fylla i slavdatabasen
mysql> LOAD DATA FROM MASTER;
Avsluta MySQL.
Bonusläsning:Bästa databasbloggar att följa
4. Initiera replikering
Medan du är inloggad på MySQL, kör följande kommandon för att initiera replikeringsprocessen. Byt ut delar i fetstil med dina värderingar.
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-adress eller värdnamn för mastern (54.24.32.12).
MASTER_USER – slavanvändare vi skapade i steg #2.
MASTER_PASSWORD – lösenord för slavanvändare som vi skapade i steg #2.
MASTER_LOG_FILE – filen MySQL gav tillbaka i steg #1 när du körde
VISA MASTER STATUS
MASTER_LOG_POS – position MySQL gav tillbaka när du körde SHOW MASTER STATUS i steg #1
Slutligen startar vi slaven för att börja replikera MySQL-databasen.
mysql> START SLAVE;
Förhoppningsvis hjälper den här artikeln dig att replikera MySQL-databas.