读写分离是不是主和从服务器应该有相同的库和相同的表结构才能进行读写分离? 现在有一台服务器有数据库和数据表想把它做读写分离,加快查询速度。从服务器可以不用建表?
建库容易,表有点麻烦,数据表比较多。 mysql-proxy是只有读写分离的功能,没有负载均衡的功能?另外还有脚本启动的问题,什么原因? 难道要写上每个从的用户名和密码,或只写主的用户名和密码?
[root@CrawlTwo ~]# cat /etc/init.d/mysql-proxy
#!/bin/sh
export LUA_PATH=/usr/local/mysql/mysql-proxy/share/doc/mysql-proxy/?.luamode=$1
if [ -z "$mode" ] ; then
mode="start"
ficase $mode in
'start')
mysql-proxy --daemon \
--admin-address=:4401 \
--proxy-address=:3307 \
--proxy-backend-addresses=:3306 \
--proxy-read-only-backend-addresses=124.205.45.22:3306 \
--proxy-lua-script=/usr/local/mysql/mysql-proxy/share/doc/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[root@CrawlTwo ~]# /etc/init.d/mysql-proxy start
2010-12-28 15:42:36: (critical) admin-plugin.c:569: --admin-username needs to be set
2010-12-28 15:42:36: (critical) mainloop.c:267: applying config of plugin admin failed
2010-12-28 15:42:36: (critical) mysql-proxy-cli.c:596: Failure from chassis_mainloop. Shutting down.
从别的服务端连代理到代理上设置的主服务器数据库,新建表和添加数据,而从的没反应。 我把主的设为写,从的设为只读,但从的查询不到主的数据。而且从代理端口加主服务器IP登录的数据库新建的表只有主的新建了,从的没有。。不知道什么原因,反正就是代理什么的都设置好了,读写分离的效果没实现
有一个可能是你的连接数不够,默认的是4个链接之后才发生读写分离,你检查一下你的
/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
读写分离我做过,有问题可以继续探讨。
root 7097 7039 0 15:48 pts/2 00:00:00 grep proxoy
[1]+ Done mysql-proxy --proxy-address=:3307 --proxy-backend-addresses=222.35.5.10:3306 --proxy-read-only-backend-addresses=124.205.45.22:3306 --admin-username=root --admin-password=94sys11mysql88 --proxy-lua-script=/usr/local/mysql/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --admin-lua-script=/usr/local/mysql/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon > /var/log/mysql-proxy.log
我照你说的改了rw-splitting.lua里面的最小连接和最大连接数 proxy.global.config.rwsplit = {
min_idle_connections = 1,
max_idle_connections = 4, is_debug = false
}然后在windows cmd 登录
C:\Documents and Settings\qyzhou>mysql -uroot -p94sys11mysql88 -P3307 -h222.35.5.10
还是没有读写分离的效果。。然后我改用mysql-proxy管理端口(4041)登录,可能会效果但是报错,出问题了。
C:\Documents and Settings\qyzhou>mysql -uroot -p94sys11mysql88 -P4041 -h222.35.5.10
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.99-agent-adminType 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use test
No connection. Trying to reconnect...
Connection id: 1
Current database: *** NONE ***ERROR 1105 (07000): need a resultset + proxy.PROXY_SEND_RESULT ... got something
else
mysql>
网上查的说rw-splitting.lua里的BUG,要改个地方也改过,都没有。不知道啥原因。
你们有碰到过?
这个参数搞错了。/usr/local/mysql-proxy/bin/mysql-proxy --daemon \
--admin-username=cpc \
--admin-password=123 \
--admin-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua \
--proxy-read-only-backend-addresses=192.168.0.52:3306 \
--proxy-backend-addresses=192.168.0.51:3306 \
--proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua >> /tmp/log