
Business Intelligence as a Service
Probeer PlusClouds Eaglet-dienst en vind hoogwaardige B2B warme leads en kansen met AI-ondersteuning.
Voordat we naar de 'hoe te doen' sectie gaan, laten we kort de vereisten bespreken.
Aangezien we kort de vereisten hebben besproken, kunnen we naar het configuratiegedeelte gaan.
Onze eerste stap is om dezelfde NTP-configuratie op beide machines te maken. Als je het nog niet hebt geïnstalleerd, kun je de NTP-server installeren met de onderstaande opdracht.
apt -y install ntp
Nu gaan we de NTP-servers die we hebben geïnstalleerd zodanig configureren dat ze met elkaar gesynchroniseerd zijn. In dit artikel zullen we de NTP-servers in Azië gebruiken.
*nano /etc/ntp.conf*
server 0.asia.pool.ntp.org iburst
server 1.asia.pool.ntp.org iburst
server 2.asia.pool.ntp.org iburst
server 3.asia.pool.ntp.org iburst
Na het bewerken van het configuratiebestand, slaan we het op en herstarten we de NTP-service.
*/etc/init.d/ntp restart*
Alle servers die we gebruiken moeten elkaar herkennen en zonder problemen kunnen communiceren. Als het beschikbaar is, kun je lokale DNS gebruiken. In ons voorbeeld configureren we het hosts-bestand omdat we geen DNS hebben.
*nano /etc/hosts*
master_server_ip master_server_hostname
slave_server_ip slave_server_hostname
Vergeet niet dat alle configuraties die we zullen maken volledig op alle servers moeten worden uitgevoerd VERGEET NIET.
Als je het aan het begin van het artikel niet hebt geïnstalleerd, moet je eerst ufw installeren met de onderstaande opdracht.
apt -y install ufw
Als je verbinding maakt via SSH, moet je na de installatie eerst toestemming geven voor de SSH-poort. Anders kun je je SSH-verbinding verliezen wanneer je de ufw-service start.
ufw allow 22
ufw allow from slave_server_ip to any port 3306
systemctl enable ufw
systemctl start ufw
ufw enable
We hebben eerst toestemming gegeven voor 22, dat is de SSH-poort, en de regel die we hebben geschreven is de permissie voor 3306, de poort die door MySQL wordt gebruikt. Vergeet niet het slave_server_ip-gedeelte te vervangen door het IP-adres van je slave-machine.
Als alles tot hier goed is, kunnen we nu beginnen met de configuratie van onze masterserver.
Op Debian 10 bevindt het MySQL-serverconfiguratiebestand zich onder de naam **mysqld.cnf** in de map **/etc/mysql/mysql.conf.d/**. Eerst openen we het op onze masterserver met de **nano**-editor. Als je een andere editor wilt gebruiken, kun je dat ook doen.
nano /etc/mysql/mysql.conf.d/mysqld.cnf
Na het openen van het bestand, bewerken we eerst het verbindingsadres. Als de volgende regel nog niet bestaat, voeg deze dan zelf toe.
bind-address = master_server_ip
Na het aanpassen van de bind-address, zoek je de regel **server-id**. Als deze niet bestaat, voeg deze dan toe zoals hierboven. Je kunt 1 als waarde geven, deze waarde moet uniek zijn voor de servers.
server-id = 1
Na deze stap moeten we de locatie van het MySQL-binary logbestand opgeven. Als deze pad niet wordt opgegeven, zal de binary logging inactief zijn en zal je slave-server de logbestanden niet kunnen lezen om te weten wat het moet repliceren. We geven de pad als volgt op.
log_bin = /var/log/mysql/mysql-bin.log
Als laatste moeten we de database of databases opgeven die gerepliceerd moeten worden.
binlog_do_db = testdb
Nadat je alle wijzigingen hebt aangebracht, sla het op door achtereenvolgens de toetsen CTRL + X, Y en ENTER in te drukken.
Na het afsluiten herstarten we de MySQL-service.
systemctl restart mysql
We hebben het configuratiegedeelte van onze masterserver afgerond, maar voordat we naar onze slave-server gaan, moeten we nog een paar kleine dingen doen. We moeten een gebruiker aanmaken en toegang verlenen zodat de slave-server kan verbinden voor replicatie. We gaan verder door in de MySQL shell te gaan.
mysql -u root -p
CREATE USER 'slave_user'@'slave_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'slave_server_ip';
FLUSH PRIVILEGES;
Daarmee hebben we de configuratie van de masterserver afgerond. Hoewel onze configuratie is voltooid, verlaat u de MySQL shell nog niet. In de volgende stap zullen we belangrijke informatie over het binary log bestand van onze database ophalen.
MySQL past replicatie toe door database-evenementen line-by-line te kopiëren vanuit het binary log bestand van de bron en elk evenement op de slave-server toe te passen. Daarom moeten we ook de naam van het binary log bestand van onze masterserver en de coördinaten die een specifieke locatie binnen dit bestand beschrijven opgeven tijdens de configuratie aan de slave-serverzijde.
FLUSH TABLES WITH READ LOCK;
Voer daarna de onderstaande code uit om de status van de binary logbestanden te bekijken.
SHOW MASTER STATUS;
```
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 899 | testdb | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
```
Je zult een output krijgen die lijkt op het bovenstaande.
Als er op je masterserver nog geen database bestaat, maak dan eerst de ontgrendeling en vervolgens de database aan.
UNLOCK TABLES;
CREATE DATABASE testdb;
Na deze stap zijn we klaar met ons werk op de masterserver. Vergeet de informatie van het binary log bestand die we hierboven hebben verkregen absoluut niet. We zullen het zo meteen gebruiken op onze slave-server.
In dit gedeelte passen we het configuratiebestand aan op een manier die vergelijkbaar is met wat we op de masterserver hebben gedaan. Omdat dit hierboven is uitgelegd, zullen we de stappen snel doorlopen.
nano /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = testdb
Voeg tot slot de relay-log directief toe die de pad naar het relay log bestand op de slave-server definieert.
relay-log = /var/log/mysql/mysql-relay-bin.log
Na het aanbrengen van de wijzigingen herstarten we hier ook de MySQL-service.
systemctl restart mysql
We zijn nu klaar om de replicatie te testen. We loggen in op de MySQL shell op onze slave-server.
mysql -u root -p
Nu is het tijd voor het replicatieproces. We geven de informatie in die we moeten invoeren zodat de slave-server op de masterserver wordt herkend.
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='master_server_ip',
SOURCE_USER='slave_user',
SOURCE_PASSWORD='password',
SOURCE_LOG_FILE='mysql-bin.000001',
SOURCE_LOG_POS=899;
START REPLICA;
Als alle stappen correct zijn uitgevoerd, zullen vanaf dit moment alle wijzigingen die in de **testdb** database worden aangebracht, ook naar onze slave-server worden verzonden.
SHOW REPLICA STATUS\G
We kunnen de status van de replicatie op onze slave-server zien met het bovenstaande commando.
```
*************************** 1. row ***************************
Replica_IO_State: Waiting for master to send event
Source_Host: 'slave_server_ip'
Source_User: slave_user
Source_Port: 3306
Connect_Retry: 60
Source_Log_File: mysql-bin.000001
Read_Source_Log_Pos: 1273
Relay_Log_File: mysql-relay-bin.000003
Relay_Log_Pos: 729
Relay_Source_Log_File: mysql-bin.000001
```
Je zult een output krijgen die lijkt op het bovenstaande. We hebben nu een MySQL-replicatie met een Master-Slave-relatie opgezet. Je kunt testen door een tabel aan je database op de masterserver toe te voegen.
Als je een journalist bent die graag diep in onderwerpen duikt die betrekking hebben op bedrijven en sectoren, willen we graag met je samenwerken!
Met de AutoQuill-tool die PlusClouds is gaan aanbieden aan zijn affiliate partners, kunnen contentmakers met een enkele klik verkopen. Laat ons u laten zien hoe u uw aandeel in deze revolutie kunt krijgen.