设为首页 收藏本站
查看: 778|回复: 6

[经验分享] Mysql数据库下的读写分离

[复制链接]

尚未签到

发表于 2013-4-25 08:46:25 | 显示全部楼层 |阅读模式


Mysql读写分离(Read/Write Splitting)

原理:让主数据库处理增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。这样能有效地减轻数据库压力,也能减轻io压力。

实现方法:

1.通过更改PHP页面代码.

2.通过软件在数据库前面搭建一个分发器.

在这里主要介绍通过amoeba这款软件搭建分发器的方法.

amoeba的工作原理

amoeba在apache与Mysql之间起到一个承上启下的作用

         将apache发送过来的请求进行分类如果是增、删、改的操作则交给主Mysql服务器,如果是查询操作则交给从Mysql服务器.

         apache只会以为amoeba是Mysql服务器并将数据发给amoeba,并不知道后方真正的Mysql服务器的地址和帐号,那么这就需要amoeba为前端apache开通一个用户以便apache连接了.

         同理amoeba还需要连接后方真实Mysql数据库,也需要每一台真实数据库为amoeba开通一个用户以便连接.

实验环境:

在此首先要搭建一个Mysql AB复制的环境.主服务器用来进行增、删、改的操作,从服务器用来进行查询操作

其次还需要一台机器安装amoeba作为Mysql读写分离的分发器.

另外需要一台apache服务器提供网页.

实验流程:

Mysql的AB复制具体如何配置请参考我之前所写的文章<Mysql AB复制>

http://kys1230.blog./990812/1184551

1.保证自己的JAVA版本在1.5.0以上

查看命令

[iyunv@localhost amoeba]# java -version

java version "1.5.0"

如果不是1.5.0则需要升级.

安装以后需要重新配置JAVA路径等参数

#vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.5.0/

export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export PATH JAVA_HOME CALSSPATH

让/etc/profile文件修改后立即生效,可以使用以下命令

#. /etc/profile  

: ./etc/profile中间有空格.

2.安装amoeba软件

我所使用的是一个绿色软件解压即可使用.

所以先为amoeba创建一个目录;

[iyunv@localhost ~]# ls /usr/local/amoeba

将amoeba解压到指定目录中;

[iyunv@localhost ~]# tar fvxz amoeba-mysql-binary-2.1.0-RC5.tar.gz -C /usr/local/amoeba/

3.配置amoeba

amoeba的两个配置文件amoeba.xml与dbServers.xml

  3.1需要在amoeba.xml文件中定义端口以及前端apache连接amoeba的用户名密码与地址,还需要告诉amoeba哪台用来进行增、删、改的操作,哪些用来进行查询的操作.

<property name="port">3306</property>

#设置端口

<property name="ipAddress">192.168.18.53</property>

#设置本机IP地址

<property name="k1">root</property>

#设置前端apache连接所用的用户名

<property name="123"></property>

#设置前端apache连接所用的密码

<property name="defaultPool">Master</property>

#设置默认池为Master

<property name="writePool">Master</property>

#设置写入池为Master

<property name="readPool">SlavePool</property>

#设置读取池为SlavePool池

  3.2需要在db Servers.xml文件中定义连接后方真是Mysql的用户名密码以及Mysql的IP地址

<property name="k2">root</property>

#设置amoeba连接后端Mysql所用的用户名

<property name="123">password</property>

#设置amoeba连接后端Mysql所用的密码

<dbServer name="Master"  parent="abstractServer">

         <factoryConfig>

                   <property name="ipAddress">192.168.18.51</property>

         </factoryConfig>

</dbServer>

#设置Master服务器IP地址为192.168.18.51

<dbServer name="Slave1"  parent="abstractServer">

         <factoryConfig>

                   <property name="ipAddress">192.168.18.52</property>

         </factoryConfig>

</dbServer>

#设置Slave1服务器IP地址为192.168.18.52

<dbServer name=" SlavePool " virtual="true">

         <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">

                   <property name="loadbalance">1</property>

                  <property name="poolNames">Slave1</property>

         </poolConfig>

</dbServer>

#建立一个SlavePool池其中包含Slave1这台服务器

##此功能用于多台Mysql群集提供读取操作可以设置多个Slave服务器并且添加到SlavePool池中.

例如:

<dbServer name=" SlavePool " virtual="true">

         <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">

                   <property name="loadbalance">1</property>

                  <property name="poolNames">Slave1,Slave2,Slave3</property>

         </poolConfig>

</dbServer>

4.启动amoeba

/usr/local/amoeba/bin/amoeba start

5.配置apache服务器的PHP页面

将所有需要连接数据库的PHP代码修改一下

连接地址改成amoeba的地址

用户名,密码使用amoeba在amoeba.xml文件中定义的即可.

OK.到这里基本就完事了..

附件我要去研究研究如何上传- -!会尽快发出相关软件包的..

希望对大家有所帮助吧!




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-5472-1-1.html 上篇帖子: mysql安装过程中的一些错误解析——not found pid 下篇帖子: ubuntu server 启用mysql日志 数据库

尚未签到

发表于 2013-4-25 09:07:04 | 显示全部楼层
我的id是假冒的,大家不要相信我是骗子。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-19 05:35:31 | 显示全部楼层
在一辆拥挤的公车上,一位女郎忽然叫了起来:别挤啦!别挤啦!把人家的奶都挤出来啦!(她拿着酸奶呢)。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-23 13:39:11 | 显示全部楼层
生我之前谁是我,生我之后我是谁?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-31 00:28:35 | 显示全部楼层
勃起不是万能的,但不能勃起却是万万都不能的!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-6 11:47:55 | 显示全部楼层
我抢、我抢、我抢沙发~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-15 05:24:49 | 显示全部楼层
锻炼肌肉,防止挨揍!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表