EC2上のMySQLのデータの格納場所を移動する

cloudpackエバンジェリストの吉田真吾@yoshidashingo)です。

EC2上に構築したMySQLのデータファイルを格納するディスクが不足したので移動。

  • EC2はAmazon Linux 2014.03
  • MySQLは5.5.36

バージョン確認

$ cat /etc/system-release
Amazon Linux AMI release 2014.03
$ mysql -u username -p
Enter password:
(中略)
mysql> SELECT version();
 +-----------+
 | version() |
 +-----------+
 | 5.5.36    |
 +-----------+
1 row in set (0.00 sec)

ディスクの追加

追加のEBSを容易してアタッチ&マウント。

  • 追加のEBSを作って/dev/sdbにディスクをアタッチ
  • マウント

以下のリンクが役に立ちます。
http://blog.katamari.co.jp/archives/396

データの移動

  • MySQL 停止
$ sudo service mysqld stop
Stopping mysqld:                                           [  OK  ]
  • my.cnf の編集
$ ls -l /etc/my.cnf
 -rw-r--r-- 1 root root 480  3月 20 23:09 /etc/my.cnf
$ sudo cp -p /etc/my.cnf /etc/my.cnf.bk
$ ls -l my*
 -rw-r--r-- 1 root root 480  3月 20 23:09 my.cnf
 -rw-r--r-- 1 root root 480  3月 20 23:09 my.cnf.bk
$ sudo vi /etc/my.cnf
(移動先のパスを編集)
  • /etc/init.d/mysqld の編集
$ sudo vi /etc/init.d/mysqld
get_mysql_option mysqld datadir "/var/lib/mysql" → "<移動先のパス>"
  • データの移動
$ sudo cp -pR /var/lib/mysql/* <移動先のパス>
  • MySQL 開始
$ sudo service mysqld start
Starting mysqld:                                           [  OK  ]


あとは元のデータファイルを消せばOK。
うちの運用手順だともう少し作り込まれているのですが、今回は手元の環境ということでこんな感じで。