以前、MySQLデータベースの配置先をまるごと別の領域に移転する方法を紹介しました[ 1, 2, 3 ]。
これをさらに、その中のデータベースごとに、保存先を変えることができたなら。
別々のHDDやSSDを用意して、特定のデータベースだけ移動することで、
負荷分散や、容量不足への対応が可能になります。
たまたま「MySQL symbolic link」で検索したところ、どうもできるらしい!(←これ、ちょっとわかりづらい)ことに気がつきました。
今回、実際やってみたので、レポートします。
まずは当方のデータベースの現状が、以下の通りです。
[code.zobe.jp]# ls -al /var/zobe/mysql (注意: 普通は /var/lib/mysql です) drwxr-xr-x 11 mysql mysql 4096 9月 6 20:51 . drwxr-xr-x 3 root root 4096 9月 5 16:56 .. drwx------ 2 mysql mysql 4096 9月 6 15:17 blog_mt_pcparts drwx------ 2 mysql mysql 4096 6月 19 17:43 blog_wp_code -rw-rw---- 1 mysql mysql 20971520 9月 25 01:15 ib_logfile0 -rw-rw---- 1 mysql mysql 20971520 9月 18 12:43 ib_logfile1 -rw-rw---- 1 mysql mysql 94371840 9月 25 01:15 ibdata1
blogが2つと、InnoDBのログファイルがあるのがわかります。
blog_mt_pcparts は MovableType を使用したブログサイトです。
blog_wp_code が WordPress を使用した、当サイトです。
今回は当ブログのデータベース、blog_wp_code を移転してみます。
失敗したらこの記事は閲覧することができません…みえていますか?
今回は移転先を「/var/zobe/mysql2」としています。
実際にはお手持ちの環境に合わせて適宜変更してください。
ディレクトリを作成して、アクセス権限を root から mysql に変更します。
[code.zobe.jp]# mkdir /var/zobe/mysql2 [code.zobe.jp]# chown mysql:mysql /var/zobe/mysql2
データベース移転作業を行います。まずは関連サービスを停止します。
[code.zobe.jp]# service httpd stop httpd を停止中: [ OK ] [code.zobe.jp]# service mysqld stop MySQL を停止中: [ OK ]
データベースを移転します。
データベースが大きい場合や、ディスクの速度が遅い場合は、
結構待たされちゃうかもしれません。
[code.zobe.jp]# mv /var/zobe/mysql/blog_wp_code /var/zobe/mysql2/
移動が完了したら、移動後のディレクトリの内容を見てみましょう。
mysql ディレクトリから mysql2 に blog_wp_code だけ移動したことがわかります。
[code.zobe.jp]# ls -al /var/zobe/mysql drwxr-xr-x 11 mysql mysql 4096 9月 6 20:51 . drwxr-xr-x 3 root root 4096 9月 5 16:56 .. drwx------ 2 mysql mysql 4096 9月 6 15:17 blog_mt_pcparts -rw-rw---- 1 mysql mysql 20971520 9月 25 01:15 ib_logfile0 -rw-rw---- 1 mysql mysql 20971520 9月 18 12:43 ib_logfile1 -rw-rw---- 1 mysql mysql 94371840 9月 25 01:15 ibdata1 [code.zobe.jp]# ls -al /var/zobe/mysql2 合計 24 drwxr-xr-x 3 mysql mysql 4096 9月 25 01:26 . drwxr-xr-x 4 root root 4096 9月 25 01:23 .. drwx------ 2 mysql mysql 4096 6月 19 17:43 blog_wp_code
移転元から参照できるよう、移転先へのシンボリックリンクを作成します。
[code.zobe.jp]# ln -s /var/zobe/mysql2/blog_wp_code /var/zobe/mysql/blog_wp_code
正しく移転作業が行えたかどうか、再度確認してみます。
ここまでの作業によって、データベースの実体は移転し、MySQLのデータベースディレクトリから、
移転したデータベースへのシンボリックリンクが張られました。
[code.zobe.jp]# ls -al /var/zobe/mysql/ drwxr-xr-x 10 mysql mysql 4096 9月 25 01:32 . drwxr-xr-x 4 root root 4096 9月 25 01:23 .. drwx------ 2 mysql mysql 4096 9月 6 15:17 blog_mt_pcparts lrwxrwxrwx 1 root root 29 9月 25 01:32 blog_wp_code -> /var/zobe/mysql2/blog_wp_code -rw-rw---- 1 mysql mysql 20971520 9月 25 01:24 ib_logfile0 -rw-rw---- 1 mysql mysql 20971520 9月 18 12:43 ib_logfile1 -rw-rw---- 1 mysql mysql 94371840 9月 25 01:24 ibdata1
あとはサービスを起動して、動作を確認してみましょう。
(このサイトが閲覧できているということは、成功ということです。)
[code.zobe.jp]# service mysqld start MySQL を起動中: [ OK ] [code.zobe.jp]# service httpd start httpd を起動中: [ OK ]
どうだったでしょうか?
これと、CentOSに新しくHDDやSSDを追加する方法を組み合わせる[ 1, 2 ]ことで、
データベースに負担のかかるシステムを、低コストに高速化したり、
容量追加したりすることができるようになります。
最近のコメント