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!