MySQLd Multi Lors de la mise en place de la replication, il est interessant de pouvoir lancer plusieurs MySQL en une fois. L'utilitaire mysql_multi est la pour ca La première étape de la configuration de mysqld_multi est la création de deux groupes [mysqld] distincts dans le fichier my.cnf existant. Assurez-vous que l'utilisateur MySQL, qui arrête les services mysqld, a le même mot de passe pour tous les serveurs MySQL accessibles par mysqld_multi. Cet utilisateur doit avoir le privilège 'Shutdown_priv', mais pour des raisons de sécurité raisons ne devraient pas avoir d'autres privilèges. Il est conseillé de créer un utilisateur 'multi_admin' commun à tous les serveurs MySQL contrôlés par mysqld_multi. GRANT SHUTDOWN ON *. * TO multi_admin @ localhost IDENTIFIÉ PAR 'password' Sur les serveurs, il faut: Chaque serveur en nécessite un port TCP et un socket Unix unique. Chaque serveur doit avoir un datadir différents Creation des serveurs pilou@pilou-pc:~/Formation/mysql-8.0.20-linux-glibc2.12-x86_64$ ./bin/mysqld --initialize --basedir=/home/pilou/Formation/mysql-8.0.20-linux-glibc2.12-x86_64 --datadir=/home/pilou/Formation/mysqld_multi/data1 --log-error=/home/pilou/Formation/mysqld_multi/logerror1 pilou@pilou-pc:~/Formation/mysql-8.0.20-linux-glibc2.12-x86_64$ ./bin/mysqld --initialize --basedir=/home/pilou/Formation/mysql-8.0.20-linux-glibc2.12-x86_64 --datadir=/home/pilou/Formation/mysqld_multi/data2 --log-error=/home/pilou/Formation/mysqld_multi/logerror2 Sur chaque serveur, on modifie le mot de passe de root et on crée l'utilisateur multi_admin mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'piloupilou' -> ; Query OK, 0 rows affected (0.02 sec) mysql> create user 'mysqlmulti'@'localhost' IDENTIFIED BY 'mysqlmulti' -> ; Query OK, 0 rows affected (0.02 sec) mysql> GRANT SHUTDOWN ON *.* to 'mysqlmulti'@'localhost'; Query OK, 0 rows affected (0.02 sec) Fichier de configuration. Il faut ensuite créer le fichier de configuration pour mysqld_multi [mysqld_multi] mysqld = /home/pilou/Formation/mysql-8.0.20-linux-glibc2.12-x86_64/bin/mysqld mysqladmin = /home/pilou/Formation/mysql-8.0.20-linux-glibc2.12-x86_64/bin/mysqladmin log=/home/pilou/Formation/mysqld_multi/mysqld_multi.log user = mysqlmulti pass = mysqlmulti [mysqld1] port = 3306 mysqld = /home/pilou/Formation/mysql-8.0.20-linux-glibc2.12-x86_64/bin/mysqld socket = /tmp/mysql.sock1 skip-external-locking key_buffer_size = 16K max_allowed_packet = 1M table_open_cache = 4 sort_buffer_size = 64K read_buffer_size = 256K read_rnd_buffer_size = 256K net_buffer_length = 2K thread_stack = 128K table_open_cache=500 datadir = "/home/pilou/Formation/mysqld_multi/data1" pid-file = /home/pilou/Formation/mysqld_multi/data1/mysql1.pid log-error=/home/pilou/Formation/mysqld_multi/logerror1.err [mysqld2] port = 3307 mysqld = /home/pilou/Formation/mysql-8.0.20-linux-glibc2.12-x86_64/bin/mysqld socket = /tmp/mysql.sock2 skip-external-locking key_buffer_size = 16K max_allowed_packet = 1M table_open_cache = 4 sort_buffer_size = 64K read_buffer_size = 256K read_rnd_buffer_size = 256K net_buffer_length = 2K thread_stack = 128K table_open_cache=500 datadir = "/home/pilou/Formation/mysqld_multi/data2" pid-file = /home/pilou/Formation/mysqld_multi/data2/mysql2.pid log-error=/home/pilou/Formation/mysqld_multi/logerror2.err Le lancement se fait ainsi ./bin/mysqld_multi --defaults-file=/home/pilou/Formation/mysql-8.0.20-linux-glibc2.12-x86_64/mysqld_multi.ini --verbose start 1 et l'arret ./bin/mysqld_multi --defaults-file=/home/pilou/Formation/mysql-8.0.20-linux-glibc2.12-x86_64/mysqld_multi.ini --verbose stop