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!