Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
MySQL¶Áд·ÖÀë¼¼Êõ
 
À´Ô´£ºÀ´×ÔÍøÂç ·¢²¼ÓÚ£º 2017-11-2
  1827  次浏览      30
 

ÔĶÁĿ¼

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ÈÕÖ¾Îļþ·¾¶

 
   
1827 ´Îä¯ÀÀ       30
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