sql >> Databasteknik >  >> RDS >> Mysql

Hur man kör flera MySQL-instanser på samma maskin

Ibland kan du behöva köra flera MySQL-instanser på en enda server. Till exempel kan du behöva testa olika MySQL-instanser för iscensättning, testning och produktion. I den här artikeln kommer vi att titta på hur man kör flera MySQL-instanser på samma maskin, men olika portar, med olika loggfiler och konfigurationsparametrar.


Hur man kör flera MySQL-instanser på samma maskin

Här är stegen för att köra flera MySQL-instanser på samma maskin.


1. Öppna MySQL-konfigurationsfilen

Vanligtvis hittar du MySQL-konfigurationsfilen på /etc/mysql/my.cnf . Öppna terminalen och kör följande kommando för att öppna MySQL-konfigurationsfilen.

$ sudo vi /etc/mysql/my.cnf


2. Konfigurera flera MySQL-instanser

Du kommer att hitta standard MySQL-konfigurationen något liknande det som visas nedan.

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

Kopiera+Klistra in ovanstående kodblock under det i samma fil. Ersätt [mysqld] med [mysqld1] och ändra portvärdet till 3307. Detta kommer att göra den nya instansen mysqld1 kör på en annan port 3307 med ett annat processnamn mysqld1. Ändra på samma sätt filnamn för pid-fil-, socket- och datadir-variabler enligt nedan.

Se till att kopiera datadir-mappen för varje instans nedan. Se också till att användaren mysql användaren har åtkomstbehörighet till den. Varje instans behöver sin egen datakatalog.

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

Nu mysqld1 kommer att köras som en separat instans än mysqld

På samma sätt kan du skapa fler instanser som visas nedan

[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

Se till att du tillhandahåller olika pid-filer, socketfiler och datadir för varje instans och se till att användaren mysql har krävt katalogbehörigheter eftersom mysql användaren ska kunna skapa nödvändiga filer och kataloger.


3. Hantera flera instanser

Du kan starta varje instans separat med mysqld kommandot nedan. Ersätt mysqlN med ditt val av instans (t.ex. mysql1, mysql2, etc)

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

Om ovanstående konfiguration av någon anledning inte fungerar för dig kopierar du filen my.cnf till /etc/my.cnf plats och försök igen. Ibland registrerar inte mysql flera instanser konfigurerade på /etc/mysql/my.cnf

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

Om du vill logga in på någon specifik instans (t.ex. mysqld1) från kommandoraden, måste du ange dess socket-filplats med -S-alternativet. Annars kommer du att loggas in på standard MySQL-instansen.

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

Förhoppningsvis hjälper den här artikeln dig att konfigurera och hantera flera MySQL-instanser på samma server.

Behöver du ett rapporteringsverktyg för MySQL? Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!

  1. bbPress:Hur man hittar mappningar av bilagor till deras respektive inlägg

  2. Spring Docker-container kan inte komma åt Postgres Docker-container

  3. EF 6 - Hur man korrekt utför parallella frågor

  4. Hur man listar index skapade för tabeller i postgres