Mysql
 sql >> Database >  >> RDS >> Mysql

Come eseguire più istanze MySQL sulla stessa macchina

A volte potrebbe essere necessario eseguire più istanze MySQL su un unico server. Ad esempio, potrebbe essere necessario testare diverse istanze MySQL per lo staging, il test e la produzione. In questo articolo, vedremo come eseguire più istanze MySQL sulla stessa macchina, ma porte diverse, con file di registrazione e parametri di configurazione diversi.


Come eseguire più istanze MySQL sulla stessa macchina

Ecco i passaggi per eseguire più istanze MySQL sulla stessa macchina.


1. Apri il file di configurazione MySQL

In genere, troverai il file di configurazione di MySQL in /etc/mysql/my.cnf . Apri il terminale ed esegui il comando seguente per aprire il file di configurazione di MySQL.

$ sudo vi /etc/mysql/my.cnf


2. Configura più istanze MySQL

Troverai la configurazione predefinita di MySQL qualcosa di simile a quella mostrata di seguito.

[mysqld] 
user = mysql 
pid-file = /var/run/mysqld/mysqld.pid 
socket = /var/run/mysqld/mysqld.sock 
port = 3306 
datadir = /data/mysql/mysql

Copia + Incolla il blocco di codice sopra sotto di esso nello stesso file. Sostituisci [mysqld] con [mysqld1] e cambia il valore della porta in 3307. Ciò renderà la nuova istanza mysqld1 eseguito su una porta 3307 diversa con un nome di processo diverso mysqld1. Allo stesso modo, cambia i nomi dei file delle variabili pid-file, socket e datadir come mostrato di seguito.

Assicurati di copiare la cartella datadir per ciascuna istanza di seguito. Assicurati anche che l'utente mysql l'utente ha i permessi di accesso ad esso. Ogni istanza necessita di una propria directory di dati.

[mysqld1] 
user = mysql 
pid-file = /var/run/mysqld/mysqld1.pid 
socket = /var/run/mysqld/mysqld1.sock 
port = 3307 
datadir = /data/mysql/mysql1

Ora mysqld1 verrà eseguito come un'istanza separata rispetto a mysqld

Allo stesso modo, puoi creare più istanze come mostrato di seguito

[mysqld2] 
user = mysql 
pid-file = /var/run/mysqld/mysqld2.pid 
socket = /var/run/mysqld/mysqld2.sock 
port = 3308 
datadir = /data/mysql/mysql2 
.... 
[mysqldN] 
user = mysql 
pid-file = /var/run/mysqld/mysqldN.pid 
socket = /var/run/mysqld/mysqldN.sock 
port = N 
datadir = /data/mysql/mysqlN

Assicurati di fornire file pid, file socket e dir dati diversi per ciascuna istanza e assicurati che l'utente mysql ha richiesto i permessi di directory perché mysql l'utente dovrebbe essere in grado di creare i file e le directory richiesti.


3. Gestisci più istanze

Puoi avviare ciascuna istanza separatamente utilizzando mysqld comando qui sotto. Sostituisci mysqlN con la tua scelta di istanza (ad es. mysql1, mysql2, ecc.)

mysqld --initialize --user=mysql --datadir=/home/mysql/mysqlN

Se per qualche motivo, la configurazione di cui sopra non funziona per te, copia il file my.cnf in /etc/my.cnf posizione e riprovare. A volte, mysql non registra più istanze configurate in /etc/mysql/my.cnf

$ sudo cp /etc/mysql/my.cnf /etc/my.cnf

Se si desidera accedere a qualsiasi istanza specifica (ad es. mysqld1) dalla riga di comando, è necessario specificare la posizione del file socket con l'opzione -S. In caso contrario, verrai registrato nell'istanza MySQL predefinita.

mysql -u root -p -S /var/run/mysqld/mysqld1.sock

Si spera che questo articolo ti aiuti a configurare e gestire più istanze MySQL sullo stesso server.

Hai bisogno di uno strumento di reporting per MySQL? Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!