Maison > Article > base de données > Comment changer le répertoire de données MySQL vers un autre emplacement sur Ubuntu 16.04
Dans cet article, nous apprendrons comment modifier le répertoire de données MySQL ou déplacer les données de la base de données MySQL vers un nouvel emplacement. Cette situation peut être utilisée lorsque la base de données se développe très rapidement ou pour des raisons de sécurité, nous souhaitons déplacer des copies du répertoire de données. vers un nouvel emplacement.
Continuer avant , nous trouvons d'abord l'emplacement actuel du répertoire de données
$ mysql –u root –p Output: Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 472 Server version: 5.6.30-0ubuntu0.14.04.1 (Ubuntu) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Lorsque vous êtes invité à saisir le mot de passe root pour MySQL, entrez le mot de passe. Exécutez la commande suivante pour comprendre le répertoire de données de travail actuel de MySQL.
Mysql> select @@datadir; Output: +-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
Comme indiqué dans le résultat, la base de données MySQL utilise /var/lib/MySQL comme dossier par défaut pour le répertoire de données. Avant de modifier quoi que ce soit, nous vérifierons l'intégrité des données, nous arrêterons MySQL et vérifierons l'état
$ sudo systemctl stop mysql
car systemctl n'affichera rien de la commande services
$ sudo systemctl status mysql Output: mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: inactive (dead) since Mon 2016-09-12 13:57:43 IST; 1s ago Process: 17669 ExecStartPost=/usr/share/mysql/mysql-systemd-start post (code=exited, status=0/SUCCESS) Process: 17668 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS) Process: 17664 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 17668 (code=exited, status=0/SUCCESS) Sep 12 13:55:14 ubuntu-16 systemd[1]: Starting MySQL Community Server... Sep 12 13:55:15 ubuntu-16 systemd[1]: Started MySQL Community Server. Sep 12 13:57:40 ubuntu-16 systemd[1]: Stopping MySQL Community Server... Sep 12 13:57:43 ubuntu-16 systemd[1]: Stopped MySQL Community Server.
Une fois que nous aurons confirmé que MySQL est arrêté, nous mettrons le données Déplacer vers un nouvel emplacement. Pour déplacer les données, nous utiliserons Rsync avec l'option –a, qui préserve les autorisations sur les fichiers de données, et –v qui affiche une sortie détaillée.
Vous trouverez ci-dessous la commande complète pour déplacer les données vers un nouvel emplacement –
$ rsync –av /var/lib/mysql /mnt/data_vol/ OutPut: sending incremental file list mysql/ mysql/auto.cnf mysql/debian-5.7.flag mysql/ib_buffer_pool mysql/ib_logfile0 mysql/ib_logfile1 mysql/ibdata1 mysql/mysql/ mysql/mysql/columns_priv.MYD mysql/mysql/columns_priv.MYI mysql/mysql/columns_priv.frm mysql/mysql/db.MYD mysql/mysql/db.MYI mysql/mysql/db.frm mysql/mysql/db.opt …. mysql/sys/x@0024user_summary.frmmysql/sys/x@0024user_summary_by_file_io.frm mysql/sys/x@0024user_summary_by_file_io_type.frm mysql/sys/x@0024user_summary_by_stages.frm mysql/sys/x@0024user_summary_by_statement_latency.frm mysql/sys/x@0024user_summary_by_statement_type.frm mysql/sys/x@0024wait_classes_global_by_avg_latency.frm mysql/sys/x@0024wait_classes_global_by_latency.frm mysql/sys/x@0024waits_by_host_by_latency.frm mysqlsys//x@0024waits_by_user_by_latency.frm mysql/sys/x@0024waits_global_by_latency.frm sent 199,384,083 bytes received 6,858 bytes 132,927,294.00 bytes/sec total size is 199,307,568 speedup is 1.00
Après rsync, déplacement réussi du dossier de données vers un nouvel emplacement. Pour des raisons de sécurité, nous conserverons le dossier de données jusqu'à ce que nous confirmions que les données se trouvent dans le nouvel emplacement, et nous renommerons le répertoire de données actuel de /var/lib/mysql en /var/lib/mysql_backup . Vous trouverez ci-dessous la commande pour modifier le répertoire de données actuel.
Ci-dessous se trouve la commande pour changer le répertoire de données actuel –
$ sudo mv /var/lib/mysql /var/lib/mysql_backup
Maintenant, nous allons changer le répertoire de données par défaut, pour le changer, nous avons plusieurs façons mais nous allons éditer le fichier situé dans /etc/mysql/mysql.conf.d/ mysqld.cnf Fichier mysqld.cnf dans .
Modifiez mysqld.cnf avec la commande suivante
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf Output: [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /mnt/data_vol/mysql/ tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking
De plus, nous devons modifier /etc/apparmor.d/tunables/alias
En bas du fichier, nous devons ajouter l'alias Les lignes suivantes dans la règle.
$ sudo vi /etc/apparmor.d/tunables/alias Output: # ------------------------------------------------------------------ # # Copyright (C) 2010 Canonical Ltd. # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # ------------------------------------------------------------------ # Alias rules can be used to rewrite paths and are done after variable # resolution. For example, if '/usr' is on removable media: # alias /usr/ -> /mnt/usr/, # # Or if mysql databases are stored in /home: # alias /var/lib/mysql/ -> /home/mysql/, alias /var/lib/mysql/ -> /mnt/data_vol/mysql
Après avoir modifié le fichier, nous devons redémarrer apparmor.
Voici les commandes pour redémarrer Apparmor.
Depuis que nous avons modifié le répertoire de données par défaut, nous devons exécuter la commande suivante qui créera une structure de dossiers de répertoires minimale pour transmettre l'environnement de script.
$ sudo mkdir /var/lib/mysql/mysql –p
Maintenant, nous allons redémarrer le service mysql.
$ sudo systemctl start mysql
Nous allons maintenant vérifier l'état du service MySQL à l'aide de la commande suivante
$ sudo systemctl status mysql Output: mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2016-09-12 14:17:27 IST; 23s ago Process: 18481 ExecStartPost=/usr/share/mysql/mysql-systemd-start post (code=exited, status=0/SUCC Process: 18477 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCES Main PID: 18480 (mysqld) Tasks: 28 (limit: 512) Memory: 137.3M CPU: 329ms CGroup: /system.slice/mysql.service └─18480 /usr/sbin/mysqld Sep 12 14:17:26 ubuntu-16 systemd[1]: Starting MySQL Community Server... Sep 12 14:17:27 ubuntu-16 systemd[1]: Started MySQL Community Server.
Pour nous assurer que le nouveau répertoire de données a été modifié, nous exécuterons la commande suivante
$ mysql -uroot -p Output: Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.13-0ubuntu0.16.04.2 (Ubuntu) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select @@datadir +----------------------+ | @@datadir | +----------------------+ | /mnt/data_vol/mysql/ | +-----------------+ 1 row in set (0.00 sec) mysql>
Une fois que nous aurons confirmé que le répertoire de données a changé, nous supprimerons le répertoire de données par défaut. Ce répertoire se trouve dans /var/lib/mysql_backup. Vous trouverez ci-dessous la commande pour supprimer l'ancien répertoire de base de données.
$ sudo rm –rf /var/lib/mysql_backup
Dans la configuration et les étapes ci-dessus, nous avons appris à déplacer le répertoire de données MySQL vers un nouvel emplacement, ce qui nous aidera à protéger ou à stocker plus de données vers un emplacement différent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!