Установка Mysql-Proxy на RedHat 6.4

Вот такой он Linux. При работе с CentOS я не столкнулся с проблемами при установке Mysql-Proxy. В случае с RedHad 6.4 этот подход не сработал. Поэтому вторая версия того, как можно установить mysql-proxy.

Для начала скачиваем нужну версию:

wget http://dev.mysql.com/get/Downloads/MySQL-Proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

Распаковываем её:

tar xf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

Перемещаем в папку opt^

mv mysql-proxy-0.8.5-linux-el6-x86-64bit /opt/mysql-proxy

Ничего компилировать не нужно.

Создаем init.d скрипт:

nano /etc/init.d/mysql-proxy
/etc/init.d/mysql-proxy
#!/bin/sh
#
# mysqlproxy init file for MySQL-Proxy
# /etc/init.d/mysqlproxy: This script starts and stops the mysql-proxy daemon
#
# chkconfig: - 50 50
# description: The MySQL Proxy daemon init script
#
# processname: mysql-proxy
# config: /opt/mysql-proxy/mysql-proxy.conf


# Source function library.
. /etc/rc.d/init.d/functions

PROXY_PATH=/opt/mysql-proxy
LUA_PATH=$PROXY_PATH/share/mysql-proxy/?.lua
prog="mysql-proxy"

# Source networking configuration
. /etc/sysconfig/network

# Check that networking is up
[ ${NETWORKING} = "no" ] && exit 0

# Set default mysql-proxy configuration.
declare -x PROXY_OPTIONS=""

# Parse mysql-proxy configuration file
if [ -f /opt/mysql-proxy/mysql-proxy.conf ] ; then
    exec 3<&0
    exec < /opt/mysql-proxy/mysql-proxy.conf
    while read opt
    do
        # remove comments, tabs, and spaces
        opt=`echo $opt | sed "s/\#.*//;s/\t//g;s/ //g"`
        if [ -n "$opt" ]
        then
            PROXY_OPTIONS=$PROXY_OPTIONS" --$opt"
        fi
    done
fi

# Set a successful return value by default
RETVAL=0

# See how we were called.
case "$1" in
  start)
        # Start daemon.
        echo -n $"Starting $prog: "
        daemon $NICELEVEL $PROXY_PATH/bin/mysql-proxy $PROXY_OPTIONS
        RETVAL=$?
        echo
        if [ $RETVAL = 0 ]; then
                touch /var/lock/subsys/mysql-proxy
        fi
        ;;
  stop)
        # Stop daemons.
        echo -n $"Stopping $prog: "
        killproc $prog
        RETVAL=$?
        echo
        if [ $RETVAL = 0 ]; then
                rm -f /var/lock/subsys/mysql-proxy
                rm -f $PROXY_PID
        fi
        ;;

  restart)
        $0 stop $2
        sleep 3
        $0 start $2
        ;;

  status)
        status mysql-proxy
        RETVAL=$?
        ;;

  condrestart)
		[ -e /var/lock/subsys/mysql-proxy ] && restart || :
	;;
  \*)
        echo "Usage: $0 {start|stop|restart|condrestart|status }"
        RETVAL=1
        ;;
esac

exit $RETVAL

Делаем его исполняемым:

chmod +x /etc/init.d/mysql-proxy

Создаем конфигурационный файл:

/opt/mysql-proxy/mysql-proxy.conf
#########################
# admin module
#########################
plugins=proxy
plugins=admin

# listening address:port of internal admin-server (default: :4041)
admin-address               = :4041
admin-username = admin
admin-password = password

admin-lua-script = /opt/mysql-proxy/share/mysql-proxy/admin-sql.lua

#########################
# proxy-module
#########################

# listening address:port of the proxy-server (default: :4040)
#  this can also be a socket: /tmp/mysql.sock
proxy-address               = :3307

# address:port of the remote slave-server (default: not set)
proxy-read-only-backend-addresses   = slave1:3306
proxy-read-only-backend-addresses   = slave2:3306

# address:port of the remote backend-servers (default: 127.0.0.1:3306)
proxy-backend-addresses     = master:3306

# disables profiling of queries (default: enabled)
#proxy-skip-profiling

# fix bug #25371 (mysqld > 5.1.12) for older libmysql versions
proxy-fix-bug-25371

# filename of the lua script (default: not set)
proxy-lua-script    = /opt/mysql-proxy/share/mysql-proxy/rw-splitting.lua

#########################
# application options
#########################

# Start in daemon-mode
daemon

# Location of PID file
pid-file                  = /var/run/mysql-proxy.pid

log-use-syslog

Размещаем папку со скриптами в более удобном месте.

mv /opt/mysql-proxy/share/doc/mysql-proxy /opt/mysql-proxy/share/

Создаем симлинки:

cd /usr/lib64;
ln -s /opt/mysql-proxy/lib/libmysql-chassis.so.0.0.0 libmysql-chassis.so.0
ln -s /opt/mysql-proxy/lib/libmysql-proxy.so.0.0.0 libmysql-proxy.so.0
ln -s /opt/mysql-proxy/lib/libmysql-chassis-glibext.so.0.0.0 libmysql-chassis-glibext.so.0
ln -s /opt/mysql-proxy/lib/libevent-2.0.so.5.1.9 libevent-2.0.so.5
ln -s /opt/mysql-proxy/lib/libmysql-chassis-timing.so.0.0.0 libmysql-chassis-timing.so.0

Включаем автозагрузку mysql-proxy

chkconfig mysql-proxy on

Запускаем:

/etc/init.d/mysql-proxy start

Настраиваем master-slave репликацию между серверами