最近在生产环境使用了amoeba,发现一些问题:
1 sql语句不支持,产生大量错误日志
2 有重复执行的迹象,发生数据重复插入到master,还不确定这问题是否amoeba的问题
3 读写分离会在master出现读进程
第二点,就目前的使用情况而言,amoeba还是很稳定的,只是不太清楚是什么问题,如果重复插入数据的问题不是amoeba产生的,那对于应用而言没有错误发生。
对于第一点和第三点,我觉得是这么一个过程:
1 读写分离时会分析sql语句
2 如果语句属于检查范围的则正常进行读写判断,读操作发送到writePool,写操作发送至readPool,未知的sql语句则发送至defaultPool
3 一般defaultPool和写操作是master,所以在master发现select语句很正常,肯定是判断不出来的语句
sql出现的问题比较多,在log里面有找到以下性质的语句错误记录:
希望amoeba可以正常运行,不产生第二点错误就很满意了。
对于读操作,使用amoeba肯定是不错。
另外,master重启可能导致主从同步会不太稳定,多个从服务器的话比较长的时间才能稳定下来。
比较经常出现“Queueing master event to the relay log”,slave进程都没有持续,可能导致更新不够及时。
@20100105 补充:以上可能是server-id的问题,参考这里
原创内容如转载请注明:来自 阿权的书房
1 sql语句不支持,产生大量错误日志
2 有重复执行的迹象,发生数据重复插入到master,还不确定这问题是否amoeba的问题
3 读写分离会在master出现读进程
第二点,就目前的使用情况而言,amoeba还是很稳定的,只是不太清楚是什么问题,如果重复插入数据的问题不是amoeba产生的,那对于应用而言没有错误发生。
对于第一点和第三点,我觉得是这么一个过程:
1 读写分离时会分析sql语句
2 如果语句属于检查范围的则正常进行读写判断,读操作发送到writePool,写操作发送至readPool,未知的sql语句则发送至defaultPool
3 一般defaultPool和写操作是master,所以在master发现select语句很正常,肯定是判断不出来的语句
sql出现的问题比较多,在log里面有找到以下性质的语句错误记录:
1 TRUNCATE TABLE XXX
2 EXPLAIN XXX
3 SELECT * FROM xx FORCE INDEX (xx)
4 insert into xx values('\'test\'') 转义的单引号
5 order by rand()
2 EXPLAIN XXX
3 SELECT * FROM xx FORCE INDEX (xx)
4 insert into xx values('\'test\'') 转义的单引号
5 order by rand()
希望amoeba可以正常运行,不产生第二点错误就很满意了。
对于读操作,使用amoeba肯定是不错。
另外,master重启可能导致主从同步会不太稳定,多个从服务器的话比较长的时间才能稳定下来。
比较经常出现“Queueing master event to the relay log”,slave进程都没有持续,可能导致更新不够及时。
@20100105 补充:以上可能是server-id的问题,参考这里
原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
解决amoeba的单点故障有两种:
1 在本地架设amoeba,这样web服务器挂了,那数据库也没有意义了,同存亡
2 用keepalived可以解决ip的单点故障,两个机器监听一个ip,使用一样的amoeba的配置即可