ÔĶÁĿ¼
1¡¢¼ò½é
2¡¢»ù±¾»·¾³
3¡¢ÅäÖÃÖ÷´Ó¸´ÖÆ
4¡¢MySQL¶Áд·ÖÀëÅäÖÃ
4.1¡¢°²×°lua
4.2¡¢°²×°mysql-proxy
5¡¢MySQL¶Áд·ÖÀë²âÊÔ
1£©¡¢ÐÞ¸Ärw-splitting.luaÎļþ
2£©¡¢ÐÞ¸ÄÍê³Éºó£¬Æô¶¯mysql-proxy
3£©¡¢´´½¨ÓÃÓÚ¶Áд·ÖÀëµÄÊý¾Ý¿âÁ¬½ÓÓû§
4£©¡¢²âÊԵǽÕ˺Åproxy1@192.168.95.13½øÐÐÌí¼ÓÊý¾Ý
5£©¡¢¹Ø±Õ12mysqlµÄ´Ó¸´ÖÆ
6£©¡¢Ö¤Ã÷д·ÖÀë
7£©¡¢Ö¤Ã÷¶Á·ÖÀë
6¡¢½¨Òé
1¡¢¼ò½é
µ±½ñMySQLʹÓÃÏ൱¹ã·º£¬Ëæ×ÅÓû§µÄÔö¶àÒÔ¼°Êý¾ÝÁ¿µÄÔö´ó£¬¸ß²¢·¢ËæÖ®¶øÀ´¡£È»¶øÎÒÃÇÓкܶà°ì·¨¿ÉÒÔ»º½âÊý¾Ý¿âµÄѹÁ¦¡£·Ö²¼Ê½Êý¾Ý¿â¡¢¸ºÔؾùºâ¡¢¶Áд·ÖÀë¡¢Ôö¼Ó»º´æ·þÎñÆ÷µÈµÈ¡£ÕâÀïÎÒÃǽ«²ÉÓöÁд·ÖÀë¼¼Êõ½øÕ¹»º½âÊý¾Ý¿âµÄѹÁ¦¡£
ÆäÖÐʵÏÖ¶Áд·ÖÀëµÄ¼¼ÊõÓкܶ෽·¨£¬ÕâÀïÎÒÃǽ«²ÉÓÃmysql-proxyÕâ¸öÖмäÈí¼þÀ´ÊµÏÖ¡£Õâ¸öÈí¼þÖк¬ÓÐÒ»¸ö¶Áд·ÖÀëµÄluaÎļþ£¬ÕâÒ²ÊÇÎÒÃÇʹÓÃmysql-proxyʵÏÖ¶Áд·ÖÀë±ØÓõÄÎļþ£¬ËüÐèÒªlua½âÎöÆ÷½øÐнâÎö¡£Òò´ËÎÒÃÇ»¹ÐèÒª°²×°Ò»¸ölua½âÎöÆ÷¡£
2¡¢»ù±¾»·¾³
Èý̨linuxÐéÄâÖ÷»ú
Linux°æ±¾CentOS6.6¡¢MySQL 5.5
mysql-proxy-0.8.5
lua-5.1.4
ip£º192.168.95.11£¨Ð´£©¡¢192.168.95.12£¨¶Á£©¡¢192.168.95.13£¨mysql-proxy£©
3¡¢ÅäÖÃÖ÷´Ó¸´ÖÆ
Ïêϸ¿ÉÒԲο¼£ºmysqlÖ÷´Ó¸´ÖÆÓëÖ÷Ö÷¸´ÖÆ
http://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label2
´ÖÂÔ½éÉÜÒ»ÏÂÊý¾Ý¿âµÄÖ÷´Ó¸´ÖƵÄÅäÖãº
µÚÒ»²½£º
ÔÚ192.168.95.11Öд´½¨Ò»¸ö192.168.95.12Ö÷»úÖпÉÒԵǼµÄMySQLÓû§
Óû§£ºmysql12
ÃÜÂ룺mysql12
mysql>GRANT
REPLICATION SLAVE ON *.* TO ¡®mysql12¡¯@¡¯192.168.95.12¡¯
IDENTIFIED BY ¡®mysql12¡¯;
mysql>FLUSH PRIVILEGES; |
µÚ¶þ²½£º
²é¿´192.168.95.11MySQL·þÎñÆ÷¶þ½øÖÆÎļþÃûÓëλÖÃ
mysql>SHOW
MASTER STATUS; |

