どんな事でもお気軽にお問い合わせください
0120-803-656
24時間受付致します

mysqlのデータを別ディレクトリに保存する


インフラエンジニアの伊藤です。

MySQLのデータの格納場所は、設計段階で決めておくべきことではあると思いますが、
それでもデータが増えて別のディレクトリに移動させてなくてはならない…といったことがありますよね。

そんなときに必要な手順を紹介したいと思います!

なにはともあれ、まずはMySQLのプロセスを止めます。

# /etc/init.d/mysql stop

次にコンフィグファイルを設定します。

  • データの保存先
  • ソケットファイルの場所
  • クライアント側のソケットファイルの場所

この3つが設定に必要な部分です。

# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql(保存先をどこにするか)
socket=/var/lib/mysql/mysql.sock(ソケットファイルをどこにするか)

[client]
socket=/var/lib/mysql/mysql.sock

元にあったデータを動かします。

# cp -pR /var/lib/mysql/ /path/to/datadir

では、MySQLのプロセスを動かして、ログインしてみましょう。

# /etc/init.d/mysql start

# mysql -uroot -phogehoge
login to mysql prompt
Warning: Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
/etc/init.d/mysqld

get_mysql_option mysqld datadir "/var/lib/mysql"

あかんやないかい!!!

ダメな正体は起動スクリプトです。
起動スクリプト内の、MySQLのデータディレクトリの指定を変更する必要があります。

# vi /etc/init.d/mysqld

get_mysql_option mysqld datadir "/var/lib/mysql"
↓
get_mysql_option mysqld datadir "/path/to/datadir"

再度起動して、問題ないことを確認します。
あとはデータ保存先が変更されているか確認します。

mysql> show variables like 'datadir';
+---------------+-------------------+
| Variable_name | Value             |
+---------------+-------------------+
| datadir       | /path/to/datadir/ |
+---------------+-------------------+
1 row in set (0.01 sec)

無事データ保存先が変更されているようですね!
めでたしめでたし。


お問い合わせ 採用情報 エンジニアブログ
ISO27001認証
Contact PageTop
株式会社ビヨンド

© beyond Co., Ltd. All rights reserved.

mautic is open source marketing automation