データディレクトリの位置を変えたい

  • redhat系のパッケージなどでmysqlをインストールすると、多くは /var/lib/mysql がホームディレクトリになって、DBの実体データもその配下に保存されます。
  • でも、そうじゃないんだ、別のディレクトリ(というかボリューム)に配置したいんだ、ということありますよね。
  • そんなときの手順です。

手順シナリオ

  • ホームディレクトリを /var/lib/mysqlから別のディレクトリに変更する
  • 注意:パッケージ導入後、未起動の状態でしか試していません。

mysqlユーザーのホームディレクトリを変更

# usermod --home /home/mysql --move-home mysql

my.cnf を書き換える

  • 元ファイルが必要なら各自バックアップしてください。
# cat << 'EOF' > /etc/my.cnf
[mysqld]
datadir=/home/mysql
socket=/home/mysql/mysql.sock
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
socket=/home/mysql/mysql.sock
EOF

サービススタート

# /etc/init.d/mysqld start

おまけ

  • 今回のターゲットはRailsアプリでした。そのままだと接続できないので、下記のように、 socketを追記しました。

config/database.yml

production:
  adapter: mysql2
  database: oreno_db
  host: oreno_host
  username: ore
  password: oreno_pass
  encoding: utf8
  socket: /home/mysql/mysql.sock

facebook slideshare rubygems github qiita