mysql读写分离
公司现在的项目使用mysql数据库,由于访问量上来现需要做读写分离。在网上搜索了很多关于mysql读写分离的资料,目前有使用amoeba mysqlproxy等等的方法。由于是线上环境要求谨慎,在此请做过mysql读写分离的童鞋都说说那种的稳定性和可靠性高点,谢谢!
作者: yueboking 发布时间: 2011-09-26
你说的访问量开始上来,建议的步伐:
1.先以最小的代价,解决当下的问题:
1.1 启用查询缓存功能 关于查询缓存如何使用 可以到www.mysqlops.com上查询专门的文章介
绍:http://www.mysqlops.com/2011/08/10/mysql-query-cache.html
1.2 对SQL语句做优化,以及索引进行优化,使执行频率最高的SQL性能最好;
1.3 对服务器增加内存和磁盘
2.关于读写分类的技术
2.1 可以使用比如mysql-proxy的方案,建议自己会用lua语言,其逻辑是用lua语言写插件的,自己也可以写
2.2 mysql-mmm的读写分离架构,参见:http://www.mysqlops.com/2011/06/11/mysql-mmm-architecture.html
2.3 使用amoeba等类似的伪分布式的架构,适合大数据容量,高并发的业务场景,若是你们的数据量没到那个程度,
用户访问量也没到,这类伪分布式架构的缺陷就出来了,此类架构的文章,可以自己去www.mysqlops.com上搜索下
有详细的介绍
2.4 我们曾经做过微调,比如公司内部近百人的编辑团队和 前台用户访问的数据库 做读的分类,可以通过程序控制,
但是修改写到同一台服务器上,这样就可以减少 对前台用户的影响,而一般后台编辑团队需要用到的SQL超复杂,
性能也差.....
2.5 采用 M-M-S-S...的复制架构,真正的程序代码上的读写分类,就是同时连接2台服务器,使用一种轮训或者均分的原则 分散多个从数据库上
上述给出的建议,希望你可以根据实际情况,不同时期采用不同的方案,避免工程浩大,周期长,且容易引入新问题...
#****************************************************
#新浪微博:http://weibo.com/mysqlops
#****************************************************
1.先以最小的代价,解决当下的问题:
1.1 启用查询缓存功能 关于查询缓存如何使用 可以到www.mysqlops.com上查询专门的文章介
绍:http://www.mysqlops.com/2011/08/10/mysql-query-cache.html
1.2 对SQL语句做优化,以及索引进行优化,使执行频率最高的SQL性能最好;
1.3 对服务器增加内存和磁盘
2.关于读写分类的技术
2.1 可以使用比如mysql-proxy的方案,建议自己会用lua语言,其逻辑是用lua语言写插件的,自己也可以写
2.2 mysql-mmm的读写分离架构,参见:http://www.mysqlops.com/2011/06/11/mysql-mmm-architecture.html
2.3 使用amoeba等类似的伪分布式的架构,适合大数据容量,高并发的业务场景,若是你们的数据量没到那个程度,
用户访问量也没到,这类伪分布式架构的缺陷就出来了,此类架构的文章,可以自己去www.mysqlops.com上搜索下
有详细的介绍
2.4 我们曾经做过微调,比如公司内部近百人的编辑团队和 前台用户访问的数据库 做读的分类,可以通过程序控制,
但是修改写到同一台服务器上,这样就可以减少 对前台用户的影响,而一般后台编辑团队需要用到的SQL超复杂,
性能也差.....
2.5 采用 M-M-S-S...的复制架构,真正的程序代码上的读写分类,就是同时连接2台服务器,使用一种轮训或者均分的原则 分散多个从数据库上
上述给出的建议,希望你可以根据实际情况,不同时期采用不同的方案,避免工程浩大,周期长,且容易引入新问题...
#****************************************************
#新浪微博:http://weibo.com/mysqlops
#****************************************************
作者: mysqlops 发布时间: 2011-09-28