目次
前提条件
MySQL データ フォルダーの場所の変更
Apparmor エイリアス設定を変更します
ホームページ データベース mysql チュートリアル Ubuntu 16.04 で MySQL データ ディレクトリを別の場所に変更する方法

Ubuntu 16.04 で MySQL データ ディレクトリを別の場所に変更する方法

Aug 31, 2023 pm 09:33 PM

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

この記事では、MySQL データ ディレクトリを変更する方法、または MySQL データベース データを新しい場所に再配置する方法を学びます。この状況は、データベースが非常に急速に増大する場合に使用される可能性があります。セキュリティ上の理由から、データ ディレクトリを新しい場所に移動したいと考えています。

前提条件

  • 非 root ユーザーとして Sudo 権限を持つ Ubuntu コンピューター。
  • MySQL がインストールされ、実行されています。
  • データベース データの場所を移動する新しいボリュームまたは場所。data_vol はコンピューターに接続された新しいボリュームであるため、新しい場所は /mnt/data_vol/MySQL になります。

MySQL データ フォルダーの場所の変更

続行する前に、まずデータ ディレクトリの現在の場所を見つけます

$ 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>
ログイン後にコピー

MySQL root パスワードの入力を求められたら、パスワードを入力します。次のコマンドを実行して、MySQL の現在の作業データ ディレクトリを確認します。

Mysql> select @@datadir;
Output:
+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)
ログイン後にコピー

出力に示されているように、MySQL データベースはデータ ディレクトリのデフォルト フォルダーとして /var/lib/MySQL を使用します。何かを変更する前に、データの整合性をチェックし、MySQL を停止してステータスを確認します。

$ sudo systemctl stop mysql
ログイン後にコピー

systemctl はサービス コマンドに対して何も表示しないためです

$ 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.
ログイン後にコピー

MySQL が停止したので、データを新しい場所に移動します。データを移動するには、データ ファイルのアクセス許可を保持する –a オプションと詳細な出力を表示する –v オプションを指定して Rsync を使用します。

以下は、データを新しい場所に移動するための完全なコマンドです –

$ 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
ログイン後にコピー

rsync 後、データ フォルダーは新しい場所に正常に移動しました。セキュリティ上の理由から、データが新しい場所にあることを確認するまでデータ フォルダーを保持し、現在のデータ ディレクトリの名前を /var/lib/mysql から /var/lib/mysql_backup に変更します。以下は現在のデータディレクトリを変更するコマンドです。

以下は現在のデータ ディレクトリを変更するコマンドです –

$ sudo mv /var/lib/mysql /var/lib/mysql_backup
ログイン後にコピー

次に、デフォルトのデータ ディレクトリを変更します。変更する方法はたくさんありますが、次の場所にあるファイルを編集します。 .conf.d/mysqld.cnf 内の /etc/mysql/mysql mysqld.cnf ファイル。

mysqld.cnf を編集します。コマンドは次のとおりです。

$ 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
ログイン後にコピー

Apparmor エイリアス設定を変更します

さらに、/etc/apparmor.d/tunables/aliasを編集する必要があります。

ファイルの最後に、エイリアス ルールに次の行を追加する必要があります。

$ 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
ログイン後にコピー

ファイルを編集した後、apparmor を再起動する必要があります。

以下は apparmor を再起動するコマンドです。

デフォルトのデータ ディレクトリを変更したため、次のコマンドを実行する必要があります。これにより、スクリプト環境に渡すための最小限のディレクトリ フォルダー構造が作成されます。

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

ここで、mysql サービスを再起動します。

$ sudo systemctl start mysql
ログイン後にコピー

次に、次のコマンドを使用して MySQL サービスのステータスを確認します。

$ 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.
ログイン後にコピー

新しいデータ ディレクトリが変更されたことを確認するために、次のコマンド

$ 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>
ログイン後にコピー
# を実行します。 ## データ ディレクトリの変更を確認したら、/var/lib/mysql_backup にあるデフォルトのデータ ディレクトリを削除します。以下は古いデータベース ディレクトリを削除するコマンドです。

$ sudo rm –rf /var/lib/mysql_backup
ログイン後にコピー
上記の構成と手順では、MySQL データ ディレクトリを新しい場所に再配置する方法を学習しました。これは、より多くのデータを保護したり、別の場所に保存したりするのに役立ちます。

以上がUbuntu 16.04 で MySQL データ ディレクトリを別の場所に変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DockerでのMySQLメモリの使用を減らします DockerでのMySQLメモリの使用を減らします Mar 04, 2025 pm 03:52 PM

DockerでのMySQLメモリの使用を減らします

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Mar 19, 2025 pm 03:51 PM

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

mysqlの問題を解決する方法共有ライブラリを開くことができません mysqlの問題を解決する方法共有ライブラリを開くことができません Mar 04, 2025 pm 04:01 PM

mysqlの問題を解決する方法共有ライブラリを開くことができません

sqliteとは何ですか?包括的な概要 sqliteとは何ですか?包括的な概要 Mar 04, 2025 pm 03:55 PM

sqliteとは何ですか?包括的な概要

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Mar 04, 2025 pm 03:54 PM

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド Mar 04, 2025 pm 03:49 PM

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? 人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? Mar 21, 2025 pm 06:28 PM

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか?

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? 共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? Mar 18, 2025 pm 12:00 PM

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

See all articles