mycat的安装与配置

本文档详细介绍了Mycat的安装配置步骤,包括解压、配置文件修改、服务启动和测试。同时,针对MySQL8的加密规则变化,提供了修改Mycat配置以实现兼容的方法,包括在my.cnf中设置默认加密插件、更新schema.xml和server.xml配置,以及在登录时指定加密方式。

一、部分理财
  可以解决流行数据库多节点、主从结构、读写分离 问题
  
二、下载与安装
1.解压 tar -xzvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
2.修改配置文件
vi /root/mycat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License"); 
    - you may not use this file except in compliance with the License. - You 
    may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 
    - - Unless required by applicable law or agreed to in writing, software - 
    distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT 
    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the 
    License for the specific language governing permissions and - limitations 
    under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
    <system>
        <!-- 默认字符集,注意:此字符集一定要和mysql设置的字符集一致-->
        <property name="charset">utf8</property>
        <property name="nonePasswordLogin">0</property>
        <property name="defaultSqlParser">druidparser</property>
        <property name="useHandshakeV10">1</property>
        <property name="mutiNodeLimitType">1</property>
        <property name="serverPort">8066</property>
        <property name="managerPort">9066</property>
    </system>
    
    <!-- 定义登录mycat对的用户权限 -->
    <user name="root" defaultAccount="true">
        <property name="password">yehaver</property>
        <!-- 若要访问TESTDB 必须现在server.xml 中定义,否则无法访问TESTDB-->
        <property name="schemas">mycat_db1</property>
        <!-- 配置是否允许只读 -->
        <property name="readOnly">false</property>
        <!-- 定义限制前端整体的连接数,如果其值为0,或者不设置,则表示不限制连接数量 -->
        <property name="benchmark">111</property>
    </user>

    <user name="mycat">
        <property name="password">yehaver</property>
        <property name="schemas">mycat_db1</property>
        <!--privileges标签为操作权限设置 check为是否启用下面定义的操作权限 -->    
        <privileges check="true">
            <!--指定只能访问db1逻辑库,dml为该用户所拥有的操作权限,
            数字按顺序分别代表insert,update,select,delete ,1为拥有权限,0为没有权限-->
            <schema name="mycat_db1" dml="0110" >
                <!--表级DML权限设置,dml为指定表的操作权限,
                未指定dml的其他表,默认和逻辑库的dml权限保持一致(即上行的dml)-->
                <table name="t_test01" dml="1110"></table>
                <table name="t_test02" dml="1111"></table>
            </schema>
        </privileges>
    </user>
    
</mycat:server>

vi /root/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <!--name为逻辑库的名字,逻辑库的名字与物理数据库的名字不一定相同,也有可能一个逻辑库对应多个物理数据库。-->
        <!--sqlMaxLimit为限制返回结果集的行数,-1表示关闭限制,
        注意:server.xml中配置的sqlMaxLimit为整个mycat的默认值,
         这里只是这个逻辑库的限制,如果查询时没有加limit,
         则默认给该查询加上此限制,优先取此逻辑库sqlMaxLimit的限制。-->
        <!--checkSQLschema为判断是否检查发送给mycat的sql是否含与数据库名,
        false为不含库名,true含库名(到mycat时会把库名取掉)-->
        <schema name="mycat_db1" checkSQLschema="true" sqlMaxLimit="100">
                <!--name为逻辑表的名字,必须与物理数据库表名相同,并且此名字是唯一的 ,
                primaryKey为逻辑表的主键,必须与物理表中的主键名相同,
                dataNode为该表所在的物理数据库节点,值为下面定义的dataNode标签值,
                这里写的顺序即为节点的顺序,下面的顺序即为0,1,2
                rule为指定分片规则,即rule.xml中的tableRule,如果不用分片则rule这个属性不用定义-->
                <table name="t_test01,t_test02,t_my_test" dataNode="mycat_dn1" rule="mod-long" />
        </schema>

        <!--dataNode标签为定义逻辑表存储的物理数据库,name为定义数据节点的名称,唯一不可重复,
         dataHost为主机组的名称,即下面定义的dataHost,主机组不是一台数据库,
         而是具有相同数据的多台数据库的集群,database为物理数据库名称-->
        <dataNode name="mycat_dn1" dataHost="my_dh1" database="test" />
      
          <!--dataHost标签为定义物理数据库主机信息,并且可以定义一组数据库集群信息,一般为主从复制集群
          name为这一组数据库主机的名称,maxCon和minCon为定义数据库连接池的大小,具体是指mycat和后端数据库的连接,
          maxCon为mycat连接到数据库的最大连接数,minCon为mycat连接到数据库的最小连接数(即初始化连接数)-->
          <!--balance主要和读写分离和负载均衡相关,取值解释如下:
          0:表示不开启读写分离,即所有的请求都会在主上执行,适合只有一个数据库服务的和对读写延迟比较敏感的
          1:在多主多从情况下,第二个及以下的主数据库(第二个writeHost及以下的writeHost)
             与所有的从数据库(所有的readHost),都对select进行负载均衡
          2:所有的主数据库和所有的从数据库都对select进行负载均衡,适合写操作压力不大的情况
          3:所有的从数据库对select进行负载均衡,一般一主多从集群都用这个-->
          <!--writeType表示对写操作的处理方式,取值解释如下:
          0:表示对第一台主数据库进行写操作,当第一台主数据挂了,会对第二台主数据库进行写操作
          1:表示随机写入所有的主数据库,一般随机会有问题,所以不建议配置为1 -->
          <!--dbType为数据库类型,现在指定的是mysql,dbDriver为所使用的驱动程序,native表示使用mysql原生的驱动程序
           switchType表示写数据库如何进行高可用的切换,取值解释如下:
           1:当第一个主数据库不可写时,会自动切换到第二个主数据库
           -1:关闭自动切换功能,适用于一主多从集群机构,-->
        <dataHost name="my_dh1" maxCon="100" minCon="4" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100">
                <!--心跳检测,检查是否能正常提供服务 -->
                <heartbeat>select user()</heartbeat>
                
                <!--writeHost为主数据库(master),主要负责写操作,
                url为数据库ip和端口,user和password为数据库中真实存在的用户和密码 -->
                <writeHost host="w1" url="192.168.100.101:3306" user="root" password="yehaver">
                        <!--readHost为从数据库(slave),主要负责读操作-->
                        <readHost host="r1" url="192.168.100.102:3306" user="root" password="yehaver"/>
                </writeHost>
        </dataHost>
        
