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 コンポーネントは画像の切り取りとアップロードを実現します

推薦する

ページの下部にHTMLフッターを配置する簡単な方法

要件:ページ コンテンツが短く、ブラウザーの高さをサポートできない場合でも、フッターをウィンドウの下...

autoconfを使用してMakefileを生成し、プロジェクトをコンパイルする手順

序文Linux では、コンパイルとリンクには Makefile を使用する必要がありますが、適切な ...

WindowsでのNginxの起動や停止などの基本操作コマンドの詳しい説明

Windows で Nginx を使用するには、Nginx サービスの起動、停止、Nginx のリロ...

JavaScript は 9 グリッドのクリックによる色の変更効果を実装します

この記事では、9グリッドクリックの色変更効果を実現するためのJavaScriptの具体的なコードを参...

CentOS6.8 は cmake を使用して MySQL5.7.18 をインストールします。

オンライン情報を参考に、cmakeを使用してCentOS6.8サーバーにMySQL5.7.18をイン...

Web ページでフラッシュの wmode 属性を使用する方法をご存知ですか?

Web 開発を行う際に、フラッシュがページ内の要素をブロックする状況に遭遇することがあります。フラ...

Linux サーバーの状態を監視する方法

私たち、特に Linux エンジニアは毎日 Linux サーバーを扱っています。サーバーのセキュリテ...

MySQLのconcat関連関数の詳細な説明

1. concat() 関数機能: 複数の文字列を 1 つの文字列に連結する構文: concat(s...

JavaScript parseInt() と Number() の違いのケーススタディ

学習目標: parseInt() と Number() という 2 つの関数は、文字列をデータ型に変...

Linuxでホスト名を永続的に変更する方法

ホスト名を変更する場合は、以下の手順に従ってください。ホスト名の使用hostnameコマンドを使用す...

前後の秒、分、時間、日数を取得するMySQLデータベース

現在の時刻を取得します: current_timestamp を選択します。出力: 2016-06-...

Linux Centos7 に mysql8 をインストールするチュートリアル

1. RPMバージョンのインストールデータベースの他のバージョンがあるかどうかを確認し、ある場合は完...

学生情報管理システムを実装するためのJavaScript+HTML

目次1. はじめに2. レンダリング3. コード4. 学生情報管理システムのメインインターフェース1...

Mysql 日付クエリの詳細な紹介

現在の日付を照会する CURRENT_DATE() を選択します。 CURDATE() を選択する;...

HTML スペースコードの簡単な分析

HTML についてどれくらい知っていますか? 現在、基本的な HTML コードを学習している場合は、...