mycat

mycat 是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了 JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行。
结构:三台服务器master-m,master-s,mycat ,并已经做好mysql的一主一从
一、环境准备安装jdk
修改三台的主机名,并互做本地解析(vim /etc/hosts)
将jdk上传到服务器中,也可官网找到下载地址,wget直接下载
tar xzf jdk-8u221-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv jdk1.8.0_221/ java
vim /etc/profile #添加如下内容,设置环境变量,添加如下内容
JAVA_HOME=/usr/local/java
PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
source /etc/profile #使环境变量配置生效
java -version #查看安装的版本
二、安装并配置mycat
wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz #下载mycat包
tar xzvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/
cd /usr/local/mycat/conf #进入mycat配置文件目录修改server.xml和schema.xml ,最好改前先备份
vim server.xml #定义登录mycat程序的用户及密码和逻辑库。部分文件如下
------------------------------------------------------里面解释中文为本人理解,真正配置时删掉,-----------------------------------------------------

#在这行之上的内容不动,这里的root为登录mycat程序的用户
Qf@123! #这个为root的密码
testdb #定义逻辑库,名字自定义

            <!-- 表级 DML 权限设置 -->
            <!--            
            <privileges check="false">
                    <schema name="TESTDB" dml="0110" >
                            <table name="tb01" dml="0000"></table>
                            <table name="tb02" dml="1111"></table>
                    </schema>
            </privileges>           
             -->
    </user>
    <!--                          下面<user name="user"> </user>标签 这个为定义另一个登录用户,可像我这样注释掉
    <user name="user">
            <property name="password">user</property>
            <property name="schemas">TESTDB</property>
            <property name="readOnly">true</property>
    </user>
    -->					 与上面<!-- 构成注释

</mycat:server>
------------------------------------vim schema.xml ,配置schema.xml逻辑库和mysql真实库连接--------------------------------------------------------------

<?xml version="1.0"?>

<mycat:schema xmlns:mycat=“http://io.mycat/”>

    <schema name="testdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">   #定义逻辑库连接到的数据节点,黄色部分为要添加
    </schema>
    <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
            /> -->
    <dataNode name="dn1" dataHost="localhost1" database="user" />                               #定义数据节点dn1要连接的真实库名(user),user在mysql上有创建。
    <!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" />
     <dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />
    <dataNode       name="jdbc_dn2" dataHost="jdbchost" database="db2" />
    <dataNode name="jdbc_dn3"       dataHost="jdbchost" database="db3" /> -->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
                      writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
            <heartbeat>select user()</heartbeat>
            <!-- can have multi write hosts -->
            <writeHost host="mysql-m" url="10.20.151.200:3306" user="mycat"
                               password="QianFeng@123!">        #写的数据库信息,mycat用户必须在mysql上创建,并登录方式为%,密码这这里一致,对user库权限为all
                    <!-- can have multi read hosts -->
            <readHost host="mysql-s" url="10.20.151.199:3306" user="mycat" password="QianFeng@123!" />  #读的库的信息,用户也要被创建,有相应权限
            </writeHost>
    </dataHost>

</mycat:schema>
上面黄色部分为修改或添加,这里没有的原schema.xml上有的为删除了,这个只是只适用一主一从
简述原理(个人理解):首先要有个mycat程序登录用户(root)------>逻辑库(server.xml内定义)----->数据节点(schema.xml定义的dn1)----->真实库(user)---->mycat用户(这个用户要在mysql上有并能远程登录mysql,且对你要操作的真实库有相应权限)
上面流程走通才能操作后端真实库

vim wrapper.conf #对jvm进行配置,添加如下内容, wrapper.ping.timeout=120这行内容应该有,在它的附近加另一行就好
wrapper.startup.timeout=300 //超时时间300秒
wrapper.ping.timeout=120
/usr/local/mycat/bin/mycat start #开启mycat
jps #查看mycat是否启动 ,有如下两个内容才算启动成功,多执行几次,要一直有如下内容,或看8066端口
yum install -y mysql #下载mysql或mariad作为mycat程序的客户端

mysql -uroot -h mycat -p’Qf@123!’ -P 8066 #这里用server.xml定义的用户登录mycat程序,然后mycat程序通过schema.xml里定义的配置去登录真实库,执行成功,执行show databases;能看到你定义的逻辑库,就说明读写分离成功。

mysql -umycat -p’QianFeng@123!’ -h mysql-m #这个测试mycat用户能否远程登录真实库
当我们要实际生产中要导入数据到数据库,就要用mycat来的导入 mysql -umycat -p’QianFeng@123!’ -D 库名 < 要导入的表。或者直接到数据库服务器用root本地导入。
当我们做了读写分离,不论是何种语言写的代码,在代码中连接数据库文件中参考下面的写法,因为是通过mycat连接数据库

mysqldb config

mysql_host=‘mycat服务器ip’
mysql_port=8066
mysql_user=‘登录mycat程序的用户默认root’
mysql_password=‘登录mycat程序的用户’
mysql_database=‘逻辑库’

补充schema.xml文件配置小知识:
balance 属性
负载均衡类型,目前的取值有 3 种:

  1. balance=“0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
  2. balance=“1”, 全部的 readHost 与 writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
  3. balance=“2”, 所有读操作都随机的在 writeHost、readhost 上分发。
  4. balance=“3”, 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力, #注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。
    writeType 属性
    负载均衡类型
  5. writeType=“0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切换到还生存的第二个writeHost,重新启动后已切换后的为准.
  6. writeType=“1”,所有写操作都随机的发送到配置的 writeHost,#版本1.5 以后废弃不推荐。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值