要件
aptitude search mysql
aptitude show mysql-server-5.0
aptitude install mysql-server-5.0
- でも MySQL 5.5 系を導入しなければならない案件がある為、MySQL で配布されている 5.5 系のパッケージを導入する
- ついでに HandlerSocket というプラグインを導入する
手順
MySQL 5.5 のインストール
必要(らしい)なパッケージの導入
apt-get install libaio1
MySQL 5.5 パッケージの取得
cd /tmp
wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.30-debian6.0-x86_64.deb/from/http://cdn.mysql.com/ -O mysql-5.5.30-debian6.0-x86_64.deb
dpkg を使ってインストール
cd /tmp
dpkg -i mysql-5.5.30-debian6.0-x86_64.deb
エラー各種
- インストール先が /opt/mysql となってしまうので PATH を通す
echo "export PATH=$PATH:/opt/mysql/server-5.5/bin/" >> /root/.bashrc
source /root/.bashrc
mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bk
sudo mkdir /opt/mysql/server-5.5/data
cd /opt/mysql/server-5.5/
chown -R mysql:mysql data
初期データベースのインストール
/opt/mysql/server-5.5/scripts/mysql_install_db --user=mysql
/opt/mysql/server-5.5/bin/mysqld_safe &
# mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.30 MySQL Community Server (GPL)
Copyright (c) 2000, 2013, 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.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
HandlerSocket の導入
インストール準備
sudo aptitude install libtool
sudo aptitude install autoconf
sudo aptitude install dpatch
cd /tmp
wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.30.tar.gz/from/http://cdn.mysql.com/ -O mysql-5.5.30.tar.gz
tar zxvf mysql-5.5.30.tar.gz
cp mysql-5.5.30 /usr/local/src/
- git から HandlerSocket のソースコードを取得して、インストールする
cd /tmp/
git clone https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL.git
cd HandlerSocket-Plugin-for-MySQL/
./autogen.sh
./configure --with-mysql-bindir=/opt/mysql/server-5.5/bin --with-mysql-plugindir=/opt/mysql/server-5.5/lib/plugin --with-mysql-source=/usr/local/src/mysql-5.5.30
make
make install
設定
- /etc/mysql/my.cnf に以下の設定を行う
[mysqld]
handlersocket_port = 9998 # handlersocket が接続を受け付けるポート(参照系リクエスト用)
handlersocket_port_wr = 9999 # handlersocket が接続を受け付けるポート(更新系リクエスト用)
handlersocket_address = # handlersocket がバインドするアドレス(空のままでOK)
handlersocket_verbose = 0 # デバッグ用
handlersocket_timeout = 300 # 通信タイムアウト(秒)
handlersocket_threads = 16 # handlersocket のワーカースレッド数
thread_concurrency = 128 # handlersocket が幾つかのスレッドを占有するため、大きめの値を指定する
open_files_limit = 65535 # ソケットを大量に開けるようにするため、大きめの値を指定する必要がある
/opt/mysql/server-5.5/support-files/mysql.server stop
/opt/mysql/server-5.5/support-files/mysql.server start
install plugin handlersocket soname 'handlersocket.so';
確認
- show variables like 'handlersocket%';
まとめ
- OS 標準ではインストールされないのでパッケージを取得してインストールすること
- 真っさらな状態であれば PATH を通すことを忘れなければ設定は難しくない
- data ディレクトリの設定は忘れないようにする(同時に権限の設定も忘れないこと)
HandlerSocket の導入
- たまたまかもしれないがインストール自体はそれほど難しくなかった
- configure にてプラグインディレクトリとソースコードのディレクトリ指定は忘れないこと
- MySQL 内でも install コマンドを使ってインストール作業を行う必要がある
メモ
- MySQL のプラグイン導入は初めてだった...
- HandlerSocket のパフォーマンスについては近日中に検証を行いたい
- chef-solo 使ってインストールする場合には、レシピは下記のように書く(但し、下記の場合には 5.1 系がインストールされる)
%w{mysql-server}.each do |package_name|
package package_name do
action :install
end
end