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* :
|
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
|
# chmod 700 /srv/mysqld_instances/mysqld1
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
@ -1491,15 +1491,13 @@ Ajouter ces lignes dans `/etc/mysql/conf.d/zzz_mysqld1.cnf` :
|
||||||
|
|
||||||
~~~{.ini}
|
~~~{.ini}
|
||||||
[mysqld1]
|
[mysqld1]
|
||||||
mysqld = /usr/bin/mysqld_safe
|
|
||||||
user = mysqld1
|
user = mysqld1
|
||||||
port = 3307
|
port = 3307
|
||||||
tmpdir = /home/mysqld1-tmp/
|
tmpdir = /home/mysqld1-tmp/
|
||||||
socket = /var/run/mysqld/mysqld1.sock
|
socket = /var/run/mysqld1/mysqld1.sock
|
||||||
pid-file = /var/run/mysqld/mysqld1.pid
|
pid-file = /var/run/mysqld1/mysqld1.pid
|
||||||
datadir = /srv/mysqld_instances/mysqld1
|
datadir = /srv/mysqld_instances/mysqld1
|
||||||
log_error = /var/log/mysql/mysqld1/error.log
|
log_error = /var/log/mysqld1.log
|
||||||
slow_query_log_file = /var/log/mysqld1-slow.log
|
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
> *Note 1* : même si l'on ne prévoit pas de faire tourner le mysqld principal sur le port 3306,
|
> *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
|
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
|
[Unit]
|
||||||
# ln -s /var/log/mysql/mysqld_multi.log /usr/share/mysql/mysqld_multi.log
|
Description=MySQL Multi Server for instance %i
|
||||||
# chown mysql:adm /var/log/mysql/mysqld_multi.log
|
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 :
|
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**
|
"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
|
# 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.
|
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 :
|
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
|
> **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
|
### 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`
|
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 a new issue