µÚÈý²½£º
¸æÖª¶þ½øÖÆÎļþÃûÓëλÖÃ
ÔÚ192.168.95.12ÖÐÖ´ÐУº
mysql>
change master to
-> master_host='192.168.95.11',
-> master_user='mysql12',
-> master_password='mysql12',
-> master_log_file='mysql-bin.000124',
-> master_log_pos=586; |
µÚËIJ½£º
ÔÚ192.168.95.12ÖÐ
mysql>SLAVE START; #¿ªÆô¸´ÖÆ
mysql>SHOW SLAVE STATUS\G #²é¿´Ö÷´Ó¸´ÖÆÊÇ·ñÅäÖóɹ¦

Ö÷´Ó¸´ÖÆÅäÖóɹ¦£¡
£¨×¢Ò⣺ÉÏÃæRelicate_Do_DB:aa±íʾÖ÷´Ó¸´ÖÆÖ»Õë¶ÔÊý¾Ý¿âaa¡¾ÕâÊÇÎÒ֮ǰÉèÖõľÍû¸ÄÁË¡¿£¬ÕâÀï¾Í²»½²Õâ¸öÁË£¬ÒªÏëÈ¥Á˽âѧҽÕâ¸öµÄ»°¿ÉÒԲο¼ÎÄÕÂhttp://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label7£©
4¡¢MySQL¶Áд·ÖÀëÅäÖÃ
°Ù¶ÈÔÆÏÂÔØ£ºÁ´½Ó£ºhttp://pan.baidu.com/s/1slTl18L
ÃÜÂ룺9j0m
»Øµ½¶¥²¿
4.1¡¢°²×°lua
¹ÙÍøÏÂÔØ£ºhttp://www.lua.org/download.html
Lua ÊÇÒ»¸öСÇɵĽű¾ÓïÑÔ¡£LuaÓɱê×¼C±àд¶ø³É£¬´úÂë¼ò½àÓÅÃÀ£¬¼¸ºõÔÚËùÓвÙ×÷ϵͳºÍƽ̨É϶¼¿ÉÒÔ±àÒ룬ÔËÐС£
Ò»¸öÍêÕûµÄLua½âÊÍÆ÷²»¹ý200k£¬ÔÚĿǰËùÓнű¾ÒýÇæÖУ¬LuaµÄËÙ¶ÈÊÇ×î¿ìµÄ¡£ÕâÒ»Çж¼¾ö¶¨ÁËLuaÊÇ×÷ΪǶÈëʽ½Å±¾µÄ×î¼ÑÑ¡Ôñ¡£
1£©¡¢°²×°luaÐèÒªÒÀÀµºÜ¶àÈí¼þ°ü¡£
¿ÉÒÔͨ¹ýrpm -qa | grep name¼ì²éÒÔÏÂÈí¼þÊÇ·ñ°²×°£º
gcc*¡¢gcc-c++*¡¢autoconf*¡¢automake*¡¢zlib*¡¢libxml*¡¢ncurses-devel*¡¢libmcrypt*¡¢libtool*¡¢flex*¡¢pkgconfig*¡¢libevent*¡¢glib* |
ÈôȱÉÙÏà¹ØµÄÈí¼þ°ü£¬¿Éͨ¹ýyum -y install·½Ê½ÔÚÏß°²×°£¬»òÖ±½Ó´Óϵͳ°²×°¹âÅÌÖÐÕÒµ½²¢Í¨¹ýrpm
-ivh·½Ê½°²×°¡££¨ÎҵĻ°Ò»°ãÊÇÖ±½ÓÔÚϵͳ¹âÅÌÈí¼þ¿âÖÐÕÒµ½Ö±½Órpm°²×°µÄ£¬ÓÐЩÕÒ²»µ½£¬ÔòÏÈÔÚÍøÉÏÏÂÔØÈ»ºóÔÚftp´«¸ølinuxÔÙ½øÐа²×°£©
2£©¡¢ÒÀÀµÈí¼þ°²×°Íê±ÏºóÔò½øÐбàÒë°²×°lua
MySQL-ProxyµÄ¶Áд·ÖÀëÖ÷ÒªÊÇͨ¹ýrw-splitting.lua½Å±¾ÊµÏֵģ¬Òò´ËÐèÒª°²×°lua¡£
¹ÙÍøÏÂÔØ£ºhttp://www.lua.org/download.html£¨ÏÂÔØÔ´Âë°ü£©
#
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
# tar zxvf lua-5.1.4.tar.gz
# cd lua-5.1.4
# make linux
# make install
# export LUA_CFLAGS="-I/usr/local/include"
LUA_LIBS="-L/usr/local/lib -llua -ldl"
LDFLAGS="-lm"
£¨ÎÒ°²×°µÄʱºòÊÇÖ±½ÓÔÚ¹âÅÌÈí¼þ¿âÖÐÕÒµ½£¬Ö±½Órpm°²×°£© |
4.2¡¢°²×°mysql-proxy
1£©¡¢Ê×ÏȲ鿴linux°æ±¾È·ÈÏÊÇ32λ»¹ÊÇ64Ϊϵͳ
²é¿´linuxÄں˰汾
# cat /etc/issue
²é¿´linux°æ±¾
# cat /proc/version
2£©¡¢°´ÏµÍ³Î»ÊýÏÂÔØ£¨ÉÏÃæ°Ù¶ÈÔÆÁ´½Ó64λµÄÎļþ£©
3£©¡¢°²×°
#
tar ¨Czxvf mysql-proxy-0.8.5- linux-rhel5-x86-64bit.tar.gz
# mkdir /usr/local/mysql-proxy
# cp ./ mysql-proxy-0.8.5-linux-rhel5-x86-64bit/*
/usr/local/mysql-proxy
# cd /usr/local/mysql-proxy |

