docker machineでMySQLを永続化する


## 環境
* docker-machine version 0.4.1
* Virtual Box 5.0.4
* Mac El Cpatian

## やりたいこと
開発用にdocker上にMySQLを立てたい
1) docker machine上にデータを永続化させたMySQLを立てる。永続化させるデータはdocker-machineの/home/docker以下に置くものとする
2) タイムゾーンをJSTにする
3) ローカルにあるmy.cnfを読み込ませる

## 手順

### 再起動時にバックアップをとる
1. ローカルから `docker-machine ssh`でログインする
2. /home/docker以下のバックアップ

```Bash
cat << EOS > /var/lib/boot2docker/bootlocal.sh
echo "tar cf /var/lib/boot2docker/userdata.tar . -C /home/docker/" >> /opt/shutdown.sh
EOS
chmod +x /var/lib/boot2docker/bootlocal.sh
```

### タイムゾーンをJSTにする
1. `/var/lib/boot2docker/profile` に `export TZ="JST-9"`を追加する
2. `reboot`コマンドで再起動

### my.cnfを用意する
`/Users/hachi/tmp/mysql/my.cnf` に用意

```my.cnf
[mysqld]
character-set-server=utf8
```

### 起動する

```Bash
docker run --name mysql -p 3306:3306 -e "MYSQL_ROOT_PASSWORD=root" -v /Users/hachi/tmp/mysql:/etc/mysql/conf.d -v /home/docker/mysql:/var/lib/mysql -d mysql:5.6
```

```sql
mysql -uroot -p -h 127.0.0.1
create database test charset utf8;
show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
```

docker-machine内をみると

```
docker@default:~/mysql$ pwd
/home/docker/mysql
docker@default:~/mysql$ ls
auto.cnf            ib_logfile0         ib_logfile1         ibdata1             mysql/              performance_schema/ test/
```

## 追記
実際の開発でデータを入れたらあっという間に/home/docker以下の容量を食いつぶした orz そんなデータいれるなという話ですが。
そのときは`docker-machine create  --virtualbox-memory "2024" -d virtualbox default`で作る

変更前

```
docker@default:~$ df -h
Filesystem                Size      Used Available Use% Mounted on
tmpfs                   896.6M    230.8M    665.9M  26% /
tmpfs                   498.1M     56.0K    498.1M   0% /dev/shm
/dev/sda1                18.2G      1.0G     16.2G   6% /mnt/sda1
cgroup                  498.1M         0    498.1M   0% /sys/fs/cgroup
none                    464.8G    108.9G    355.9G  23% /Users
/dev/sda1                18.2G      1.0G     16.2G   6% /mnt/sda1/var/lib/docker/aufs
none                     18.2G      1.0G     16.2G   6% /mnt/sda1/var/lib/docker/aufs/mnt/2c829511dc3126d6d85561715b775066b47106bc43ae607b15bd4b85d5117287
```

変更後

```
docker@default:~$ df -h
Filesystem                Size      Used Available Use% Mounted on
tmpfs                     1.8G    230.7M      1.5G  13% /
tmpfs                  1001.4M         0   1001.4M   0% /dev/shm
/dev/sda1                18.2G      1.0G     16.2G   6% /mnt/sda1
cgroup                 1001.4M         0   1001.4M   0% /sys/fs/cgroup
none                    464.8G    108.8G    355.9G  23% /Users
/dev/sda1                18.2G      1.0G     16.2G   6% /mnt/sda1/var/lib/docker/aufs
```