IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Fabien Celaia

Installation de plusieurs instance MySQL 5.7 sur Linux avec gestion systemd

Noter ce billet
par , 11/01/2017 à 14h30 (2097 Affichages)
Introduction



Installation de MySQL 5.7 sous Linux, sans utilisation de package yum ou rpm.
Cette façon de faire permet de gérer aisément plusieurs versions Linux sur la même machine, sans être contraint par les "distributions officielles".
Elle permet aussi de faire cohabiter plusieurs instances sur le même serveur. A ce titre, la version utilisée doit être au minimum la 5.7.10.
A ma connaissance, le fork MariaDB ne fonctionne pas de la même manière.

Récupérer les binaires


Rechercher le bon binaire depuis le site de l'éditeur.

En tant que root, récupération des binaires et décompactage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
cd /tmp
wget https://dev.mysql.com/get/Downloads/...-x86_64.tar.gz
gunzip mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
tar -xvf mysql-5.7.17-linux-glibc2.5-x86_64.tar
mv mysql-5.7.17-linux-glibc2.5-x86_64.tar /mysql/
cd /mysql
chown mysql:mysql mysql-5.7.17-linux-glibc2.5-x86_64.tar
cd /etc
ln -s /mysql/admin/my.cnf my.cnf
cd /usr/local
ln -s /mysql/mysql-5.7.17/ mysql
Le dernier softlink permet d'outrepasser un "bug" lié aux versions packagées.

Installation des binaires



Créer un login et un group mysql, puis

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
mkdir /mysql
cd /mysql
mkdir admin data  log
tar -xvf mysql-5.7.17-linux-glibc2.5-x86_64.tar
rm *.tar
mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql-5.7.17
Création de l'instance MySQL



Création du fichier de configuation /mysql/admin/my.cnf

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[mysql]
port                    = 33001
prompt                  = \p:\u$\d>
socket                  = /mysql/admin/01.sock

[mysqld@01]
basedir                         = /mysql/mysql-5.7.17/
datadir                         = /mysql/data/01
explicit_defaults_for_timestamp = true
innodb_file_per_table           = on
innodb_data_home_dir            = /mysql/data/01
innodb_log_group_home_dir       = /mysql/data/01
socket                          = /mysql/admin/01.sock
log-error                       = /mysql/log/errorlog01.log
pid-file                        = /mysql/admin/01.pid
port                            = 33001
server-id                       = 0
slow-query-log-file             = /mysql/log/slow-query-logfile01.log
collation-server                = utf8_unicode_ci
character-set-server            = utf8
Création des bases de données système et récupération du mot de passe par défaut



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
/mysql/mysql-5.7.17/bin/mysqld --initialize --explicit_defaults_for_timestamp --datadir=/mysql/data/
tail –n1 /mysql/log/errorlog01.log | cut –d: -f4
Configuration Systemd


Démarrage de l'instance via systemd



En tant que root, créer le fichier /etc/systemd/system/mysqld@.service

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Unit]
Description=MySQL Server
After=network.target
After=syslog.target

[Service]
User=mysql
Group=mysql
Type=forking

ExecStart=/mysql/mysql-5.7.17/bin/mysqld --defaults-group-suffix=@%I  --daemonize $MYSQLD_OPTS

Restart=on-failure
RestartPreventExitStatus=1

LimitNOFILE=infinity
LimitCORE=infinity

TimeoutSec=300
PrivateTmp=false

[Install]
WantedBy=multi-user.target
Activation du service



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
chmod +x /etc/systemd/system/mysqld@.service
systemctl daemon-reload
systemctl enable mysqld@01.service
Démarrage


Code : Sélectionner tout - Visualiser dans une fenêtre à part
systemctl start mysqld@01
Etat


Code : Sélectionner tout - Visualiser dans une fenêtre à part
systemctl status mysqld@01
Arrêt


Code : Sélectionner tout - Visualiser dans une fenêtre à part
systemctl stop mysqld@01

Connexion initiale à la base et ajout du compte root pour accès remote


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
mysql -u root -p MotDePasseRootRecupere  -S /mysql/admin/01.sock
set  password for root@localhost = password('UnNouveauMotDePasse') ;
create user root@'%' identified by 'UnNouveauMotDePasse';
Clônage



Par la suite, on peut aisément clôner une base en quelques étapes
  1. ajouter une section [mysqld@Nouvelleinstance] dans le fichier my.cnf et s'assurer de modifier le no de port et le datadir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [mysqld@02]
    basedir                         = /mysql/mysql-5.7.17/
    datadir                         = /mysql/data/02
    explicit_defaults_for_timestamp = true
    innodb_file_per_table           = on
    innodb_data_home_dir            = /mysql/data/02
    innodb_log_group_home_dir       = /mysql/data/02
    socket                          = /mysql/admin/02.sock
    log-error                       = /mysql/log/errorlog02.log
    pid-file                        = /mysql/admin/02.pid
    port                            = 33002
    server-id                       = 0
    slow-query-log-file             = /mysql/log/slow-query-logfile02.log
    collation-server                = utf8_unicode_ci
    character-set-server            = utf8
  2. Copier le datadir de la base source sur le nouveau datadir de la base clônée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp -R /mysql/data/01 /mysql/data/02
  3. Démarrer le service de la nouvelle instance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    systemctl start mysqld@02
    systemctl enable mysqld@02

Envoyer le billet « Installation de plusieurs instance  MySQL 5.7 sur Linux avec gestion systemd » dans le blog Viadeo Envoyer le billet « Installation de plusieurs instance  MySQL 5.7 sur Linux avec gestion systemd » dans le blog Twitter Envoyer le billet « Installation de plusieurs instance  MySQL 5.7 sur Linux avec gestion systemd » dans le blog Google Envoyer le billet « Installation de plusieurs instance  MySQL 5.7 sur Linux avec gestion systemd » dans le blog Facebook Envoyer le billet « Installation de plusieurs instance  MySQL 5.7 sur Linux avec gestion systemd » dans le blog Digg Envoyer le billet « Installation de plusieurs instance  MySQL 5.7 sur Linux avec gestion systemd » dans le blog Delicious Envoyer le billet « Installation de plusieurs instance  MySQL 5.7 sur Linux avec gestion systemd » dans le blog MySpace Envoyer le billet « Installation de plusieurs instance  MySQL 5.7 sur Linux avec gestion systemd » dans le blog Yahoo

Commentaires