Icon kobu medium
Kota Miyake

Ubuntu 14.04.3 LTSにMySQL5.7をインストール

元々のAPTパッケージにはMySQL5.7はないので、MySQLのサイトからAPTパッケージレポジトリをダウンロードします。

$ wget https://dev.mysql.com/get/mysql-apt-config_0.8.1-1_all.deb

次にパッケージの設定を行います。

$ sudo dpkg -i mysql-apt-config_0.8.1-1_all.deb

MySQL Serverをを選択して、続いてmysql-5.7を選択します。

パッケージのインデックスを更新します。

$ sudo apt-get update

最後にmysql-serverをインストールします。

$ sudo apt-get install mysql-server

エラーが発生してしまいました。。。

処理中にエラーが発生しました:
/var/cache/apt/archives/libmysqlclient-dev_5.7.17-1ubuntu14.04_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
$ sudo apt-get install mysql-server
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
mysql-server は既に最新バージョンです。
以下の問題を解決するために 'apt-get -f install' を実行する必要があるかもしれません:
以下のパッケージには満たせない依存関係があります:
mysql-community-client : 破壊: libmysqlclient-dev (< 5.7.14)
E: 未解決の依存関係です。'apt-get -f install' を実行してみてください (または解法を明示してください)。

どうやら元々インストールされていたMySQLのパッケージと衝突してしまったようです。

一通りパッケージを削除してから、再度インストールしたら正常にインストールされました。

$ sudo apt-get remove mysql-community-client mysql-client mysql-community-server mysql-server libmysqld-dev

無事MySQL5.7がインストールされました。

$ sudo mysql --version
mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper
$ mysqladmin -p -uroot version
Enter password:
mysqladmin Ver 8.42 Distrib 5.7.17, for Linux on x86_64
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 5.7.17
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 26 min 6 sec
Threads: 3 Questions: 106 Slow queries: 0 Opens: 59 Flush tables: 1 Open tables: 49 Queries per second avg: 0.067

参考URL

https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-14-04

Icon kobu medium
Kota Miyake

my.cnfの内容を理解する

開発ではいつもMySQLを使用しているのですが、my.cnfの設定内容を何気に他の人の記事を参考にしているだけで、ちゃんと理解していなかったので調べてみました。

innodb_file_per_table

こちらの設定を有効にするとシステム共通のテーブルスペースではなく、個別のテーブルスペースを生成するようになります。

https://dev.mysql.com/doc/refman/5.6/ja/innodb-parameters.html#sysvar_innodb_file_per_table

innodb_file_format, innodb_file_format_max

InnoDBテーブルで使用されるファイル形式です。AntelopeとBarracudaの2種類が設定可能です。それぞれの違いについては以下の記事が参考になりました。

InnoDBの制限とファイルフォーマットAntelopeとBarracudaの違い

https://dev.mysql.com/doc/refman/5.6/ja/innodb-parameters.html#sysvar_innodb_file_format

https://dev.mysql.com/doc/refman/5.6/ja/innodb-parameters.html#sysvar_innodb_file_format_max

最近Railsのコミットログを追っているのですが、そこで見たことのIDと同じだと思ったら、同じ人でした。

https://github.com/kamipo

innodb_large_prefix

上記の記事でも書かれていましたが、テーブルの形式をBarracudaにすることで使用できる機能です。こちらの設定を有効にすることで主に以下の2つのメリットがあります。

・行のサイズを小さく保てる

・1行により大きいサイズのデータが保存できる

https://dev.mysql.com/doc/refman/5.6/ja/innodb-parameters.html#sysvar_innodb_large_prefix

引き続き、他にもMySQLのチューニングなどを勉強していこうかと思います。