《MysqL入门MysqL Proxy的安装及基本命令使用教程》要点:
本文介绍了MysqL入门MysqL Proxy的安装及基本命令使用教程,希望对您有用。如果有疑问,可以联系我们。
MysqL Proxy最壮大的一项功能是告终“读写离别(Read/Write Splitting)”.它的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询.数据库复制被用来把事务性查询导致的改变同步到集群中的从数据库.MysqL数据库
能够去LUA的官方下载:dpa.nsysu.edu.tw/Downloads/MysqL-Proxy/.MysqL数据库
MysqL.cdpa.nsysu.edu.tw/Downloads/MysqL-Proxy/MysqL-proxy-0.6.0.tar.gzMysqL数据库
3、测验过程中废止了B和C的REPLICATION.这么sql语句一下子就看出来从哪里来的.MysqL数据库
万一是M-S(能够先在SLAVE上举行STOP SLAVE)MysqL数据库
1. 安装
下载已经编译好的安装包,或者预编译安装包均可,在这里,使用预编译版本.MysqL数据库
[@s1.yejr.com ~]# tar zxf MysqL-proxy-0.6.0-linux-rhas4-x86.tar.gz [@s1.yejr.com ~]# cd MysqL-proxy-0.6.0-linux-rhas4-x86 #可以看到有2个目录 [@s1.yejr.com MysqL-proxy-0.6.0-linux-rhas4-x86]# ls sbin share [@s1.yejr.com MysqL-proxy-0.6.0-linux-rhas4-x86]# mv sbin/MysqL-proxy /usr/local/sbin/ [@s1.yejr.com MysqL-proxy-0.6.0-linux-rhas4-x86]# ls share MysqL-proxy tutorial-constants.lua tutorial-packets.lua tutorial-rewrite.lua tutorial-warnings.lua tutorial-basic.lua tutorial-inject.lua tutorial-query-time.lua tutorial-states.lua #将lua脚本放到/usr/local/share下,以备他用 [@s1.yejr.com MysqL-proxy-0.6.0-linux-rhas4-x86]# mv share/MysqL-proxy /usr/local/share/ #删除符号连接等垃圾代码 [@s1.yejr.com MysqL-proxy-0.6.0-linux-rhas4-x86]# strip /usr/local/sbin/MysqL-proxy
[@s1.yejr.com ~]# vi /etc/init.d/MysqL-proxy #!/bin/sh export LUA_PATH=/usr/local/share/MysqL-proxy/?.lua mode=$1 if [ -z "$mode" ] ; then mode="start" fi case $mode in 'start') MysqL-proxy --daemon \ --admin-address=:4401 \ --proxy-address=:3307 \ --proxy-backend-addresses=:3306 \ --proxy-read-only-backend-addresses=192.168.133.232:3306 \ --proxy-read-only-backend-addresses=10.10.74.61:3306 \ --proxy-lua-script=/usr/local/share/MysqL-proxy/rw-splitting.lua ;; 'stop') killall MysqL-proxy ;; 'restart') if $0 stop ; then $0 start else echo "retart Failed!!!" exit 1 fi ;; esac exit 0
现在解释一下启动脚本:
--daemon 采用daemon方式启动
--admin-address=:4401 指定MysqL proxy的管理端口,表示本机的4401端口
--proxy-address=:3307 指定MysqL proxy的监听端口,也可以用 127.0.0.1:3307 表示
--proxy-backend-addresses=:3306 指定MysqL主机的端口
--proxy-read-only-backend-addresses=192.168.1.1:3306 指定只读的MysqL主机端口
--proxy-read-only-backend-addresses=192.168.1.2:3306 指定另一个只读的MysqL主机端口
--proxy-lua-script=/usr/local/share/MysqL-proxy/rw-splitting.lua 指定lua脚本,使用的是rw-splitting脚本,用于读写分离MysqL数据库
MysqL-proxy --help-all
运行以下命令启动/停止/重启MysqL proxy:MysqL数据库
[@s1.yejr.com ~]# /etc/init.d/MysqL-proxy start [@s1.yejr.com ~]# /etc/init.d/MysqL-proxy stop [@s1.yejr.com ~]# /etc/init.d/MysqL-proxy restart
[@s1.yejr.com ~]# MysqL -h127.0.0.1 -uroot -P3307
MysqL> show processlist;
+-------+------+----------------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-------+------+----------------+------+---------+------+-------+------------------+ | 30052 | root | localhost:9656 | NULL | Query | 0 | NULL | show processlist | +-------+------+----------------+------+---------+------+-------+------------------+
[@s1.yejr.com ~]# sysbench --test=oltp --MysqL-table-engine=innodb --oltp-table-size=1000000 \ --MysqL-socket=/tmp/MysqL.sock --MysqL-user=root --MysqL-db=test prepare [@s1.yejr.com ~]# sysbench --test=oltp --MysqL-table-engine=innodb --oltp-table-size=1000000 \ --MysqL-socket=/tmp/MysqL.sock --MysqL-user=root --MysqL-db=test run
......... ......... Threads fairness: events (avg/stddev): 10000.0000/0.00 execution time (avg/stddev): 23.0387/0.00
还好,没给大家丢脸,剩下的测试自己完成吧 :)MysqL数据库
4. 其他
MysqL proxy还可以实现连接池的功能,这在很多LAMP开发中是软肋,因此,有了MysqL proxy,就可以不用再担心连接数超限的问题了.
如果使用rw-splitting.lua脚本的话,最好修改以下2个参数的默认值:MysqL数据库
min_idle_connections = 1 max_idle_connections = 3