MySQL Proxy · 2 min read · Feb 08, 2026

CentOS 5 (FINAL) x86_64 に MySQL Proxy をインストールする

CentOS 5 (FINAL) x86_64 に MySQL Proxy をインストールする

このチュートリアルでは、CentOS 5 (x86_64) システムに MySQL Proxy をインストールする方法を説明します。MySQL Proxy は、クライアントと MySQL サーバーの間に位置し、その通信を監視、分析、または変換できるシンプルなプログラムです。その柔軟性により、無限の用途が可能です。一般的な用途には、ロードバランシング、フェイルオーバー、クエリ分析、クエリフィルタリングと修正などが含まれます。

新しい最小限の CentOS 5 final x86_64 インストールで:

yum install gcc.x86_64 libevent.x86_64 libevent-devel.x86_64 readline.x86_64 readline-devel.x86_64 ncurses.x86_64 ncurses-devel.x86_64 glib2.x86_64 glib2-devel.x86_64
cd /usr/local/src/
wget http://www.lua.org/ftp/lua-5.1.3.tar.gz  
tar zxvf lua-5.1.3.tar.gz
cd lua-5.1.3  
make linux  
make install
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-6.2/mysql-5.1.23-ndb-6.2.15-linux-x86_64-glibc23.tar.gz/\
from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xzvf mysql-5.1.23-ndb-6.2.15-linux-x86_64-glibc23.tar.gz  
ln -s mysql-5.1.23-ndb-6.2.15-linux-x86_64-glibc23 mysql  
  
PATH=$PATH:/usr/local/mysql/bin  
export PATH

.profile を編集してこれを永続化します:

# .bash_profile
   
# エイリアスと関数を取得
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
 
# ユーザー固有の環境とスタートアッププログラム
 
PATH=$PATH:/usr/local/mysql/bin:$HOME/bin
 
export PATH
unset USERNAME
wget http://dev.mysql.com/get/Downloads/MySQL-Proxy/mysql-proxy-0.6.1.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar zxvf mysql-proxy-0.6.1.tar.gz  
cd mysql-proxy-0.6.1
./configure  LDFLAGS="-lm -ldl" LUA_CFLAGS="-I/usr/local/include/" LUA_LIBS=/usr/local/lib/liblua.a
make  
make install

サンプルの LUA スクリプトを作成して、いくつかのログを確認できるようにします。

mkdir /var/log/mysql-proxy/  
mkdir -p /usr/local/mysql/lua-scripts/
vi /usr/local/mysql/lua-scripts/simple-log.lua

(参照: http://www.oreillynet.com/pub/a/databases/2007/07/12/getting-started-with-mysql-proxy.html?page=3

スクリプトは IP を取得し、proxy.connection.server.thread_id を使用するように修正されました。)

local log_file = '/var/log/mysql-proxy/mysql.log'
local fh = io.open(log_file, "a+")
 
function read_query( packet )
 if string.byte(packet) == proxy.COM_QUERY then
   local query = string.sub(packet, 2)
   fh:write( string.format("%s %6d -- %s :IP %s :USER: %s\n",
   os.date('%Y-%m-%d %H:%M:%S'),
   proxy.connection.server.thread_id,
   query,
   proxy.connection.client.address,
   proxy.connection.client.username))
  fh:flush()
 end
end

次に、変数 –proxy-backend-addresses を使用して、プロキシをサーバーにポイントしてプロキシを起動します。

/usr/local/sbin/mysql-proxy --proxy-lua-script=/usr/local/mysql/lua-scripts/simple-log.lua --proxy-backend-addresses=192.168.1.33:3306 --proxy-backend-addresses=192.168.1.34:3306 --daemon

192.168.1.33 と 192.168.1.34 は、プロキシが接続する MySQL ノードです。

ファイアウォールを通じてプロキシへの接続を許可します:

### MYSQL PROXY への接続を許可
###
### ローカル管理者
-A INPUT -s SRC-IP -d DST-IP -p tcp -m state --state NEW -m tcp --dport 4040 -j ACCEPT

DST-IP はプロキシサーバーで、SRC-IP はローカルボックス (クライアントマシン) です。

次に、ローカルボックス (mysql-proxy サーバーではない) からプロキシを介してバックエンドデータベースに接続してみてください (関連する権限を持つユーザーが db に存在する必要があります)。

mysql -u dba_admin -p -h PROXY-SERVER -P 4040
MySQL モニターへようこそ。 コマンドは ; または \g で終了します。  
あなたの MySQL 接続 ID は 16 で、サーバーバージョンは: 5.1.23-ndb-6.2.15 です。  
  
'help;' または '\h' を入力してヘルプを表示します。 '\c' を入力してバッファをクリアします。
mysql> show databases;
+--------------------+  
| データベース        |  
+--------------------+  
| information_schema |  
| Imap_Forms         |  
| mysql              |  
| test               |  
+--------------------+  
4 行がセットされました (0.01 秒)
mysql> quit
さようなら

注: プロキシはポート 4040 を使用し、3306 ではありません。

mysql-proxy サーバーから mysql-proxy 管理インターフェースをテストします:

mysql -u root -p -h 127.0.0.1 -P 4041
MySQL モニターへようこそ。 コマンドは ; または \g で終了します。  
あなたの MySQL 接続 ID は 1 です。  
サーバーバージョン: 5.1.20-agent MySQL Enterprise Agent  
  
'help;' または '\h' を入力してヘルプを表示します。 '\c' を入力してバッファをクリアします。
mysql> select * from proxy_connections;
+------+--------+-------+------+  
| id   | type   | state | db   |  
+------+--------+-------+------+  
|    0 | server | 0     |      |  
|    1 | proxy  | 0     |      |  
|    2 | server | 10    |      |  
+------+--------+-------+------+  
3 行がセットされました (0.00 秒)
mysql>quit
さようなら

作業完了! さらに読み進めてください:

http://dev.mysql.com/tech-resources/articles/proxy-gettingstarted.html
http://forge.mysql.com/wiki/MySQL_Proxy
http://www.oreillynet.com/pub/a/databases/2007/07/12/getting-started-with-mysql-proxy.html?page=1

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。