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

推薦する

Mysql SSHトンネル接続を使用するための基本的な手順

序文セキュリティ上の理由から、MySQL の root ユーザーはローカルにのみログインでき、外部ネ...

Navicat を使用して MySQL データベースをエクスポートおよびインポートする方法

MySql は、私たちが頻繁に使用するデータ ソースです。開発者が練習、小規模なプライベート ゲーム...

HTML ベース URL タグ

その機能はグローバル スタイルを設定することです。その後の相対パスはこれに基づきます: <im...

バッチモードでtopコマンドを実行する方法

top コマンドは、Linux システムのパフォーマンスを監視するために誰もが使用している最適なコマ...

初心者がHTMLタグを学ぶ(1)

初心者は、いくつかの HTML タグを理解することで HTML を学習できます。この入門書は、初心者...

CSSアニメーションがJSによってブロックされるかどうかについての簡単な議論

CSS のアニメーション部分は JS によってブロックされますが、transform のアニメーショ...

gbk utf8 GBK と UTF-8 ウェブページエンコーディングを正しく理解して使用する方法

Web ページ エンコーディングは英語では web page encoding と翻訳され、Web ...

HTMLページのネイティブVIDEOタグはダウンロードボタン機能を隠します

Web プロジェクトを作成しているときに、紹介ビデオが別にある紹介ページに遭遇しました。この短いビデ...

uniappは録音アップロード機能を実現

目次uni-app の紹介HTML部分js部分インスタンスを作成する録音を開始録音終了録音を再生再生...

MySQL 8.0.21 の最新バージョンのダウンロード、インストール、設定に関する詳細なチュートリアル

1. ダウンロード1. インストールパッケージをダウンロードするMySQL ダウンロード パス: h...

nginxのインストールと設定の詳細なプロセス記録

目次1 nginxの紹介1 nginxとは何か2 つのアプリケーション シナリオ2 nginxのイン...

vue-element-admin グローバル読み込み待機中

最近の要件:グローバルロード、すべてのインターフェースはロード待機機能を表示するかどうかを手動で制御...

Linux で Multitail コマンドを使用するチュートリアル

MultiTail は、tail コマンド機能と同様に、複数のドキュメントを同時に監視するために使用...

Ubuntu 20.04 CUDA & cuDNN のインストール方法 (グラフィカル チュートリアル)

CUDA インストール cuda をダウンロードサポートされているcudaバージョンを表示するには...

Apache Spark 2.0ジョブは完了するまでに長い時間がかかります

現象Apache Spark 2.x を使用すると、Spark ジョブがすべて完了しているにもかかわ...