zoukankan      html  css  js  c++  java
  • Mycat高可用解决方案三(读写分离)

    Mycat高可用解决方案三(读写分离)

    一、系统部署规划

    名称

    IP

    主机名称

    配置

    Mycat主机01

    192.168.199.112

    mycat01

    2/2G

    Mysql主节点

    192.168.199.110

    mysql01

    2/2G

    Mysql从节点

    192.168.199.111

    mysql02

    2/2G

    二、软件版本:

    进入下载列表地址:http://dl.mycat.io

    三、mycat 读写分离-架构图

    MyCat 介绍 ( MyCat 官网:http://www.mycat.io/

    MyCat 的读写分离是基于后端 MySQL 集群的主从同步来实现的,而 MyCat 只是 提供语句的分发功能。

    MyCat1.4 开始支持 MySQL 主从复制状态绑定的读写分离机制,让读更加安全可靠。

     四、MyCat 的安装

    mycat主机配置:192.168.199.112

    1、配置网络
    # vi /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE=eth0
    TYPE=Ethernet
    ONBOOT=yes
    NM_CONTROLLED=no
    BOOTPROTO=static
    #HWADDR=00:50:56:a1:12:53
    IPADDR=192.168.199.112
    GATEWAY=192.168.199.2
    NETMASK=255.255.255.0
    DNS1=8.8.8.8
    DNS2=192.168.199.2

    2、设置 MyCat 的主机名和 IP 与主机名的映射
    # vi /etc/sysconfig/network

    NETWORKING=yes
    HOSTNAME=mycat-01

    # vi /etc/hosts

    127.0.0.1 localhost
    127.0
    .0.1 mycat-01 192.168.199.112 mycat-01 192.168.199.110 mysql-01 192.168.199.111 mysql-02

    3、因为 MyCat 是用 Java 开发的,因此 MyCat 运行需要安装 JDK(准确来说是 JRE 就够了),并且需要 JDK1.7 或以上版本

    卸载自带的openjdk版本:

    [root@mycat-01 jdk1.7.0_79]# rpm -qa |grep java
    tzdata-java-2018g-1.el6.noarch
    java-1.7.0-openjdk-1.7.0.201-2.6.16.0.el6_10.x86_64
    [root@mycat-01 jdk1.7.0_79]# rpm -e --nodeps tzdata-java-2018g-1.el6.noarch
    [root@mycat-01 jdk1.7.0_79]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.201-2.6.16.0.el6_10.x86_64
    [root@mycat-01 jdk1.7.0_79]# 

    安装jdk1.7

    mkdir -p /java
    wget http://dl.mycat.io/jdk-7u79-linux-x64.tar.gz
    mkdir -p /usr/local/java/
    tar -zxvf jdk-7u79-linux-x64.tar.gz -C /usr/local/java/

    配置JDK环境变量:

    # vi /etc/profile

    ## java env
    export JAVA_HOME=/usr/local/java/jdk1.7.0_79
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    # source /etc/profile
    # java -version
    4、创建 mycat 用户并设置密码(密码:mycat)
    # useradd mycat

    # passwd mycat

    # cd /usr/local/

    # chown mycat:mycat -R mycat/

    其他相关命令:

    1、创建用户:
    在创建用户时,需要为新建用户指定一用户组,如果不指定其用户所属的工作组,自动会生成一个与用户名同名的工作组。
    
    创建用户 mycat 的时候指定其所属工作组mycats,例:useradd –g mycats mycat
    
    2、使用 passwd 命令为新建用户设置密码(密码:mycat)
    例:passwd mycat
    注意:没有设置密码的用户不能使用。 
    
    3、命令 usermod 修改用户账户
    例:将用户 mycat 的登录名改为 my1,
    usermod –l my1 mycat 
    
    例:将用户 mycat 加入到 users组中,
    usermod –g mycats mycat 
    
    例:将用户 mycat 目录改为/mycats/my1
    usermod –d /mycats/my1 mycat 
    
    4、使用命令 userdel 删除用户账户
    
    例:删除用户mycat
    userdel mycat
    
    例:删除用户 mycat2,同时删除他的工作目录
    userdel –r mycat2

    自己总结的另外一种方式:
     1、执行命令找到用户目录并删除:
     find / -name mycat
     rm -rf /home/mycat 和可怀疑的文件目录
     
     2、执行命令删除用户:
     cat /etc/passwd
     vi /etc/passwd
     连击dd删除mycat用户
     
     3、执行命令删除用户组:
     cat /etc/group
     vi /etc/group
     连击dd删除mycat用户


    1、与用户(user)和用户组(group)相关的配置文件;

    1)与用户(user)相关的配置文件;
    /etc/passwd 注:用户(user)的配置文件;
    /etc/shadow 注:用户(user)影子口令文件;

    2)与用户组(group)相关的配置文件;
    /etc/group 注:用户组(group)配置文件;
    /etc/gshadow 注:用户组(group)的影子文件;

    2、管理用户(user)和用户组(group)的相关工具或命令;

    1)管理用户(user)的工具或命令;
     
    useradd 注:添加用户
    adduser 注:添加用户
    passwd 注:为用户设置密码
    usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
    pwcov 注:同步用户从/etc/passwd 到/etc/shadow
    pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
    pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
    finger 注:查看用户信息工具 id 注:查看用户的UID、GID及所归属的用户组 chfn 注:更改用户信息工具
    su 注:用户切换工具 sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,
    但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
    visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
    sudoedit 注:和sudo 功能差不多;

    2、管理用户组(group)的工具或命令;
    groupadd 注:添加用户组;
    groupdel 注:删除用户组;
    groupmod 注:修改用户组信息
    groups 注:显示用户所属的用户组
    grpck grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
    grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group,然后删除gshadow文件;

    5、上传安装包 Mycat-server-1.6.5-release-20180122220033-linux.tar.gz MyCat 服务器中的/home/mycat 目录,

    并解压并移动到 /usr/local/mycat 目录

    或者

    直接下载安装包:

    wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
    tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/
    cd /usr/local/mycat/

    设置 MyCat 的环境变量
    # vi /etc/profile

    ## mycat env
    export MYCAT_HOME=/usr/local/mycat
    export PATH=$PATH:$MYCAT_HOME/bin
    # source /etc/profile

     

     五、配置MyCat

    简单的读写分离(schema.xml和server.xml),只有在特殊规则需要配置rule.xml

    1、在配置 MyCat 前,请确认 MySQL 的主从复制安装配置已完成并正常运行。MySQL 主从数据的同步在MySQL 中配置,MyCat 不负责数据同步的问题。

    补充:

    (1) MySQL 主从复制配置中,如果涉及到函数或存储过程的同步复制,需要在/etc/my.cnf 中的[mysqld]段中增加配置 log_bin_trust_function_creators=true ,

    或在客户端中设置 set global log_bin_trust_function_creators = 1;

    (2) 如果要做读写分离下的主从切换,那么从节点也有可能会变为写节点,因此从节点就不能设置为只读 read_only=1 

    (3) Linux 版本的 MySQL,需要设置为 MySQL 大小写不敏感,否则可能会发生找不到表的问题。可在/etc/my.cnf [mysqld]段中增加 lower_case_table_names=1 

    2、配置 MyCat schema.xml

    schema.xml MyCat 最重要的配置文件之一,用于设置 MyCat 的逻辑库、表、数据节点、dataHost 等内容。

    [mycat@mycat-01 ~]# cd /usr/local/mycat/conf/

    [root@mycat-01 conf]#vi schema.xml

    参数说明:编写习惯:从下往上,dataHost > dataNode > schema(table)

    本次配置:(dtd新老版本不一样,这里要注意)

    老版本: 新版本:
    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://org.opencloudb/">
    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    
    
    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    
        <!-- 3、定义MyCat的逻辑库,逻辑库的概念与MySQL中的 database 概念相同 -->
        <!-- 方式一:非读写分离 schema -->
        <!-- <schema name="wr-off-schema01" checkSQLschema="false" sqlMaxLimit="100" dataNode="wr-off-dn01"></schema> -->
        <!-- <schema name="wr-off-schema02" checkSQLschema="false" sqlMaxLimit="100" dataNode="wr-off-dn02"></schema> -->
        
    <!-- 方式二:读写分离 schema --> <schema name="wr-on-schema01" checkSQLschema="false" sqlMaxLimit="100" dataNode="wr-on-dn01"></schema> <schema name="wr-on-schema02" checkSQLschema="false" sqlMaxLimit="100" dataNode="wr-on-dn02"></schema> <!-- 2、定义MyCat的数据节点 --> <!-- 方式一:非读写分离 dataNode --> <!-- <dataNode name="wr-off-dn01" dataHost="dtHost01" database="test01" /> --> <!-- <dataNode name="wr-off-dn02" dataHost="dtHost01" database="test02" /> -->
    <!-- 方式二:读写分离 dataNode -->
    <dataNode name="wr-on-dn01" dataHost="dtHost02" database="test01" /> <dataNode name="wr-on-dn02" dataHost="dtHost02" database="test02" /> <!-- 注意:schema中的每一个dataHost中的host属性值必须唯一,否则会出现主从在所有dataHost中全部切换的现象。-->
    <!-- 1、定义数据的物理主机 --> <!-- 方式一:非读写分离 dataHost --> <!-- 定义数据主机dtHost01,只连接到MySQL读写分离集群中的Master节点,不使用MyCat托管MySQL主从切换 --> <!-- <dataHost name="dtHost01" maxCon="500" minCon="20" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.199.110:3306" user="root" password="123456" /> </dataHost> -->
    <!-- 方式二:使用MyCat托管MySQL主从切换 --> <!-- 定义数据主机dtHost02,连接到MySQL读写分离集群,并配置了读写分离和主从切换 --> <dataHost name="dtHost02" maxCon="500" minCon="20" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100"> <!-- 通过show slave status检测主从状态, 当主宕机以后,发生切换,从变为主,原来的主变为从,这时候show slave status就会发生错误,因为原来的主没有开启slave, 不建议直接使用switch操作,而是在DB中做主从对调。 --> <heartbeat>show slave status</heartbeat> <writeHost host="hostM2" url="192.168.199.110:3306" user="root" password="123456" />
    <readHost host="hostS2" url="192.168.199.111:3306" user="root" password="123456" />
    </writeHost> <writeHost host="hostS2" url="192.168.199.111:3306" user="root" password="123456" /> </dataHost> <!-- 参数balance决定了哪些MySQL服务器参与到读SQL的负载均衡中 --> <!-- balance="0",为不开启读写分离,所有读操作都发送到当前可用的writeHost上--> <!-- balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡--> <!-- balance="2",所有读操作都随机的在writeHost、readHost上分发--> <!-- MyCat1.4版本中,若想支持MySQL一主一从的标准配置,并且在主节点宕机的情况下,从节点还能读取数据, 则需要在MyCat里配置为两个writeHost并设置balance="1" --> <!-- writeType="0",所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost--> <!-- writeType="1",仅仅对于galera for mysql集群这种多主多节点都能写入的集群起效,此时Mycat会随机选择一个writeHost并写入数据, 对于非galera for mysql集群,请不要配置writeType=1,会导致数据库不一致的严重问题 --> </mycat:schema>

    MyCat1.4 开始支持 MySQL 主从复制状态绑定的读写分离机制,让读更加安全可靠,配置如下:

    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主从复制时延,当 Seconds_Behind_Master大于slaveThreshold 时,读写分离筛选器会过滤掉此 Slave 机器,防止读到很久之前的旧数据,而当主节点宕机后,切换逻辑会检查Slave 上的Seconds_Behind_Master 是否为 0,为 0 则表示主从同步,可以安全切换,否则不会切换。

     3、配置 server.xml

    server.xml 主要用于设置系统变量、管理用户、设置用户权限等。
    [root@mycat-01 conf]# vi server.xml

    老版本: 新版本:
    
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mycat:server SYSTEM "server.dtd">
    <mycat:server xmlns:mycat="http://org.opencloudb/">
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mycat:server SYSTEM "server.dtd">
    <mycat:server xmlns:mycat="http://io.mycat/">
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mycat:server SYSTEM "server.dtd">
    <mycat:server xmlns:mycat="http://io.mycat/">
        <system>
        <property name="defaultSqlParser">druidparser</property>
        <property name="charset">utf8mb4</property>
          <!--  <property name="useCompression">1</property>--> 
          <!--1为开启mysql压缩协议-->
        <!-- <property name="processorBufferChunk">40960</property> -->
        <!-- 
        <property name="processors">1</property> 
        <property name="processorExecutor">32</property> 
         -->
            <!--默认是65535 64K 用于sql解析时最大文本长度 -->
            <!--<property name="maxStringLiteralLength">65535</property>-->
            <!--<property name="sequnceHandlerType">0</property>-->
            <!--<property name="backSocketNoDelay">1</property>-->
            <!--<property name="frontSocketNoDelay">1</property>-->
            <!--<property name="processorExecutor">16</property>-->
            <!--<property name="mutiNodeLimitType">1</property> -->  <!-- 0:开启小数量级(默认);1:开启亿级数据排序-->
            <!--<property name="mutiNodePatchSize">100</property> --> <!-- 亿级数量排序批量 -->
            <!--
                <property name="processors">32</property> 
                <property name="processorExecutor">32</property> 
                <property name="serverPort">8066</property> 
                <property name="managerPort">9066</property> 
                <property name="idleTimeout">300000</property> 
                <property name="bindIp">0.0.0.0</property> 
                <property name="frontWriteQueueSize">4096</property> 
                <property name="processors">32</property> -->
        </system>    
    
        <!-- 用户1,对应的MyCat逻辑库连接到的数据节点对应的主机为MySQL主从复制配置中的Master节点,
             没实现读写分离,读写都在该Master节点中进行  -->
        <!--
        <user name="mycat01">
            <property name="password">123456</property>
            <property name="schemas">wr-off-schema01,wr-off-schema02</property>
        </user>
        -->
        
        <!-- 用户2,对应的MyCat逻辑库连接到的数据节点对应的主机为主从复制集群,并通过MyCat实现了读写分离 -->
        <user name="mycat02">
            <property name="password">123456</property>
            <property name="schemas">wr-on-schema01,wr-on-schema02</property>
        </user>
                                
        <!-- 用户3,只读权限-->
        <user name="mycat03">
            <property name="password">123456</property>
            <property name="schemas">wr-on-schema01,wr-on-schema02</property>
            <property name="readOnly">true</property>
        </user>
    
    </mycat:server>

     mycat用户密码加密:

    为root用户生成加密后的密码:cd /usr/local/mycat/lib/
    java -cp
    Mycat-server-1.6.5-release.jar io.mycat.util.DecryptUtil 0:root:12345

    <property name = "usingDecrypt">1</property>
    <property name = "password">hpYb3oDTK+R9M1d6jHkQZoymhRwEM8zq47km/5/26A5k8B9LpraNFbaeZFBregpgoy24TslumO8aWzieL+u84g==</property>

    4、防火墙中打开 8066 和 9066 端口

    MyCat 的默认数据端口为 8066,mycat 通过这个端口接收数据库客户端的访问请求。
    管理端口为 9066,用来接收 mycat 监控命令、查询 mycat 运行状况、重新加载配置文件等。
    [root@mycat-01 mycat]# vi /etc/sysconfig/iptables
    增加:

    ## MyCat
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 8066 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 9066 -j ACCEPT

    重启防火墙:
    [root@mycat-01 mycat]# service iptables restart

    5、修改 log 日志级别为 debug

    以便通过日志确认基于 MyCat 的 MySQL 数据库集群读写分离的数据操作状态(可以在正式上生产前改成 info 级别)
    [mycat@mycat-01 conf]$ vi /usr/local/mycat/conf/log4j.xml

     

    6、启动 MyCat

    [mycat@mycat-01 bin]$ cd /usr/local/mycat/bin/
    (1) 控制台启动,这种启动方式在控制台关闭后,MyCat 服务也将关闭,适合调试使用:
    [mycat@mycat-01 bin]$ ./mycat console
    (2) 可以采用以下后台启动的方式:
    [mycat@mycat-01 bin]$ ./mycat start
    Starting Mycat-server...
    (对应的,重启: mycat restart , 关闭: mycat stop )

     检查启动日志:tail -f /usr/local/mycat/logs/wrapper.log

    或者 通过jps -m命令查看:

    [mycat@mycat-01 bin]$ jps
    2052 Jps
    1980 WrapperSimpleApp
    [mycat@mycat-01 bin]$ jps -m
    1980 WrapperSimpleApp io.mycat.MycatStartup start
    2062 Jps -m
    [mycat@mycat-01 bin]$

    7、MyCat 连接测试

    (1)如果本地 Windows 安装有 MySQL,可以使用已有的 mysql 客户端远程操作 MyCat

    mysql -umycat02 -p123456 -h 192.168.199.112 -P8066

    1:如何查看MySQL相关的编码格式默认值

    在cmd中,输入指令"mysql –u root –p”以root身份连接mysql数据库

    image

    然后有两种方式查看编码格式:

    1)show variables like ‘character%’;

    image

    2)show variables like ‘collation%’;

    image

    2:既然可以用命令查看,当然也可以用命令修改了

    稍微解释一下:

    character_set_client:客户端编码方式;

    character_set_connection:建立连接时使用的编码;

    character_set_database:数据库的编码;

    character_set_result:结果集的编码;

    character_set_server:数据库服务器的编码;

    I:执行命令:set NAMES ‘utf8’;

        该命令等同于执行如下三条命令:

            SET character_set_client = utf8; 
            SET character_set_results = utf8; 
            SET character_set_connection = utf8;

        但是,该设置的编码格式,只对当前连接(窗口)有效,即用另外一个Dos窗口再连接mysql数据库进行查看,编码格式是没有改变的。

    II:数据库、表、字段,均可以在创建时设置其默认编码格式,或者在其后进行修改

        1)create database dbname character set utf8;

            alter database dbname character set utf8;

        2)create table tname(…) default charset=utf8;

            alter table type character set utf8;

        3)create table tname(flag_deleted enum('Y','N') character set utf8 not null default 'N')

            alter table type modify type_name varchar(50) character set utf8;

    3:比较好的,也是建议的,却是最后压轴的磨磨唧唧登场的方法,如下... ...

    修改MySQL的配置文件my.ini。

    在Window系统下,MySQL的配置文件是在MySQL安装目录下的my.ini文件,但是可能安装完成后,在目录下木有my.ini文件,而是如下这些文件:

    image

    这时候可以去网上下载一个my.ini文件然后放到目录下即可,或者在C:ProgramDataMySQLMySQL Installer目录下有:

    image

    选择其中一个版本的my-template-x.x.ini改名成my.ini,放到安装目录下也可以。至于细节再在my.ini中具体配置即可。

    my.ini配置文件修改细节:

    I:在[mysqld]标签下加

    default-character-set=utf8

    character_set_server=utf8

    lower_case_table_names=1      //表名不区分大小写(此与编码无关)

    II:在[mysql]标签下加

    default-character-set=utf8

    III:在[mysql.server]标签下加

    default-character-set=utf8

    IV:在[mysql_safe]标签下加

    default-character-set=utf8

    V:在[client]标签下加

    default-character-set=utf8

    4:在Dos窗口中执行

    net stop mysqlservice    //关闭mysql服务

    net stop mysqlservice    //启动mysql服务

    然后在查看一下mysql默认的编码格式,是否改变成功!(最后绝招你可以重装mysql,然后在安装的那个步骤进行设置)

    附注:

    1:连接mysql数据库时的字符串,设计编码类型的时候如下所示

    jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=utf-8

    2:mysql支持哪些编码格式,查看%MySQL%sharecharsetsIndex.xml即可

    3:mysql的配置文件加载顺序

    c:/windows/my.cnf-->c:/windows/my.ini-->c:/my.cnf-->c:/my.ini-->$installdir/my.ini(%MySQL_HOME%/my.ini)-->defaults-extra-file=path

    (2)如果为了方便,需要在 MyCat 主机上对 MyCat 进行操作(把 MyCat 当是本地 MySQL 来操作),可以在 MyCat 节点主机上安装 MySQL 客户端:
    [mycat@mycat-01 bin]$ su root
    [root@mycat-01 bin]# yum install mysql -y
    使用安装好的 mysql 客户端登录 MyCat
    [mycat@mycat-01 bin]$ mysql -umycat02 -p123456 -h192.168.199.112 -P8066

    (3)解决客户端查询乱码:

    如果使用mycat主机上安装了mysql客户端进行查询出现乱码,则需要设置客户端的编码,

    在/etc/my.cnf(windows系统 为$MYSQL_HOME/my.ini)中的[client],设置客户端的默认编码为utf8。

    [root@mycat-01 mycat]# vi /etc/my.cnf
    增加:

    [client]
    default-character-set=utf8

    保存后再查询,乱码问题解决,如

     

    (4) 使用第三方 MySQL 管理客户端连接 MyCat 测试(navicat 支持,MySQL-Front 兼容性不太好),以 navicat 为例:

    8、读写分离测试

    (1) 监听 MyCat 日志
    [mycat@mycat-01 ~]$ cd /usr/local/mycat/logs/
    [mycat@mycat-01 logs]$ tail -f mycat.log

    滚动监听主从节点,从节点监听两次(是因为从节点配置了主从切换和读写分离,本身是写节点,主机宕机又能作为主节点)

     (2) 读测试
    [mycat@mycat-01 logs] mysql -umycat02 -p123456 -h192.168.199.112 -P8066
    mysql> show databases;

    mysql> use wr-on-schema01;

    mysql> show tables;

    mysql> select * from login_user;

     

    日志变化:

    多次执行select * from login_user 语句,MyCat 打印出来的日志信息显示读操作请求都是路由到 Slave 节点(192.168.199.111)。

     (2) 写测试

    mysql> insert into login_user (userName, pwd) values('曹操', '123456');

     

    执行上面的新增插入语句后,此时对应的 MyCat 日志信息如下:

     多次执行以上插入语句,发现新增数据都是从 Master 节点(192.168.199.110)插进入的,并且 Slave 节点(192.168.199.111)通过 Binlog 同步了 Master 节点中的数据。

     

     综上,基于 MyCat 的读写分离集群配置成功。

     

     ==================================================================

     常见问题:10038错误码

    10038错误码,一般是服务端开启了防火墙
    如果重启服务器,可能把临时的防火墙重置为开启状态
    解决办法:
    1、配置防火墙不拦截:修改/etc/sysconfig/iptables 文件,添加以下内容:
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
    2、永久关闭防火墙:chkconfig iptables off

     

  • 相关阅读:
    按指定时间段分组统计
    SQL 截取字符
    SQL日期转换
    CentOS7安装rabbitMQ,并实现浏览器访问
    springdata的jpa配置文件application.xml
    在Ubuntu上安装Hive
    在Ubuntu上安装Spark
    在Ubuntu上安装Hbase
    在Ubuntu上安装hadoop-2.7.7
    springboot整合springdatajpa时jar冲突
  • 原文地址:https://www.cnblogs.com/gaogaoyanjiu/p/10241185.html
Copyright © 2011-2022 走看看