centos 数据库mycat读写分离

11 篇文章 0 订阅

centos 数据库mycat读写分离
官网: http://www.mycat.io
1.    下载安装
wget http://dl.mycat.io/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz
mkdir /app
tar xvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz -C /app
2.    mycat安装目录结构:
bin     mycat命令,启动、重启、停止等
catlet  catlet为Mycat的一个扩展功能
conf    Mycat 配置信息,重点关注
lib       Mycat引用的jar包,Mycat是java开发的
logs    日志文件,包括Mycat启动的日志和运行的日志
version.txt    mycat版本说明
3.    logs目录:
wrapper.log       mycat启动日志
mycat.log           mycat详细工作日志
4.    Mycat的配置文件都在conf目录里面,这里介绍几个常用的文件:
server.xml      Mycat软件本身相关的配置文件,设置账号、参数等
schema.xml   Mycat对应的物理数据库和数据库表的配置,读写分离、高可用、分布式策略定制、
节点控制
rule.xml          Mycat分片(分库分表)规则配置文件,记录分片规则列表、使用方法等
#配置环境变量
vim /etc/profile.d/mycat.sh
PATH=/app/mycat/bin:$PATH
source /etc/profile.d/mycat.sh
#启动
mycat start
#查看日志,确定成功
cat /app/mycat/logs/wrapper.log 
...省略...
INFO   | jvm 1    | 2019/11/01 21:41:02 | MyCAT Server startup successfully. see 
logs in logs/mycat.log
#连接mycat:
mysql -uroot -p123456 -h 127.0.0.1 -P8066
5.    首先做好数据库主从复制
6.    寻找一台新的主机做mycat
7.    修改server配置文件
vi /app/mycat/conf/server.xml 
        <user name="root" defaultAccount="true">
                <property name="password">123456</property>
                <property name="schemas">youyou</property>
        </user>
设置用户名,密码和登录mycat可见的虚拟库。
        <user name="user">
                <property name="password">user</property>
                <property name="schemas">youyou</property>
                <property name="readOnly">true</property>
        </user>
8.    修改schema.xml配置文件
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
 
        <schema name="youyou" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">                                                                                                       
        </schema>
# 这里的youyou对应server的youyou 代表虚拟库
        <dataNode name="dn1" dataHost="localhost1" database="hellodb" />
# 这里的hellodb 代表后端真实库,hellodb
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="hostM1" url="192.168.19.10:3306" user="root" password="xiapi">
                <readHost host="hostS2" url="192.168.19.12:3306" user="root" password="xiapi" />
                </writeHost>
        </dataHost>
