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.
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>
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)
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
, 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.
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 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
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
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
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
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.
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>
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
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!