MySQLでデータベースデータ保存ディレクトリを変更する方法

MySQLでデータベースデータ保存ディレクトリを変更する方法

序文

MySQL データベースのデフォルトのデータベース ファイルは /var/lib/mysql にあります。場合によっては、ストレージ計画やその他の理由により、MySQL データベースのデータ ストレージ ディレクトリを変更する必要があることがあります。以下は実際のプロセスの手順の概要です。では早速、見ていきましょう。

方法は次のとおりです。

1: MySQLデータベースの保存ディレクトリを確認する

[root@DB-Server tmp]# mysqladmin -u root -p variables | grep datadir
 
パスワードを入力してください: 
 
| データディレクトリ | /var/lib/mysql/

2: MySQLサービスをシャットダウンする

MySQL データ ディレクトリを変更する前に、MySQL サービスをシャットダウンする必要があります。

方法1:

[root@DB-Server ~]# サービスmysqlステータス
 
MySQL 実行中 (9411) [ OK ]
 
[root@DB-Server ~]# サービスmysql停止
 
MySQL をシャットダウンしています...[OK]
 
[root@DBサーバー ~]# 

方法2:

[root@DB-Server ~]# /etc/rc.d/init.d/mysql ステータス
 
MySQL 実行中 (8900) [ OK ]
 
[root@DB-Server ~]# /etc/rc.d/init.d/mysql を停止します
 
MySQL をシャットダウンしています...[OK]
 
[root@DBサーバー ~]#

3: 新しいデータベース保存ディレクトリを作成する

[root@DB-Server ~]# cd /u01

[root@DB-Server u01]# mkdir mysqldata

4: MySQLデータディレクトリを新しい場所に移動する

[root@DB-Server ~]# mv /var/lib/mysql /u01/mysqldata/

5: 設定ファイルmy.cnfを変更する

すべてのバージョンに my.cnf 構成ファイルが含まれているわけではありません。MySQL 5.5 では、my.cnf 構成ファイルが見つかりません。一部の MySQL バージョンでは、このファイルは /usr/my.cnf にあります。/etc/ ディレクトリに my.cnf 構成ファイルがない場合は、/usr/share/mysql/ で *.cnf ファイルを探し、そのうちの 1 つを /etc/ にコピーして、名前を my.cnf に変更してください。コマンドは次のとおりです。

