CentOS6.xにyumでMySQL5.6をインストール

CentOS6.xで普通にyumでMySQLをインストールしようとするとMySQL5.1がインストールされる。

# yum list | grep "^mysql-.*server"
mysql-server.x86_64                         5.1.73-5.el6_6               base

やはり新しいものを使いたいので、MySQL5.6をインストールできるようにしてみる。
#最新はMySQL5.7だが(2016/03時点)、ここはあえてMySQL5.6を選択。

まずは、yumリポジトリの追加。

# yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

これで、MySQL5.6がインストールできるようになる。

# yum list | grep "^mysql-.*server"
mysql-community-server.x86_64               5.6.29-2.el6                 mysql56-community
mysql-server.x86_64                         5.1.73-5.el6_6               base

早速インストール。

# yum install mysql-community-server mysql-community-devel
# mysql --version
mysql  Ver 14.14 Distrib 5.6.29, for Linux (x86_64) using  EditLine wrapper

デフォルトキャラクタセットをUTF-8に設定しておきます。
my.cnfに下記を追加。

# vim /etc/my.cnf
[mysql]
default-character-set=utf8

[mysqld]
character-set-server=utf8

MySQLの起動と自動起動の設定

# service mysqld start
# chkconfig mysqld on

一旦、キャラクタセットを確認しておきます。(utf8になっていればOK)

# mysql -uroot
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
mysql>exit

初期設定ツールの実行。(対話式で初期設定を行います)

# mysql_secure_installation
Enter current password for root (enter for none):  ←そのままEnter
Set root password? [Y/n] y                         ←rootユーザのパスワードを設定する
New password:                                      ←パスワードを入力
Re-enter new password:                             ←再度入力
Remove anonymous users? [Y/n] y                    ←匿名ユーザの削除
Disallow root login remotely? [Y/n] y              ←rootユーザの接続元をlocalhostに制限
Remove test database and access to it? [Y/n] y     ←testデータベースの削除
Reload privilege tables now? [Y/n] y               ←以上の設定を直ぐに反映

以上でインストールが完了し、MySQLが使用できるようになったのですが、

# ps aux --sort -rss
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mysql    31823  0.1 44.2 1078952 451228 pts/0  Sl   23:41   0:01 /usr/sbin/mysqld

なぜかデフォルトでMySQLがメモリを450MBも使用しているという状態に。。。
#メモリが1GBしか無いうちのテストサーバーでは40%以上のメモリを食い潰しているという忌々しき事態(笑)

ちょっと探したら解決方法がありました。
下記設定値を追加します。

# vim /etc/my.cnf
[mysqld]
table_definition_cache=400
# service mysqld restart

テーブル定義のみをキャッシュする定義数らしいのですが、デフォルトが1400とかなり大きい値らしい。

# ps aux --sort -rss
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mysql    32202  0.2  9.2 719324 94848 pts/0    Sl   00:06   0:00 /usr/sbin/mysqld

無事に94MBまで減少。とりあえずはこれで大丈夫かな。