如何验证选择/插入是使用MySQL Master / Slave命中正确的服务器

时间:2009-09-03 15:00:49

标签: mysql ruby-on-rails ruby-on-rails-plugins master-slave

我有一个使用master_slave_adapter插件(http://github.com/mauricio/master_slave_adapter/tree/master)的rails应用程序将所有选择发送到从属服务器,并将所有其他语句发送给主服务器。使用Mysql主/从设置复制。我正在尝试验证所有SQL语句确实是正确的位置。选择到从站(db2),插入到主站(db1)但我不知道如何操作。我尝试在网络服务器上使用tcpdump:

sudo /usr/sbin/tcpdump -q -i eth0 dst port 3306

这是具有大量选择的页面请求的输出:

10:32:36.570930 IP web2.mydomain.com.57524 > db1.mydomain.com.mysql: tcp 0
10:32:36.576805 IP web2.mydomain.com.57524 > db1.mydomain.com.mysql: tcp 0
10:32:36.577201 IP web2.mydomain.com.57524 > db1.mydomain.com.mysql: tcp 0
10:32:36.577980 IP web2.mydomain.com.57524 > db1.mydomain.com.mysql: tcp 86
10:32:36.578186 IP web2.mydomain.com.57524 > db1.mydomain.com.mysql: tcp 21
10:32:36.578359 IP web2.mydomain.com.57524 > db1.mydomain.com.mysql: tcp 27
10:32:36.578522 IP web2.mydomain.com.57524 > db1.mydomain.com.mysql: tcp 5
10:32:36.578741 IP web2.mydomain.com.57524 > db1.mydomain.com.mysql: tcp 13
10:32:36.579611 IP web2.mydomain.com.57524 > db1.mydomain.com.mysql: tcp 29
10:32:36.588201 IP web2.mydomain.com.45978 > db2.mydomain.com.mysql: tcp 0
10:32:36.588323 IP web2.mydomain.com.45978 > db2.mydomain.com.mysql: tcp 0
10:32:36.588677 IP web2.mydomain.com.45978 > db2.mydomain.com.mysql: tcp 0
10:32:36.588784 IP web2.mydomain.com.45978 > db2.mydomain.com.mysql: tcp 86

看起来所有的选择都不是奴隶。也许这不是正确的测试方式,任何人都知道更好的方法吗?

2 个答案:

答案 0 :(得分:2)

在主服务器和从服务器上创建一个特殊用户并授予他不同的权限。在主服务器上禁用SELECT,仅在从服务器上启用SELECT。然后,如果出现问题,将会出现MySQL错误。

答案 1 :(得分:0)

要么打开两台服务器上的查询日志记录,要么只查看统计信息。 mysql有一组全局计数器,用于跟踪每种语句的执行次数。