我有一个使用master_slave_adapter插件(http://github.com/mauricio/master_slave_adapter/tree/master)的rails应用程序,它将所有选择发送到从服务器,并将所有其他语句发送到主服务器。复制是使用Mysql主/从设置的。我正在尝试验证所有的SQL语句是否确实都到达了正确的位置。选择到从机(db2),插入到主机(db1),但我不确定如何做。我尝试在the服务器上使用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看起来并不是所有的选择都会去从属服务器。也许这不是测试的正确方法,有人知道更好的方法吗?
发布于 2009-11-07 18:04:34
在主机和从机上都设置一个特殊用户,并授予他不同的权限。在主机上禁用SELECT,仅在从机上启用SELECT。然后,如果出现错误,就会出现MySQL错误。
发布于 2009-09-03 15:35:25
在两台服务器上打开查询日志记录,或者只查看统计信息。mysql有一组全局计数器,用于跟踪每种语句的执行次数。
https://stackoverflow.com/questions/1373962
复制相似问题