Heim > Datenbank > MySQL-Tutorial > Hauptteil

So ändern Sie das MySQL-Datenverzeichnis unter Ubuntu 16.04 an einen anderen Speicherort

王林
Freigeben: 2023-08-31 21:33:02
nach vorne
1077 Leute haben es durchsucht

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

In diesem Artikel erfahren Sie, wie Sie das MySQL-Datenverzeichnis ändern oder MySQL-Datenbankdaten an einen neuen Speicherort verschieben. Diese Situation kann auftreten, wenn die Datenbank sehr schnell wächst oder wir aus Sicherheitsgründen das Datenverzeichnis verschieben möchten an einen neuen Standort.

Voraussetzungen

  • Ein Ubuntu-Computer mit Sudo-Berechtigungen als Nicht-Root-Benutzer.
  • MySQL ist installiert und läuft.
  • Das neue Volume oder der neue Speicherort, auf den wir den Datenbankdatenspeicherort verschieben möchten, ist /mnt/data_vol/MySQL, da data_vol ein neues Volume ist, das mit dem Computer verbunden ist.

Speicherort des MySQL-Datenordners ändern.

Vorher fortfahren , suchen wir zunächst den aktuellen Speicherort des Datenverzeichnisses

$ 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>
Nach dem Login kopieren

Wenn Sie nach dem Root-Passwort für MySQL gefragt werden, geben Sie das Passwort ein. Führen Sie den folgenden Befehl aus, um das aktuelle Arbeitsdatenverzeichnis von MySQL zu erfahren.

Mysql> select @@datadir;
Output:
+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)
Nach dem Login kopieren

Wie in der Ausgabe gezeigt, verwendet die MySQL-Datenbank /var/lib/MySQL als Standardordner für das Datenverzeichnis. Bevor wir etwas ändern, überprüfen wir die Integrität der Daten, stoppen MySQL und überprüfen den Status

$ sudo systemctl stop mysql
Nach dem Login kopieren

, da systemctl nichts vom Befehl „services“ anzeigt

$ 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.
Nach dem Login kopieren

Sobald wir bestätigt haben, dass MySQL gestoppt wurde, werden wir Folgendes tun: Die Daten werden an einen neuen Speicherort verschoben. Um die Daten zu verschieben, verwenden wir Rsync mit der Option –a, die die Berechtigungen für die Datendateien beibehält, und –v, die eine ausführliche Ausgabe anzeigt.

Unten finden Sie den vollständigen Befehl zum Verschieben von Daten an einen neuen Speicherort –

$ 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
Nach dem Login kopieren

Nach Rsync wurde der Datenordner erfolgreich an einen neuen Speicherort verschoben. Aus Sicherheitsgründen behalten wir den Datenordner bei, bis wir bestätigen, dass sich die Daten am neuen Speicherort befinden, und benennen das aktuelle Datenverzeichnis von /var/lib/mysql in /var/lib/mysql_backup um. Nachfolgend finden Sie den Befehl zum Ändern des aktuellen Datenverzeichnisses.

Unten finden Sie den Befehl zum Ändern des aktuellen Datenverzeichnisses –

$ sudo mv /var/lib/mysql /var/lib/mysql_backup
Nach dem Login kopieren

Jetzt ändern wir das Standarddatenverzeichnis. Zum Ändern haben wir viele Möglichkeiten, aber wir bearbeiten die Datei unter /etc/mysql/mysql.conf.d/ mysqld.cnf mysqld.cnf-Datei in .

Bearbeiten Sie mysqld.cnf mit dem folgenden Befehl

$ 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
Nach dem Login kopieren

Apparmor-Aliaseinstellungen ändern

Außerdem müssen wir /etc/apparmor.d/tunables/alias

unten bearbeiten der Datei müssen wir den Alias ​​hinzufügen. Die folgenden Zeilen in den Regeln.

$ 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
Nach dem Login kopieren

Nachdem wir die Datei bearbeitet haben, müssen wir Apparmor neu starten.

Das Folgende ist der Befehl zum Neustarten von Apparmor.

Da wir das Standarddatenverzeichnis geändert haben, müssen wir den folgenden Befehl ausführen, der eine minimale Verzeichnisordnerstruktur erstellt, um die Skriptumgebung zu übergeben.

$ sudo mkdir /var/lib/mysql/mysql –p

Jetzt starten wir den MySQL-Dienst neu.

$ sudo systemctl start mysql
Nach dem Login kopieren

Jetzt überprüfen wir den Status des MySQL-Dienstes mit dem folgenden Befehl:

$ 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.
Nach dem Login kopieren

Um sicherzustellen, dass das neue Datenverzeichnis geändert wurde, führen wir den folgenden Befehl aus:

$ 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>
Nach dem Login kopieren

Sobald wir bestätigt haben, dass sich das Datenverzeichnis geändert hat, Wir werden das Standarddatenverzeichnis löschen. Dieses Verzeichnis befindet sich in /var/lib/mysql_backup. Nachfolgend finden Sie den Befehl zum Löschen des alten Datenbankverzeichnisses.

$ sudo rm –rf /var/lib/mysql_backup
Nach dem Login kopieren

In der Konfiguration und den Schritten oben haben wir gelernt, das MySQL-Datenverzeichnis an einen neuen Speicherort zu verschieben, was uns dabei hilft, mehr Daten zu schützen oder an einem anderen Speicherort zu speichern.

Das obige ist der detaillierte Inhalt vonSo ändern Sie das MySQL-Datenverzeichnis unter Ubuntu 16.04 an einen anderen Speicherort. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!