androide

Come configurare mysql master

[CENTOS] - #78 Mysql Cluster Master/Slave

[CENTOS] - #78 Mysql Cluster Master/Slave

Sommario:

Anonim

La replica di MySQL è un processo che consente di copiare automaticamente i dati da un server di database a uno o più server.

MySQL supporta una serie di topologie di replica con la topologia Master / Slave che è una delle topologie più note in cui un server di database funge da master, mentre uno o più server fungono da slave. Per impostazione predefinita, la replica è asincrona quando il master invia eventi che descrivono le modifiche al database nel suo registro binario e gli slave richiedono gli eventi quando sono pronti.

In questo tutorial, spiegheremo come impostare una replica Master / Slave MySQL con un server master e uno slave su CentOS 7. Gli stessi passaggi si applicano per MariaDB.

Questo tipo di topologia di replica è più adatto per la distribuzione di repliche di lettura per il ridimensionamento della lettura, il backup di database live per il ripristino di emergenza e per i lavori di analisi.

Prerequisiti

In questo esempio, supponiamo che tu abbia due server che eseguono CentOS 7, che possono comunicare tra loro su una rete privata. Se il provider di hosting non fornisce indirizzi IP privati, è possibile utilizzare gli indirizzi IP pubblici e configurare il firewall per consentire il traffico sulla porta 3306 solo da fonti attendibili.

I server in questo esempio hanno i seguenti IP:

Master IP: 192.168.121.59 Slave IP: 192.168.121.14

Installa MySQL

Il repository CentOS 7 predefinito non include i pacchetti MySQL, quindi installeremo MySQL dal loro repository Yum ufficiale. Per evitare problemi, installeremo la stessa versione MySQL 5.7 su entrambi i server.

Installa MySQL su entrambi i server Master e Slave:

sudo yum localinstall sudo yum install mysql-community-server

Una volta completata l'installazione, avvia il servizio MySQL e abilita l'avvio automatico all'avvio con:

sudo systemctl enable mysqld sudo systemctl start mysqld

Quando il server MySQL si avvia per la prima volta, viene generata una password temporanea per l'utente root di MySQL. Per trovare la password usa il seguente comando grep:

sudo grep 'temporary password' /var/log/mysqld.log

Esegui il comando mysql_secure_installation per impostare la nuova password di root e migliorare la sicurezza dell'istanza MySQL:

mysql_secure_installation

Immettere la password di root temporanea e rispondere a Y (sì) a tutte le domande.

La nuova password deve contenere almeno 8 caratteri e contenere almeno una lettera maiuscola, una lettera minuscola, un numero e un carattere speciale.

Configurare il server principale

Innanzitutto, configureremo il server MySQL principale e apporteremo le seguenti modifiche:

  • Impostare il server MySQL per l'ascolto sull'IP privato. Impostare un ID server univoco. Abilitare la registrazione binaria.

Per fare ciò, apri il file di configurazione di MySQL e aggiungi le seguenti righe in sezione:

sudo nano /etc/my.cnf Master: /etc/my.cnf

bind-address = 192.168.121.59 server-id = 1 log_bin = mysql-bin

Al termine, riavviare il servizio MySQL per rendere effettive le modifiche

sudo systemctl restart mysqld

Il passaggio successivo è creare un nuovo utente di replica. Accedi al server MySQL come utente root:

mysql -uroot -p

Dall'interno del prompt di MySQL, eseguire le seguenti query SQL che creeranno l'utente della replica e concederanno all'utente il privilegio di REPLICATION SLAVE :

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';

GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14'; Assicurati di cambiare l'IP con il tuo indirizzo IP slave. Puoi nominare l'utente come desideri.

Mentre sei ancora all'interno del prompt di MySQL, esegui il seguente comando che stamperà il nome file binario e la posizione.

SHOW MASTER STATUS\G

*************************** 1. row *************************** File: mysql-bin.000001 Position: 1427 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec)

Prendi nota del nome del file, "mysql-bin.000001" e della posizione "1427". Questi valori saranno necessari durante la configurazione del server slave. Questi valori saranno probabilmente diversi sul tuo server.

Configurare il server slave

Come per il server master sopra, apporteremo le seguenti modifiche al server slave:

  • Impostare il server MySQL per ascoltare sull'IPS privato un ID server univoco Abilitare la registrazione binaria

Apri il file di configurazione di MySQL e modifica le seguenti righe:

sudo nano /etc/my.cnf slave: /etc/my.cnf

bind-address = 192.168.121.14 server-id = 2 log_bin = mysql-bin

Riavvia il servizio MySQL:

sudo systemctl restart mysqld

Il prossimo passo è configurare i parametri che il server slave utilizzerà per connettersi al server master. Accedi alla shell MySQL:

mysql -uroot -p

Innanzitutto, ferma i thread degli slave:

STOP SLAVE;

Eseguire la query seguente che imposterà lo slave per replicare il master:

CHANGE MASTER TO MASTER_HOST='192.168.121.59', MASTER_USER='replica', MASTER_PASSWORD='strong_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1427;

Assicurati di utilizzare l'indirizzo IP, il nome utente e la password corretti. Il nome e la posizione del file di registro devono essere uguali ai valori ottenuti dal server principale.

Al termine, avviare i thread slave.

START SLAVE;

Prova la configurazione

A questo punto, dovresti avere una configurazione di replica Master / Slave funzionante.

Per verificare che tutto funzioni come previsto, creeremo un nuovo database sul server principale:

mysql -uroot -p

CREATE DATABASE replicatest;

Accedi alla shell MySQL slave:

mysql -uroot -p

Eseguire il comando seguente per elencare tutti i database:

SHOW DATABASES;

Noterai che il database che hai creato sul server principale è replicato sullo slave:

+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | replicatest | | sys | +--------------------+ 5 rows in set (0.00 sec)

Conclusione

In questo tutorial, ti abbiamo mostrato come creare una replica Master / Slave MySQL su CentOS 7.

Sentiti libero di lasciare un commento in caso di domande.

centos mysql mariadb