vagrant上のmysqlを5.6にUpdateしたメモ

以下の本を買ってみたけど、MySQLのバージョンが古すぎたので、Updateしたけど、いろいろ詰まったのでメモ

データベース徹底攻略 (WEB+DB PRESS plus)

データベース徹底攻略 (WEB+DB PRESS plus)

あんま人が読んでもわからないと思う。自分用メモの意味合いが強い

前提

  • vagrant上のやつをアップデート
  • mysqlのバージョンは5.1だったのを5.6.15までアップ
  • もともと入ってるデータがないに等しいので、何もバックアップしてない
  • レプリケーションは設定してない
  • slowlogの設定はした

作業メモ

$ sudo service mysql stop
$ sudo apt-get -y remove mysql-server mysql-client mysql-common
$ sudo apt-get -y autoremove
$ sudo apt-get -y autoclean
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15-debian6.0-x86_64.deb
# ↑これが数十分かかった

$ sudo dpkg -i mysql-5.6.15-debian6.0-*.deb
$ sudo sh -c 'echo "PATH=$PATH:/opt/mysql/server-5.6/bin" >> /etc/profile'
$ source /etc/profile
$ sudo vi /etc/mysql/my.cnf

basedir = /opt/mysql/server-5.6

$ sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysql
$ sudo update-rc.d mysql defaults
$ sudo ln -s /opt/mysql/server-5.6/bin/mysqld /usr/sbin/mysqld
$ mysql_upgrade 
$ sudo service mysql start

vagrant@~$ mysql -uroot -e 'status' | grep -i 'server version'
Server version:         5.6.15 MySQL Community Server (GPL)

途中でエラーった

$ sudo vi /etc/mysql/my.cnf

[mysqld]
log-error=/var/log/mysql/error.log

$ sudo chmod o+rw /var/log/mysql
$ touch /var/log/mysql/error.log
$ sudo chmod o+r /var/log/mysql.error.log
$ tail -f /var/log/mysql.error.log

基本は、/var/lib/mysql以下がおかしくなってたので、ib_logfile0やら、ibdata1を消したらOKだった。

slowlogの確認

$ sudo vi /etc/mysql/my.cnf

+ slow_query_log=ON
+ log_output=TABLE
- long_query_time = 2
+ long_query_time = 0
※0秒にすると全ログ出るので、注意

[root][localhost][(none)]> show variables like 'slow%';
+---------------------+---------------------+
| Variable_name       | Value               |
+---------------------+---------------------+
| slow_launch_time    | 2                   |
| slow_query_log      | ON                  |
| slow_query_log_file | /tmp/mysql-slow.log |
+---------------------+---------------------+
3 rows in set (0.00 sec)

[root][localhost][(none)]> show variables like 'long%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 0.000000 |
+-----------------+----------+
1 row in set (0.00 sec)

[root][localhost][(none)]> show create table mysql.slow_log;
~~~ 長いので省略 ~~~


# 適当にcreate database&table
[root][localhost][mysql]> create database test;
[root][localhost][mysql]> use test
[root][localhost][test]> CREATE TABLE example (
         id INT,
         data INT,
       ) ENGINE=InnoDB;
[root][localhost][test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| example        |
+----------------+
1 row in set (0.01 sec)

[root][localhost][test]> select * from example;
Empty set (0.00 sec)

[root][localhost][test]> select start_time,query_time,sql_text from mysql.slow_log order by start_time desc limit 1;
+---------------------+------------+---------------------------------------------------------------+
| start_time          | query_time | sql_text                                                      |
+---------------------+------------+---------------------------------------------------------------+
| 2014-03-16 15:45:57 | 00:00:00   | select * from mysql.slow_log order by start_time desc limit 1 |
+---------------------+------------+---------------------------------------------------------------+
1 row in set (0.00 sec)

まとめ

まだまだチューニングとか全然してないので、あとでアップデートするとは思うが、とりあえず、今のmy.cnfを貼っとく

my.cnf

prompt="[\\u][\\h][\\d]> "
auto-rehash

↑のプロンプトの設定いじりと、auto-rehashによる補完は便利なので入れたおきたいところ

参考サイト