</mycat:schema>

vi /root/mycat/conf/rule.xml
        <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
                <!-- how many data nodes 修改mod-long的count值为1,暂时只有一个节点-->
                <property name="count">1</property>   
        </function>

vi /root/mycat/conf/log4j2.xml   #一般此文件不用修改
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d [%-5p][%t] %m %throwable{full} (%C:%F:%L) %n"/>
        </Console>

        <RollingFile name="RollingFile" fileName="${sys:MYCAT_HOME}/logs/mycat.log"
                     filePattern="${sys:MYCAT_HOME}/logs/$${date:yyyy-MM}/mycat-%d{MM-dd}-%i.log.gz">
            <PatternLayout>
                <!--Pattern标签为配置Mycat日志格式 -->
                <!--%d表示日志的时间格式,{}中的内容表示具体日期格式 -->
                <!--%5p表示日志的输出级别,5表示固定输出5个字符,不足5个字符会右对齐 -->
                <!--%t表示记录线程名称 -->
                <!--%m表示输出代码中指定的消息 -->
                <!--%n表示输出一个回车换行符 -->
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] (%l) - %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <OnStartupTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="250 MB"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
   
        <!--level为配置日志的输出级别-->
        <!--日志的输出级别有8种,分别是:all、trace、debug、info、warn、error、fatal、off
        这8种级别按照此顺序,输出日志信息依次减小,all为输出所有信息,off为关闭,即不输出-->        
        <asyncRoot level="info" includeLocation="true">
            <AppenderRef ref="RollingFile"/>
        </asyncRoot>
    </Loggers>
</Configuration>

3.测试服务是否可以启动
[root@master mycat]# /root/mycat/bin/mycat console
Running Mycat-server...
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 1    |
jvm 1    | MyCAT Server startup successfully. see logs in logs/mycat.log

4.真正启动
sed -i 's/\r$//' /root/mycat/bin/startup_nowrap.sh  #脚本有问题,使用cat  -A  filename 可以看到每行的结尾后面多出了一个^M。此命令替换^M
/root/mycat/bin/startup_nowrap.sh

5.查看进程
[root@master bin]# jps
2536 Jps
2510 MycatStartup

6.停止服务
kill -9 2510

7.防火墙增加mycat端口
[root@master bin]# firewall-cmd --permanent --add-port=8066/tcp
success
[root@master bin]# firewall-cmd --reload
success

8.远程windows登录,然后dml语句操作主库,select操作从库
mysql -umycat -p -P8066 -h 192.168.100.101 --default-auth=mysql_native_password


问题描述
mysql8.0 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
1.修改 /etc/my.cnf增加如下,并重启
default_authentication_plugin=mysql_native_password
2.修改 /root/mycat/conf/schema.xml
checkSQLschema="true"
3.修改 /root/mycat/conf/server.xml 增加如下内容,兼容高版本
<property name="useHandshakeV10">1</property> 
4.登陆时增加 --default-auth=mysql_native_password 来指定加密方式
mysql -uroot -p -P8066 -h 192.168.100.101 --default-auth=mysql_native_password  

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值