°²×°³É¹¦
5¡¢MySQL¶Áд·ÖÀë²âÊÔ
1£©¡¢ÐÞ¸Ärw-splitting.luaÎļþ
ÐÞ¸ÄĬÈÏÁ¬½Ó£¬½øÐпìËÙ²âÊÔ£¬²»Ð޸ĵĻ°Òª´ïµ½Á¬½ÓÊýΪ4ʱ²ÅÆôÓöÁд·ÖÀë
¡¡¡¡#cp
/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
./ |

2£©¡¢ÐÞ¸ÄÍê³Éºó£¬Æô¶¯mysql-proxy
#
cd /usr/local/mysql/bin
# ./mysql-proxy --proxy-read-only-backend-addresses=192.168.95.12:3306
--proxy-backend-addresses=192.168.95.11:3306
--proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua
& |
²ÎÊý£º
¡¡¡¡--proxy-read-only-backend-addresses¡¡¡¡#Ö»¶Á·þÎñÆ÷µØÖ·£¨ip£©
¡¡¡¡--proxy-backend-addresses¡¡¡¡¡¡¡¡¡¡¡¡¡¡#·þÎñÆ÷µØÖ·£¨Ö÷·þÎñÆ÷£©
¡¡¡¡--proxy-lua-script¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡#lua½Å±¾Â·¾¢
¡¡¡¡&¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ #±íʾºǫִ́ÐÐ
3£©¡¢´´½¨ÓÃÓÚ¶Áд·ÖÀëµÄÊý¾Ý¿âÁ¬½ÓÓû§
Óû§Ãû£ºproxy1
ÃÜ Â룺321
mysql>grant
all on *.* to 'proxy1'@'192.168.95.13' identified
by '321';
mysql>use aa;
mysql>create table tab1(id int auto_increment,name
varchar(32) not null,primary key(id)); |
¡¾ÒòΪÒѾ¿ªÆôÁËÖ÷´Ó¸´ÖÆËùÒÔ£¬11¡¢12Ö÷»úmysqlÖж¼´´½¨ÁËÕâ¸öÓû§¡¿
4£©¡¢²âÊԵǽÕ˺Åproxy1@192.168.95.13½øÐÐÌí¼ÓÊý¾Ý
¿ÉÒÔʹÓÃÈÎÒâip¿Í»§¶ËµÇ½Õâ¸öÕ˺Å
ÔÚ192.168.95.13µÇ½£º
# ./mysql -u proxy1 -P4040 -h192.168.95.13
¨Cp

