MariaDB è un sistema di gestione di database relazionali open source gratuito ed è una delle opzioni più popolari. La replica è il processo di copia dei dati da un server di database master a un altro server di database slave. Nella topologia master-slave, un server funge da master e altri server da slave. Nella replica master-slave, i dati vengono replicati solo in un modo. Se si modificano i dati sul server slave, non verranno replicati sul server master. Se il server master si interrompe, puoi comunque recuperare i tuoi dati dal server slave.
È possibile utilizzare la replica master-slave di MariaDB per diversi scopi; alcuni di questi sono elencati di seguito:
- Scalabilità e alta disponibilità
- Backup
- Analisi
- Bilanciamento del carico
- Aumento delle prestazioni del database
- Riduzione del failover
- Sicurezza dei dati
In questo tutorial, ti mostreremo come configurare la replica master-slave MariaDB sul server Ubuntu 18.04.
Prerequisiti
- Due nuove VPS Ubuntu 18.04 sulla piattaforma Atlantic.Net Cloud.
- Una password root statica configurata su entrambi i server.
Fase 1:crea un server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo Ubuntu 18.04 come sistema operativo con almeno 2GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Dopo aver effettuato l'accesso al tuo server Ubuntu 18.04, esegui il comando seguente per aggiornare il tuo sistema di base con gli ultimi pacchetti disponibili.
apt-get update -y
Fase 2:installa MariaDB su entrambi i server
Innanzitutto, dovrai installare MariaDB su entrambi i server. Puoi installarlo eseguendo il seguente comando:
apt-get install mariadb-server mariadb-client -y
Dopo aver installato MariaDB, esegui il seguente comando per proteggere l'installazione di MariaDB:
mysql_secure_installation
Rispondi a tutte le domande come mostrato di seguito:
Enter current password for root (enter for none): Press Enter Set root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
A questo punto, hai installato e protetto entrambi i server MariaDB.
Fase 3:configurazione del server principale
Successivamente, sarà necessario abilitare la registrazione binaria e la replica sul server master. Per farlo, apri il file /etc/mysql/mariadb.conf.d/50-server.cnf con il tuo editor di testo preferito:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Trova la riga bind-address e modifica il valore in 0.0.0.0 per consentire le connessioni in entrata.
bind-address = 0.0.0.0
Quindi, aggiungi le seguenti righe alla fine del file:
server-id = 1 log_bin = /var/log/mysql/mysql-bin.log log_bin_index =/var/log/mysql/mysql-bin.log.index relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index
Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio MariaDB per implementare le modifiche:
systemctl restart mariadb
Successivamente, dovrai creare un utente di replica. Il server slave utilizzerà questo utente per accedere al server master e richiedere log binari.
Innanzitutto, accedi alla shell di MariaDB con il seguente comando:
mysql -u root -p
Fornisci la tua password di root quando richiesto, quindi crea un utente con il seguente comando:
CREATE USER 'replication'@'%' identified by 'your-password';
Quindi, concedi il privilegio di replica slave a questo utente con il comando seguente:
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
Quindi, svuota i privilegi con il seguente comando:
FLUSH PRIVILEGES;
Quindi, controlla lo stato del server master con il seguente comando:
show master status;
Dovresti ottenere il seguente output:
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 313 | | | +------------------+----------+--------------+------------------+
Quindi, esci dalla shell MariaDB con il seguente comando:
EXIT;
Nota :Ricorda il File e Posizione dettagli dall'output di cui sopra. Avrai bisogno di questi valori durante la configurazione del server slave.
Passaggio 4:configurazione del server slave
Quindi, accedi al server slave e apri il file /etc/mysql/mariadb.conf.d/50-server.cnf:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Trova la riga bind-address e modifica il valore in 0.0.0.0 come mostrato di seguito:
bind-address = 0.0.0.0
Quindi, aggiungi le seguenti righe alla fine del file:
server-id = 2 log_bin = /var/log/mysql/mysql-bin.log log_bin_index =/var/log/mysql/mysql-bin.log.index relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index
Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio MariaDB per implementare le modifiche:
systemctl restart mariadb
Quindi, accedi alla shell MariaDB con il seguente comando:
mysql -u root -p
Fornisci la tua password di root quando richiesto, quindi interrompi i thread slave come mostrato di seguito:
stop slave;
Quindi, esegui il comando seguente per configurare lo slave per replicare il master:
CHANGE MASTER TO MASTER_HOST = 'your-master-host-ip', MASTER_USER = 'replication', MASTER_PASSWORD = 'your-password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 313;
Quindi, avvia i thread slave ed esci dalla shell MariaDB come mostrato di seguito:
start slave; exit;
Nota :Modifica il comando precedente per utilizzare l'indirizzo IP dell'host principale e la password che hai creato nei passaggi precedenti. Utilizza il nome del file di registro e i valori di posizione che hai ottenuto dal server principale.
Passaggio 5:verifica della replica del database
A questo punto è stata configurata la replica master-slave. Ora è il momento di testare la replica tra master e slave.
Sul server master, accedi alla shell MariaDB con il seguente comando:
mysql -u root -p
Fornisci la tua password di root quando richiesto, quindi crea un database con il nome mydb come mostrato di seguito:
create database mydb;
Quindi, crea una tabella con il nome "prodotti" all'interno del database mydb:
use mydb; CREATE TABLE products(product_id INT NOT NULL AUTO_INCREMENT,product_name VARCHAR(100) NOT NULL,product_manufacturer VARCHAR(40) NOT NULL,submission_date DATE,PRIMARY KEY ( product_id ));
Quindi, esegui il seguente comando per controllare la tabella:
SHOW TABLES;
Uscita:
+----------------+ | Tables_in_mydb | +----------------+ | products | +----------------+
Sul server slave, accedi alla shell MariaDB con il seguente comando:
mysql -u root -p
Fornisci la tua password di root quando richiesto, quindi controlla lo stato dello slave:
SHOW SLAVE STATUS \G
Dovresti vedere il seguente output:
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: your-master-host-ip Master_User: replication Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 721 Relay_Log_File: mysql-relay-bin.000002 Relay_Log_Pos: 945 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes
Quindi, esegui il comando seguente per verificare se il database è replicato:
show databases;
Dovresti vedere il database mydb che hai creato sul server principale:
+--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | +--------------------+
Quindi, controlla la tabella dei prodotti che hai creato sul server principale:
MariaDB [(none)]> use mydb; MariaDB [mydb]> show tables;
Dovresti vedere la tabella dei prodotti nel seguente output:
+----------------+ | Tables_in_mydb | +----------------+ | products | +----------------+
Congratulazioni! La tua replica master-slave MariaDB funziona come previsto. Ora puoi facilmente ripristinare il tuo database in caso di errore. Inizia oggi stesso con la replica master-slave di MariaDB con un pacchetto di hosting VPS di Atlantic.Net.