基于Mycat开源数据库中间件 主从的部署读写分离

MySQL数据库主从读写分离配置详解与示例

部署环境 centos 7

mysql  5.6  mycat  1.4

主db   172.16.8.211

从db   172.16.8.212

mycat  172.16.8.215

一、MySQL主服配置这里就不写了

检查下主从状态

  mysql>show slavestatus\G

以下两个参数必须为YES

  Slave_IO_Running: Yes

  Slave_SQL_Running: Yes

新建一个测试库  ceshi

二、安装java环境

下载解压 jdk1.7.0_45.tar

 配置java环境在profile 后面加

 Vi /etc/profile

 ## java env

 exportJAVA_HOME=/opt/jdk1.7.0_45

 exportJRE_HOME=$JAVA_HOME/jre

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

 exportPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

  

 source /etc/profile

三、数据库中间件Mycat配置

 下载Mycat-server-1.4-release-2015101923003118-linux.tar

     解压到/usr/local/

 Mycat 1.4支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠,

3.1 配置/usr/local/mycat/conf/server.xml

    修改一个mycat用户

 

3.2 配置schema.xm l

(备注解释)

(1) 设置 balance="1"与writeType="0"

Balance参数设置:

    1. balance=“0”, 所有读操作都发送到当前可用的writeHost上。

    2. balance=“1”,所有读操作都随机的发送到readHost。

    3. balance=“2”,所有读操作都随机的在writeHost、readhost上分发

WriteType参数设置:

 1. writeType=“0”, 所有写操作都发送到可用的writeHost上。

 2. writeType=“1”,所有写操作都随机的发送到readHost。

 3. writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。

“readHost是从属于writeHost的,即意味着它从那个writeHost获取同步据,

因此,当它所属的writeHost宕机了,则它也不会再参与到读写分离中来,即

“不工作了”,这是因为此时,它的数据已经“不可靠”了。基于这个考虑,

目前mycat 1.3和1.4版本中,若想支持MySQL一主一从的标准配置,并且

在主节点宕机的情况下,从节点还能读取数据,则需要在Mycat里配置为两个

writeHost并设置banlance=1。”

(2) 设置switchType="2" 与slaveThreshold="100"   

“Mycat心跳检查语句配置为 show slave status ,dataHost 上定义两个新

属性:switchType="2" 与slaveThreshold="100",此时意味着开启

MySQL主从复制状态绑定的读写分离与切换机制。Mycat心跳机制通过检

测 show slave status 中的 "Seconds_Behind_Master",

"Slave_IO_Running","Slave_SQL_Running" 三个字段来确定当前主从同

步的状态以及Seconds_Behind_Master主从复制时延。“

 

 

3.3 配置log4j.xml

3.4 配置编码 index_to_charset.properties   添加常用的utf-8字符集

3.5 启动  测试

    调试就用控制

   

   然后进行操作进入控制台会发现没有mysql 客户端,所以先安装下mysql 在进行进入

   

    

   mysql -utest –p123456 –h127.0.0.1 –P8066  ##控制台

   mysql -utest –p123456 –h127.0.0.1 –P9066  ##监控控制台

   

   

    测试新建表-----》插入数据------》查看数据

    create tablecompany(id int not null primary key,name varchar(100));

    insert intocompany(id,name) values(1,'alibaba');

    select *from company;

    

    查看日志会发现写走的是211

    

    

 

    读走的是212这样读写分离就出来了,如果有多台主或者从就可以负载了

    

 

     版主博客 http://312461613.blog.51cto.com/

相关的文章:
  • 抱歉,暂无相关文章。

1条评论

写评论