</mycat:schema>
# blance=1代表读写分离,记得在真实库中设置能访问的账号。
9.    如果加入两台从服务器,当做读,会随机调度,如果停掉一个从,短暂的会有一部分查询失败,然后切换到另外一台上,但是如果这台恢复的话,mycat是不会总动加入进去的。
MySQL [youyou]> select * from students ;
ERROR 1184 (HY000): java.net.ConnectException: Connection refused
MySQL [youyou]> select * from students ;
+-------+---------------+-----+--------+---------+-----------+
| StuID | Name          | Age | Gender | ClassID | TeacherID |
+-------+---------------+-----+--------+---------+-----------+
|     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
|     2 | Shi Potian    |  22 | M      |       1 |         7 |
|     3 | Xie Yanke     |  53 | M      |       2 |        16 |
10.    Mycat 主要配置文件说明
server.xml
存放Mycat软件本身相关的配置文件,比如:连接Mycat的用户,密码,数据库名称等
server.xml文件中配置的参数解释说明:
参数            说明
user            用户配置节点
name          客户端登录MyCAT的用户名,也就是客户端用来连接Mycat的用户名。
password    客户端登录MyCAT的密码
schemas       数据库名,这里会和schema.xml中的配置关联,多个用逗号分开,例如:db1,db2
privileges    配置用户针对表的增删改查的权限
readOnly      mycat逻辑库所具有的权限。true为只读,false为读写都有,默认为false
注意:
server.xml文件里登录mycat的用户名和密码可以任意定义,这个账号和密码是为客户机登录
mycat时使用的账号信息
逻辑库名(如上面的TESTDBt,也就是登录mycat后显示的库名,切换这个库之后,显示的就是代
理的真实mysql数据库的表)要在schema.xml里面也定义,否则会导致mycat服务启动失败!
这里只定义了一个标签,所以把多余的都注释了。如果定义多个标签,即设置多个连接mycat的用
户名和密码,那么就需要在schema.xml文件中定义多个对应的库!
schema.xml
是最主要的配置项,此文件关联mysql读写分离策略,读写分离、分库分表策略、分片节点都是在此文
件中配置的.MyCat作为中间件,它只是一个代理,本身并不进行数据存储,需要连接后端的MySQL物
理服务器,此文件就是用来连接MySQL服务器的
schema.xml文件中配置的参数解释说明:
参数            说明
schema         数据库设置,此数据库为逻辑数据库,name与server.xml中schema对应
dataNode       分片信息,也就是分库相关配置
dataHost       物理数据库,真正存储数据的数据库
配置说明
name属性唯一标识dataHost标签,供上层的标签使用。
maxCon属性指定每个读写实例连接池的最大连接。也就是说,标签内嵌套的writeHost、readHost标
签都会使用这个属性的值来实例化出连接池的最大连接数
minCon属性指定每个读写实例连接池的最小连接,初始化连接池的大小
每个节点的属性逐一说明
schema:
属性                        说明
name                
逻辑数据库名,与server.xml中的schema对应
checkSQLschema     数据库前缀相关设置,这里为false
sqlMaxLimit         select 时默认的limit,避免查询全表
table
属性                说明
name               表名,物理数据库中表名
dataNode       表存储到哪些节点,多个节点用逗号分隔。节点为下文dataNode设置的name
primaryKey     主键字段名,自动生成主键时需要设置
autoIncrement      是否自增
rule               分片规则名,具体规则下文rule详细介绍
dataNode
属性             说明
name               节点名,与table中dataNode对应
datahost       物理数据库名,与datahost中name对应
database       物理数据库中数据库名
dataHost
属性             说明
name               物理数据库名,与dataNode中dataHost对应
balance            均衡负载的方式
writeType      写入方式
dbType             数据库类型
heartbeat      心跳检测语句,注意语句结尾的分号要加
schema.xml文件中有三点需要注意:balance="1",writeType="0" ,switchType="1" 
schema.xml中的balance的取值决定了负载均衡对非事务内的读操作的处理。balance 属性负载均衡类
型,目前的取值有 4 种:
balance="0":      不开启读写分离机制,所有读操作都发送到当前可用的writeHost 上,即读请求仅发送
到writeHost上
balance="1":      读请求随机分发到当前writeHost对应的readHost和standby的writeHost上。即全部
的readHost与stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1 ->S1 
, M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1, S2 都参与 select 语句的负载均衡
balance="2":      读请求随机分发到当前dataHost内所有的writeHost和readHost上。即所有读操作都
随机的在writeHost、 readhost 上分发
balance="3":      读请求随机分发到当前writeHost对应的readHost上。即所有读请求随机的分发到
wiriterHost 对应的 readhost 执行, writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本
有,1.3 没有
 
writeHost和readHost 标签
这两个标签都指定后端数据库的相关配置给mycat,用于实例化后端连接池。
唯一不同的是:writeHost指定写实例、readHost指定读实例,组着这些读写实例来满足系统的要求。
在一个dataHost内可以定义多个writeHost和readHost。但是,如果writeHost指定的后端数据库宕
机,那么这个writeHost绑定的所有readHost都将不可用。
另一方面,由于这个writeHost宕机系统会自动的检测到,并切换到备用的writeHost上去
注意:
Mycat主从分离只是在读的时候做了处理,写入数据的时候,只会写入到writehost,需要通过mycat的
主从复制将数据复制到readhost
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值