[root@DB-Server mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

/etc/my.cnfファイルを編集し、ソケットパラメータを変更します。

MySQL 5.5 バージョン

# 以下のオプションはすべてのMySQLクライアントに渡されます
[クライアント]
#パスワード = あなたのパスワード
ポート = 3306
ソケット = /u01/mysqldata/mysql/mysql.sock
 
# 以下に特定のプログラムに関するエントリを示します
 
# MySQL サーバー
[mysqld]
ポート = 3306
ソケット = /u01/mysqldata/mysql/mysql.sock
外部ロックをスキップ
キーバッファサイズ = 16M
最大許容パケット = 1M
テーブルオープンキャッシュ = 64
ソートバッファサイズ = 512K
ネットバッファ長 = 8K
読み取りバッファサイズ = 256K
読み取りバッファサイズ = 512K
myisam_sort_buffer_size = 8M 

6: 起動スクリプト /etc/init.d/mysql を変更する

パラメータdatadirをdatadir=/u01/mysqldata/mysql/に変更します。

7: MySQLサービスを起動し、MySQLデータベースパスを確認する

[root@DB-Server ~]# サービスmysql 開始
MySQL を起動しています。[OK]
[root@DB-Server ~]# mysqladmin -u root -p variables | grep datadir
パスワードを入力してください: 
| データディレクトリ | /u01/mysqldata/mysql/

私の質問:

1: データベース保存ディレクトリを変更する前は、/var/lib/mysql/ ディレクトリに mysql.sock ファイルがありません。上記の設定をインストールすると、mysql.sock ファイルが生成されます。

mysql.sock ファイルに関して、情報を検索しました: mysql.sock はソケット接続に使用されるファイルです。つまり、このファイルはデーモンが起動されたときにのみ存在します。ただし、mysql プログラム (このプログラムはクライアント、サーバーは mysqld) は、あらゆるタイプの非ローカル ホストに対して、接続に mysql.sock ファイルを使用するかどうかを選択できます (この方法は、Unix ホスト上のローカル mysqld に接続する場合にのみ適しているため)。このファイルは絶対に必要ですか? これについてはさらに説明が必要です。

2: ネット上でMySQLデータパスを変更する方法をまとめているネットユーザーを見ました。その中には、新しく作成したディレクトリの権限処理を必要とするものもあれば、ディレクトリ権限の承認を必要としないものもあります。私はそれらを処理せず、問題はありませんでした。新しいデータベース ディレクトリを承認する必要がありますか?

3: MySQL_5.6.20バージョンをテストした際、my.cnfは修正せず、起動スクリプト/etc/init.d/mysqlのみ修正しましたが、全く問題ありませんでした。 myssql.sock ファイルも生成されません。

4: selinux が無効になっていない場合、MySQL データ パスを変更した後に MySQL サービスを起動するとエラーが発生する可能性があることに注意してください。この理由としては、バックグラウンド サービスには対応するディレクトリに対する対応する権限が必要であり、mysql のデフォルト パス /var/lib/mysql には対応するポリシーが追加されていることが挙げられます。パスが変更された後、対応するポリシーがないため、バックグラウンド プロセスは selinux によってファイルの読み取りをブロックされ、権限エラーが発生します。 したがって、Selinux をオフにするか、ファイルのセキュリティ コンテキストを変更してください。

[root@DB-Server mysql]# /etc/init.d/mysql を起動します
 
MySQL を起動しています....サーバーは PID ファイル (/u01/mysqldata/mysql//DB-Server.localdomain.pid) を更新せずに終了しました。[失敗]
 
[root@DBサーバーmysql]# 
 
[root@DBサーバーmysql]# chcon -R -t mysqld_db_t /u01/mysqldata/mysql/
 
[root@DB-Server mysql]# /etc/init.d/mysql を起動します
 
MySQL を起動しています。[OK]
 
[root@DBサーバーmysql]#

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

参考文献:

http://database.ctocio.com.cn/tips/449/7566949.shtml

https://www.jb51.net/article/150089.htm

https://www.jb51.net/article/150090.htm

以下もご興味があるかもしれません:
  • MySQL データベースにスクレイピー データを保存する 2 つの方法 (同期と非同期)
  • MySQL に JSON のようなデータを保存する Python の例
  • Ubuntu に MySQL 5.7 をインストールし、データ ストレージ パスを構成する方法
  • MySQLデータストレージプロセスパラメータの詳細な例
  • Centos7でmysql5.7.19のデータ保存場所を移動する方法
  • MySQLのスイッチングデータ保存ディレクトリの実装方法
  • MySQL 5.7 でデータベースのデータ保存場所を変更する方法
  • MySQL データベース アーキテクチャの詳細
  • MySQL 空間データストレージと関数

<<:  docker-compose を使用して MySQL を実行する方法

>>:  vue-cropper コンポーネントは画像の切り取りとアップロードを実現します

推薦する

Vueは買い物数量を変更できるショッピングカートを実装します

この記事では、Vueを使用してショッピングカートの数量を変更する方法を紹介します。具体的な内容は次の...

MySQL の大きなデータ テーブルにフィールドを追加する方法

序文フィールドの追加は誰でもよく知っていると思います。簡単に記述できます。MySQL テーブルにフィ...

MySQL が重複データを挿入するのを防ぐ 3 つの方法

新しいテーブルを作成する テーブル「人」を作成します( `id` int NOT NULL COMM...

Linuxはlsof/extundeleteツールを使用して、誤って削除されたファイルやディレクトリを復元します。

序文Linux には Windows のような目立つごみ箱がないため、簡単に復元することはできません...

Windows 10でDockerコンテナのポートにアクセスできない問題に対する完璧な解決策

Windows 10 で Docker コンテナのポートにアクセスできない問題を解決する (ポート ...

jQuery+h5 で 9 マス抽選特殊効果を実現 (フロントエンドとバックエンドのコード)

序文:フロントエンド: jq+h5 で 9 グリッドのダイナミック効果を実現バックエンド: thin...

Windows と Linux 間のリモート デスクトップ接続

Linux へのリモート デスクトップ接続といえば、まず VNC の使用を思い浮かべるかもしれません...

メタタグを簡単に説明すると

META タグは、一般的に タグと呼ばれ、HTML Web ページのソース コード内の重要な HTM...

Alibaba Cloud Server Ubuntu 上の Workbench が MySQL に接続できない問題の解決策 (テスト済み)

過去 2 日間、ワークベンチが Alibaba Cloud Server に接続できない問題を解決す...

鏡像効果を実現する JavaScript キャンバス

この記事では、JavaScriptキャンバスでミラーイメージ効果を実現するための具体的なコードを参考...

Linux の netstat コマンドの詳細な紹介

目次1. はじめに2. 出力情報の説明3. netstatの共通パラメータ4. netstatネット...

ウェブページレイアウトデザインのシンプルな原則

この記事では、Web ページ レイアウト デザインのいくつかの簡単な原則をまとめ、Web ページ デ...

MySQL ストアドプロシージャの長所と短所の分析

MySQL バージョン 5.0 ではストアド プロシージャのサポートが開始されました。ストアド プロ...

Mysql の大きな SQL ファイルの高速リカバリ ソリューションの共有

序文MySQL データベースを使用する過程では、データベースのバックアップと復元が必要になることがよ...

Vue3 における親コンポーネントと子コンポーネント間の値の転送の詳細な説明

vue3 が誕生してからかなり時間が経ち、筆者も最近になって vue3 を学び始めました。 vue2...