sql >> Database >  >> RDS >> Mysql

Meerdere MySQL-instanties op dezelfde machine uitvoeren

Soms moet u mogelijk meerdere MySQL-instanties op één server uitvoeren. Het kan bijvoorbeeld nodig zijn om verschillende MySQL-instanties te testen voor enscenering, testen en productie. In dit artikel zullen we bekijken hoe u meerdere MySQL-instanties op dezelfde machine kunt uitvoeren, maar op verschillende poorten, met verschillende logbestanden en configuratieparameters.


Meerdere MySQL-instanties op dezelfde machine uitvoeren

Hier zijn de stappen om meerdere MySQL-instanties op dezelfde machine uit te voeren.


1. MySQL-configuratiebestand openen

Meestal vindt u het MySQL-configuratiebestand op /etc/mysql/my.cnf . Open terminal en voer de volgende opdracht uit om het MySQL-configuratiebestand te openen.

$ sudo vi /etc/mysql/my.cnf


2. Configureer meerdere MySQL-instanties

U zult de standaard MySQL-configuratie aantreffen die lijkt op wat hieronder wordt weergegeven.

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

Kopieer + plak het bovenstaande codeblok eronder in hetzelfde bestand. Vervang [mysqld] met [mysqld1] en verander de poortwaarde in 3307. Hierdoor wordt de nieuwe instantie mysqld1 draaien op een andere poort 3307 met een andere procesnaam mysqld1. Verander op dezelfde manier de bestandsnamen van pid-file, socket en datadir variabelen zoals hieronder getoond.

Zorg ervoor dat u de datadir-map voor elke onderstaande instantie kopieert. Zorg er ook voor dat gebruiker mysql gebruiker heeft er toegangsrechten voor. Elke instantie heeft zijn eigen gegevensmap nodig.

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

Nu mysqld1 wordt uitgevoerd als een aparte instantie dan mysqld

Op dezelfde manier kunt u meer instanties maken, zoals hieronder weergegeven

[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

Zorg ervoor dat u voor elke instantie een ander pid-bestand, socketbestand en gegevensmap opgeeft en zorg ervoor dat gebruiker mysql heeft directory-machtigingen nodig omdat de mysql de gebruiker moet de vereiste bestanden en mappen kunnen maken.


3. Beheer meerdere instanties

U kunt elke instantie afzonderlijk starten met mysqld onderstaande opdracht. Vervang mysqlN met uw instantiekeuze (bijv. mysql1, mysql2, enz.)

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

Als de bovenstaande configuratie om de een of andere reden niet voor u werkt, kopieer dan het bestand my.cnf naar /etc/my.cnf locatie en probeer het opnieuw. Soms registreert mysql niet meerdere instanties die zijn geconfigureerd op /etc/mysql/my.cnf

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

Als u zich wilt aanmelden bij een specifieke instantie (bijv. mysqld1) vanaf de opdrachtregel, moet u de locatie van het socketbestand opgeven met de optie -S. Anders wordt u aangemeld bij de standaard MySQL-instantie.

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

Hopelijk helpt dit artikel je bij het configureren en beheren van meerdere MySQL-instanties op dezelfde server.

Een rapportagetool voor MySQL nodig? Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!

  1. Tabel afkappen in MySQL

  2. Schaaloplossingen voor MySQL (replicatie, clustering)

  3. Spring Boot Query-annotatie met nativeQuery werkt niet in Postgresql

  4. JDBC-verbinding standaard autoCommit-gedrag