Maison  >  Article  >  base de données  >  Comment changer le répertoire de données MySQL vers un autre emplacement sur Ubuntu 16.04

Comment changer le répertoire de données MySQL vers un autre emplacement sur Ubuntu 16.04

王林
王林avant
2023-08-31 21:33:021118parcourir

如何在 Ubuntu 16.04 上将 MySQL 数据目录更改为另一个位置

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.

Prérequis

  • Un ordinateur Ubuntu avec les privilèges sudo en tant qu'utilisateur non root.
  • MySQL est installé et exécuté.
  • Le nouveau volume ou emplacement vers lequel nous souhaitons déplacer l'emplacement des données de la base de données, le nouvel emplacement sera /mnt/data_vol/MySQL car data_vol est un nouveau volume connecté à l'ordinateur

Changer l'emplacement du dossier de données MySQL

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

Modifiez les paramètres de l'alias Apparmor

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer