mise à jour procedure de création d'instances
This commit is contained in:
parent
3b849d0335
commit
aa6021c820
|
@ -1483,7 +1483,7 @@ Créer un repertoire temporaire dédié à cette instance :
|
|||
Créer ensuite le *datadir* :
|
||||
|
||||
~~~
|
||||
# mysql_install_db --user=mysqld1 --datadir=/srv/mysqld_instances/mysqld1
|
||||
# mysql_install_db --user=mysqld1 --datadir=/srv/mysqld_instances/mysqld1 --log_error=/var/log/mysqld1.log
|
||||
# chmod 700 /srv/mysqld_instances/mysqld1
|
||||
~~~
|
||||
|
||||
|
@ -1491,15 +1491,13 @@ Ajouter ces lignes dans `/etc/mysql/conf.d/zzz_mysqld1.cnf` :
|
|||
|
||||
~~~{.ini}
|
||||
[mysqld1]
|
||||
mysqld = /usr/bin/mysqld_safe
|
||||
user = mysqld1
|
||||
port = 3307
|
||||
tmpdir = /home/mysqld1-tmp/
|
||||
socket = /var/run/mysqld/mysqld1.sock
|
||||
pid-file = /var/run/mysqld/mysqld1.pid
|
||||
socket = /var/run/mysqld1/mysqld1.sock
|
||||
pid-file = /var/run/mysqld1/mysqld1.pid
|
||||
datadir = /srv/mysqld_instances/mysqld1
|
||||
log_error = /var/log/mysql/mysqld1/error.log
|
||||
slow_query_log_file = /var/log/mysqld1-slow.log
|
||||
log_error = /var/log/mysqld1.log
|
||||
~~~
|
||||
|
||||
> *Note 1* : même si l'on ne prévoit pas de faire tourner le mysqld principal sur le port 3306,
|
||||
|
@ -1514,18 +1512,63 @@ Pour éviter ça, il suffit de rajouter :
|
|||
skip-slave-start
|
||||
~~~
|
||||
|
||||
Si /usr est monté en RO, déplacer le log de mysqld_multi :
|
||||
On créé une unité systemd multi-instances pour mysql dans `/etc/systemd/system/mysqld@.service`
|
||||
|
||||
~~~
|
||||
# mv /usr/share/mysql/mysqld_multi.log /var/log/mysql/mysqld_multi.log
|
||||
# ln -s /var/log/mysql/mysqld_multi.log /usr/share/mysql/mysqld_multi.log
|
||||
# chown mysql:adm /var/log/mysql/mysqld_multi.log
|
||||
[Unit]
|
||||
Description=MySQL Multi Server for instance %i
|
||||
After=syslog.target
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
PIDFile=/var/run/mysqld%i/mysqld%i.pid
|
||||
User=mysqld%i
|
||||
Group=mysqld%i
|
||||
Type=forking
|
||||
ExecStart=/usr/bin/mysqld_multi start %i
|
||||
ExecStop=/usr/bin/mysqld_multi stop %i
|
||||
Restart=always
|
||||
PrivateTmp=true
|
||||
RuntimeDirectory=mysqld%i
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
~~~
|
||||
|
||||
On recharge le daemon systemd pour que l'unité soit prise en compte :
|
||||
|
||||
~~~
|
||||
# systemctl daemon-reload
|
||||
~~~
|
||||
|
||||
Puis lancer la nouvelle instance :
|
||||
|
||||
~~~
|
||||
# mysqld_multi start 1
|
||||
# systemctl start mysqld@1
|
||||
~~~
|
||||
|
||||
On peux voir le status de l'instance comme une unité systemd classique avec :
|
||||
|
||||
~~~
|
||||
# systemctl status mysqld@1
|
||||
|
||||
|
||||
● mysqld@1.service - MySQL Multi Server for instance 1
|
||||
Loaded: loaded (/etc/systemd/system/mysqld@.service; disabled; vendor preset: enabled)
|
||||
Active: active (running) since Tue 2020-08-18 15:49:27 CEST; 6min ago
|
||||
Process: 16403 ExecStart=/usr/bin/mysqld_multi start 1 (code=exited, status=0/SUCCESS)
|
||||
Main PID: 16408 (mysqld)
|
||||
Tasks: 30 (limit: 4915)
|
||||
Memory: 70.7M
|
||||
CGroup: /system.slice/system-mysqld.slice/mysqld@1.service
|
||||
└─16408 /usr/sbin/mysqld --defaults-group-suffix=1 --user=mysqld1 --port=3307 --tmpdir=/localhome/emorino/mysqld1-tmp --socket=/var/run/mysqld1/mysq
|
||||
|
||||
août 18 15:49:27 huit systemd[1]: Starting MySQL Multi Server for instance 1...
|
||||
août 18 15:49:27 huit mysqld_multi[16403]: WARNING: Log file disabled. Maybe directory or file isn't writable?
|
||||
août 18 15:49:27 huit mysqld_multi[16403]: [67B blob data]
|
||||
août 18 15:49:27 huit mysqld_multi[16403]: Starting MariaDB servers
|
||||
août 18 15:49:27 huit mysqld_multi[16403]: 2020-08-18 15:49:27 0 [Note] /usr/sbin/mysqld (mysqld 10.3.23-MariaDB-0+deb10u1) starting as process 16408 ...
|
||||
août 18 15:49:27 huit systemd[1]: Started MySQL Multi Server for instance 1.
|
||||
~~~
|
||||
|
||||
"1" est une sorte d'alias de mysqld**1**
|
||||
|
@ -1538,13 +1581,6 @@ Pour se conneter à la nouvelle instance, il faut utilisé la socket, par exempl
|
|||
# mysql -P3307 --socket=/var/run/mysqld/mysqld1.sock
|
||||
~~~
|
||||
|
||||
|
||||
Pour voir l'état des instances :
|
||||
|
||||
~~~
|
||||
# mysqld_multi report
|
||||
~~~
|
||||
|
||||
Et pour stopper une instance, on évite la commande « mysqld_multi stop 1 » qui n'est que rarement fiable et peut laisser l'instance dans un état incorrect, difficile à récupérer.
|
||||
|
||||
On préfère passer la commande « shutdown » en interne :
|
||||
|
@ -1555,6 +1591,12 @@ On préfère passer la commande « shutdown » en interne :
|
|||
|
||||
> **Note** : a priori cela revient à envoyer un signal SIGTERM (kill -15) au process mysqld
|
||||
|
||||
> **Note2** : Avec l'unité systemd on peux stopper l'unité systemd en faisant :
|
||||
|
||||
~~~
|
||||
# systemctl stop mysqld@1
|
||||
~~~
|
||||
|
||||
### Nettoyage
|
||||
|
||||
Si le *mysqld* principal n'est pas utilisé, on désactivera le script d'init.d /etc/init.d/mysql (en ajoutant `exit 0`
|
||||
|
|
Loading…
Reference in New Issue