Program mysqld_multi służy do zarządzania wieloma procesami mysqld, które oczekują na połączenia na różnych portach TCP/IP i gniazdach unixowych. Umożliwia on uruchamianie i zatrzymywanie serwerów MySQL oraz może informować o ich aktualnym stanie.
Program przeszukuje w pliku konfiguracyjnym (określonym za pomocą opcji --config-file) grup o nazwach [mysqld#]. Parametr # jest to dowolna liczba dodatnia, która specyfikuje określony serwer MySQL. Dla ułatwienia u nas ten parametr będziemy nazywali GNR.
Składnia wywołania programu mysqld_multi wygląda następująco:
shell> mysqld_multi [opcje] {start|stop|report} [GNR[,GNR]...]
Argumenty start,stop oraz report mówią jaką operacje ma wykonać program. Operacje zostaną wykonane na jednym lub wielu serwerach, np. dla GNR 5-8 operacje zostaną wykonane dla grupy od [mysqld5] do [mysqld8]. Jeżeli nie podamy żadnej wartości to program mysqld_multi wykona operacje na wszystkich serwerach wymienionych w pliku opcji.
Kilka przykładów użycia:
Uruchomienie serwera numer 3
shell> mysqld_multi start 3
Zatrzymanie kilku serwerów 4,7,8 oraz 9.
shell> mysqld_multi 4,7-9
Aby zobaczyć więcej przykładów konfiguracji oraz pozostałe opcje:
shell> mysqld_multi --example
Kilka uwag praktycznych:
1.Należy zadbać oto aby konto MySQL używane do zatrzymywania serwerów mysqld miało tę samą nazwę użytkownika i hasło oraz odpowiednie uprawnienia (tj. przywilej SHUTDOWN).
2. Każdy serwer mysqld powinien używać innego portu TCP/IP i gniazda unixowego.
3. Sprawdź uprawnienia do katalogów z danymi bazy, tj. czy konto unixowe bez problemu uzyska do nich dostęp.
4. Staraj się nie używać konta root jako użytkownika z którego uruchamiasz procesy MySQL.
Przykład pliku konfiguracyjnego my.cnf dla potrzeb mysqld_multi
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[mysqld_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user = madmin password = mpass [mysqld1] socket = /var/run/mysqld/mysqld1.sock port = 3301 pid-file = /var/run/mysqld/mysqld1.pid datadir = /var/lib/mysqld1 user = mysqld1 [mysqld2] socket = /var/run/mysqld/mysqld2.sock port = 3302 pid-file = /var/run/mysqld/mysqld2.pid datadir = /var/lib/mysqld2 user = mysqld2 [mysqld4] socket = /var/run/mysqld/mysqld4.sock port = 3304 pid-file = /var/run/mysqld/mysqld4.pid datadir = /var/lib/mysqld4 user = mysqld4 |
Zauważ ze numeracja serwerów MySQL w konfigu nie musi być w kolejności. Dopuszczalne są "dziury".