ÔÚÁ½¸ömysqlÖв鿴½á¹û£ºÒ»ÖÂ

½á¹û±íÃ÷£ºÕ˺ÅʹÓÃ
(ps£ºidÊÇ×ÔÔö³¤£¬Ö®Ç°¸ßÖ÷Ö÷¸´ÖƵÄʱºò¸ü¸ÄÁËÅäÖÃÎļþ£¬»¹Ã»¸ü¸Ä»ØÀ´£¬¾Í½«¾ÍÓÃ×ÅÏȰÉ)
»Øµ½¶¥²¿
5£©¡¢¹Ø±Õ12mysqlµÄ´Ó¸´ÖÆ
mysql> stop slave;

6£©¡¢Ö¤Ã÷д·ÖÀë
ʹÓÃproxy1@192.168.95.13Õ˺Ŵò¿ª¶à¸ö¿Í»§¶Ë½øÐвåÈëÊý¾Ý
´ò¿ªÈý¸ömysql¿Í»§¶Ë·Ö±ð²åÈë2ÌõÊý¾Ý£º
mysql>
insert into tab1 (name) values('stop_slave11111');
¡.
mysql> insert into tab1 (name) values('stop_slave6666¡¯); |
²é¿´£º
·Ö±ðµÇ½11mysqlÓë12mysql²é¿´aa.tab1ÖеÄÊý¾Ý
Ö÷Êý¾Ý¿â£º

´ÓÊý¾Ý¿â£º

½á¹ûÖÐÏÔʾ²åÈëµÄÊý¾Ý´æÔÚÓëÖ÷Êý¾Ý¿â£¬¶ø´ÓÊý¾Ý¿âûÓУ¬ËùÒÔÖ¤Ã÷дÄܹ»·ÖÀë¡£
7£©¡¢Ö¤Ã÷¶Á·ÖÀë
ʹÓÃproxy1@192.168.95.13Õ˺ŵǽmysql£¬²é¿´aa.tab1ÖеÄÊý¾Ý
mysql>use
aa;
mysql>select*from tab1; |
½á¹ûÖÐÏÔʾֻÓдÓÊý¾Ý¿âµÄÊý¾Ý£¬½áºÏÉÏÃæµÄ²âÊÔ£¬¿ÉÒÔÖ¤Ã÷¶Á·ÖÀë¡£

6¡¢½¨Òé
ΪÁË·½±ãÆô¶¯Óë¹ÜÀímysql-proxy¿ÉÒÔ´´½¨mysql-proxy·þÎñ¹ÜÀí½Å±¾
ÏÂÃæÕâ¸ö¹ÜÀí½Å±¾½öÊʺÏÒÔÉÏÎÒ¸ø³öµÄ°²×°Â·¾¶Î»ÖÃ
¡¾´Ë¹ÜÀí½Å±¾ÐèÒª°´ÕÕ×Ô¼ºµÄ°²×°Â·¾¶×ö³öÏàÓ¦µÄÐ޸ķ½¿ÉʹÓá¿
#!/bin/sh
2
3 #
4 # mysql-proxy This script starts and stops
the mysql-proxy daemon
5 #
6 # chkconfig: - 78 30
7 # processname: mysql-proxy
8 # description: mysql-proxy is a proxy daemon
to mysql
9
10 # Source function library.
11 . /etc/rc.d/init.d/functions
12
13 #PROXY_PATH=/usr/local/bin
14 PROXY_PATH=/usr/local/mysql-proxy/bin
15
16 prog="mysql-proxy"
17
18 # Source networking configuration.
19 . /etc/sysconfig/network
20
21 # Check that networking is up.
22 [ ${NETWORKING} = "no" ] &&
exit 0
23
24 # Set default mysql-proxy configuration.
25 #PROXY_OPTIONS="--daemon"
26
27 PROXY_OPTIONS="--proxy-read-only-backend-addresses=192.168.95.12:3306
--proxy-backend-addresses=192.168.95.11:3306
--proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua"
28
29 PROXY_PID=/usr/local/mysql-proxy/run/mysql-proxy.pid
30
31 # Source mysql-proxy configuration.
32 if [ -f /etc/sysconfig/mysql-proxy ]; then
33 . /etc/sysconfig/mysql-proxy
34 fi
35
36 PATH=$PATH:/usr/bin:/usr/local/bin:$PROXY_PATH
37 # By default it's all good
38 RETVAL=0
39
40 # See how we were called.
41 case "$1" in
42 start)
43 # Start daemon.
44 echo -n $"Starting $prog: "
45 $NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS
--daemon --pid-file=$PROXY_PID --user=root --log-level=debug
--log-file=/usr/local/mysql-proxy/log/mysql-proxy.log
46 RETVAL=$?
47 echo
48 if [ $RETVAL = 0 ]; then
49 touch /var/lock/subsys/mysql-proxy]
50 echo "ok"
51 fi
52 ;;
53 stop)
54 # Stop daemons.
55 echo -n $"Stopping $prog: "
56 killproc $prog
57 RETVAL=$?
58 echo
59 if [ $RETVAL = 0 ]; then
60 rm -f /var/lock/subsys/mysql-proxy
61 rm -f $PROXY_PID
62 fi
63 ;;
64 restart)
65 $0 stop
66 sleep 3
67 $0 start
68 ;;
69 condrestart)
70 [ -e /var/lock/subsys/mysql-proxy ] &&
$0 restart
71 ;;
72 status)
73 status mysql-proxy
74 RETVAL=$?
75 ;;
76 *)
77 echo "Usage: $0 {start|stop|restart|status|condrestart}"
78 RETVAL=1
79 ;;
80 esac
81 exit $RETVAL |
#---ÎÒ½«mysql-proxy·þÎñ¹ÜÀí½Å±¾·ÅÔÚÁË/usr/local/mysql-proxy/init.d/Îļþ¼ÐÀï
#---¸øÖ´ÐÐȨÏÞ£¬½¨Á¢ÏàӦĿ¼
#chmod +x /usr/local/mysql-proxy/init.d/mysql-proxy
#mkdir /usr/local/mysql-proxy/run
#mkdir /usr/local/mysql-proxy/log
#cd /usr/local/mysql-proxy/init.d/
#---Æô¶¯mysql-proxy
#./mysql-proxy start
#---Í£Ö¹mysql-proxy
#./mysql-proxy stop
#---ÖØÆômysql-proxy
#./mysql-proxy restart |
һЩÏà¹Ø²ÎÊý£º
PROXY_PATH=/usr/local/mysql-proxy/bin
//¶¨Òåmysql-proxy·þÎñ¶þ½øÖÆÎļþ·¾¶
--proxy-read-only-backend-addresses=192.168.95.12:3306
//¶¨Òåºó¶ËÖ»¶Á´Ó·þÎñÆ÷µØÖ·
--proxy-backend-addresses=192.168.95.11:3306
//¶¨Òåºó¶ËÖ÷·þÎñÆ÷µØÖ·
--proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua
//¶¨Òålua¶Áд·ÖÀë½Å±¾Â·¾¶
PROXY_PID=/usr/local/mysql-proxy/run/mysql-proxy.pid
//¶¨Òåmysql-proxy PIDÎļþ·¾¶
--daemon //¶¨ÒåÒÔÊØ»¤½ø³ÌģʽÆô¶¯
--keepalive //ʹ½ø³ÌÔÚÒì³£¹Ø±ÕºóÄܹ»×Ô¶¯»Ö¸´¡¾ÉÏÃæµÄ¹ÜÀí½Å±¾Ã»ÓмÓÉϴ˲ÎÊý¡¿
--user=root //ÒÔrootÓû§Éí·ÝÆô¶¯·þÎñ
--log-level=debug //¶¨ÒålogÈÕÖ¾¼¶±ð£¬Óɸߵ½µÍ·Ö±ðÓÐ(error|warning|info|message|debug)
--log-file=/usr/local/mysql-proxy/log/mysql-proxy.log
//¶¨ÒålogÈÕÖ¾Îļþ·¾¶ |