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

推薦する

Dockerでボリュームを管理する2つの方法

前回の記事では、Dockerの基礎知識であるローカルディレクトリのマウント方法を紹介しました。今日は...

Linuxホスト名変更コマンドの詳しい説明

Linux ホスト名変更コマンド1. ホスト名を一時的に変更するだけの場合は、hostname コマ...

Dockerにelasticsearchとkibanaをインストールする方法

Elasticsearchは現在非常に人気があり、多くの企業が利用しているため、esを知らないと軽蔑...

MySQL 8.0.11 圧縮バージョンを Windows 10 にインストールするための詳細なチュートリアル

最近コンピュータを再インストールした後、最新バージョンのみをインストールするという強迫観念に基づいて...

MySQLインデックスを追加する3つの原則を簡単に理解する

1. インデックスの重要性インデックスは、列に特定の値を持つ行をすばやく見つけるために使用されます。...

NodeサイトのForever+nginx導入方法例

私は最近、最も安い Tencent クラウド サーバーを購入しました。これは主に、Web テクノロジ...

CSS3は背景画像にマスクを設定し、マスクスタイルの継承の問題を解決します。

多くの場合、透明度の設定やぼかしなど、写真の背景を加工する必要があります。 ただし、背景画像が配置さ...

1つの記事でTypeScriptのデータ型について学ぶ

目次基本タイプあらゆるタイプ配列タプルインタフェース関数自己推論を入力する結合タイプ(1つ以上選択)...

MySQL でのフィルター条件なしのカウントの詳細な説明

カウント(*)成し遂げる1. MyISAM: テーブル内の行の総数をディスク上に保存し、フィルタリン...

MySQL ALTERコマンドの知識ポイントのまとめ

テーブル名を変更したり、テーブル フィールドを変更したりする必要がある場合は、 MySQL ALTE...

Ubuntu 19にTheanoをインストールする際の問題を解決する

解決: pythearn2 パッケージをダウンロードしたディレクトリで、setup.py ファイルを...

CocosCreator でカメラトラッキングに cc.follow を使用する方法

Cocos Creator バージョン: 2.3.4デモのダウンロード: https://files...

CSSでスペースを処理する方法

1. 宇宙のルールHTML コード内の空白は通常、ブラウザによって無視されます。 <p>...

このような大画面のデジタルスクロール効果が必要になる場合があります

大画面のデジタル スクロール効果は、最近の作業における大画面 UI ダイアグラムから生まれました。U...