zoukankan      html  css  js  c++  java
  • mycat配置分库分表 读写分离 linux系统

    1.下载mycat

    http://www.mycat.io/下找到
    Mycat-server-1.6.6-release 版本发布
    会有几个版本 找到适合自己的版本
    在这前提 首先你要在具体的虚拟机安装数据库 ,并且将各个数据库配置成主从
    如虚拟机40是宿主机配置mycat 41,42,44,45都要安装数据库
    如果是配置安装好好一台虚拟机 可以拷贝替换另一台虚拟机 更改ip地址即可
    在进行主从配置 具体看主从配置
    并且40,42,44,45配置成主从

    将文件下载了 用ssh工具 放在/usr/loclal/src/ 下面
    解压文件

    2.安装mycat

    tar zxvf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz
    然后将解压的复制到 /usr/local/mycat 目录
    cp -r Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz /usr/local/mycat

    3.添加组和用户

    groupadd mycat
    adduser -r -g mycat mycat
    chown -R mycat.mycat /usr/local/mycat //修改mycat目录所属mycat用户

    4.了解mycat和mysql联系

    5.配置mycat文件的conf的server.xml

    我们改的就是两个端口一个是9066 一个就是8066

    还有用户 密码 项目名字

    <user name="root">
    <property name="password">kyd8899</property>
    <property name="schemas">QIWUIOT</property>
    <property name="readOnly">false</property>


    </user>
    1、user标签

    <user name="root">

    <property name="password">kyd8899</property>

    <property name="schemas">QIWUIOT</property>
    </user>
    user 用户配置节点
    —name 登录的用户名,也就是连接Mycat的用户名
    —password 登录的密码,也就是连接Mycat的密码
    —schemas 数据库名,这里会和schema.xml中的配置关联,多个用逗号分开,例如需要这个用户需要管理两个数据库db1,db2,则配置db1,dbs

    2、privileges标签
    对用户的 schema以及表进行精细化的DML权限控制

    <privileges check="false">
    </privileges>
    —check 表示是否开启DML权限检查。默认是关闭。server.dtd文件中 <!ELEMENT privileges (schema)*> 说明可以有多个schema的配置。
    —dml 顺序说明:insert,update,select,delete

    <schema name="db1" dml="0110" >


    </schema>
    db1的权限是update,select。
    tb01的权限是啥都不能干。
    tb02的权限是insert,update,select,delete。
    其他表默认是udpate,select。

    1. system标签
      这个标签内嵌套的所有 property 标签都与系统配置有关。
      <property name="charset">utf8</property>
      字符集
      <property name="processors">1</property>
      处理线程数量,默认是cpu数量。

    <property name="processorBufferChunk">4096</property>
    每次读取留的数量,默认4096。

    <property name="processorBufferPool">409600</property>
    创建共享buffer需要占用的总空间大小。processorBufferChunkprocessors100。

    <property name="processorBufferPoolType">0</property>
    默认为0。0表示DirectByteBufferPool,1表示ByteBufferArena。

    <property name="processorBufferLocalPercent">100</property>
    二级共享buffer是processorBufferPool的百分比,这里设置的是百分比。

    <property name="sequnceHandlerType">100</property>
    全局ID生成方式。(0:为本地文件方式,1:为数据库方式;2:为时间戳序列方式;3:为ZK生成ID;4:为ZK递增ID生成。

    <property name="useCompression">1</property>
    是否开启mysql压缩协议。1为开启,0为关闭,默认关闭。

    <property name="packetHeaderSize">4</property>
    指定 Mysql 协议中的报文头长度。默认 4。

    <property name="maxPacketSize">16M</property>
    指定 Mysql 协议可以携带的数据最大长度。默认 16M。

    <property name="idleTimeout">1800000</property>
    指定连接的空闲超时时间。某连接在发起空闲检查下,发现距离上次使用超过了空闲时间,那么这个连接会被回收,就是被直接的关闭掉。默认 30 分钟,单位毫秒。

    <property name="txIsolation">3</property>
    前端连接的初始化事务隔离级别,只在初始化的时候使用,后续会根据客户端传递过来的属性对后端数据库连接进行同步。默认为 REPEATED_READ,设置值为数字默认 3。
    READ_UNCOMMITTED = 1;
    READ_COMMITTED = 2;
    REPEATED_READ = 3;
    SERIALIZABLE = 4;

    <property name="sqlExecuteTimeout">300</property>
    SQL 执行超时的时间,Mycat 会检查连接上最后一次执行 SQL 的时间,若超过这个时间则会直接关闭这连接。默认时间为 300 秒,单位秒。

    <property name="processorCheckPeriod">1000</property>
    清理 NIOProcessor 上前后端空闲、超时和关闭连接的间隔时间。默认是 1 秒,单
    位毫秒。

    <property name="dataNodeIdleCheckPeriod">300000</property>
    对后端连接进行空闲、超时检查的时间间隔,默认是 300 秒,单位毫秒。

    <property name="dataNodeHeartbeatPeriod">10000</property>
    对后端所有读、写库发起心跳的间隔时间,默认是 10 秒,单位毫秒。

    <property name="bindIp">0.0.0.0</property>
    mycat 服务监听的 IP 地址,默认值为 0.0.0.0。

    <property name="serverPort">8066</property>
    定义 mycat 的使用端口,默认值为 8066。

    这里我们改为3306

    <property name="managerPort">9066</property>
    定义 mycat 的管理端口,默认值为 9066。

    这里我们改为3077

    <property name="fakeMySQLVersion">5.6</property>
    mycat 模拟的 mysql 版本号,默认值为 5.6 版本,如非特需,不要修改这个值,目前支持设置 5.5,5.6,5.7 版本,其他版本可能会有问题。

    <property name="useSqlStat">0</property>
    是否开启实时统计。1为开启;0为关闭 。

    <property name="useGlobleTableCheck">0</property>
    是否开启全局表一致性检测。1为开启;0为关闭 。

    <property name="handleDistributedTransactions">0</property>
    分布式事务开关。0为不过滤分布式事务;1为过滤分布式事务;2 为不过滤分布式事务,但是记录分布式事务日志。

    <property name="maxStringLiteralLength">65535</property>
    默认是65535。 64K 用于sql解析时最大文本长度
    以上举例的属性仅仅是一部分,可以配置的变量很多,具体可以查看SystemConfig这个类的属性内容。
    System标签下的属性,一般是上线后,需要根据实际运行的情况,分析后调优的时候进行修改。

    1. Firewall标签
      顾名思义,这个就是关于防火墙的设置,也就是在网络层对请求的地址进行限制,主要是从安全角度来保证Mycat不被匿名IP进行访问
      <firewall>
      <whitehost>
      <host host="127.0.0.1" user="mycat"/>
      <host host="127.0.0.2" user="mycat"/>
      </whitehost>
      <blacklist check="false">
      </blacklist>
      </firewall>
      设置很简单,很容易理解,只要设置了白名单,表示开启了防火墙,只有白名单的连接才可以进行连接。

    5.schema.xml





    schema.xml中的rule是rule.xml里面众多分配规则的一种
    这样的配置与前一个示例配置改动如下:
    删除了table分配的规则,以及datanode只有一个
    datahost有2台,但是writehost总添加了readhost,balance改为1,表示读写分离。
    以上配置达到的效果就是102.168.1.41为主库,192.168.1.42为从库。
    以上配置达到的效果就是102.168.1.44为主库,192.168.1.45为从库。

    6.rule.xml

    而rule.xml中的规则默认的mod-long是三个 也即是dataNode的数量我们这里是切分为两个修改为2

    这些配置好之后

    启动mycat

    到mycat bin下
    [root@Mycat-node ~]# cd /data/mycat/bin/
    [root@Mycat-node bin]#
    [root@Mycat-node bin]# ./mycat start #开启
    [root@Mycat-node bin]# ./mycat stop #关闭
    [root@Mycat-node bin]# ./mycat restart #重启
    [root@Mycat-node bin]# ./mycat status #查看启动状态
    [root@Mycat-node bin]# ./mycat console #前台运行
    [root@Mycat-node bin]# ./mycat pause #暂停
    如果在启动时发现异常,在logs目录中查看日志。
    mycat启动后,执行命令不成功,可能实际上配置有错误,导致后面的命令没有很好的执行。
    如果在启动时发现异常,在logs目录中查看日志。
    [root@Mycat-node ~]# cd /data/mycat/logs/
    [root@Mycat-node logs]# ls
    2018-07 mycat.log mycat.pid wrapper.log

      • wrapper.log 为程序启动的日志,启动时的问题看这个
      • mycat.log 为脚本执行时的日志,SQL脚本执行报错后的具体错误内容,查看这个文件。mycat.log是最新的错误日志,历史日志会根据时间生成目录保存。
        mycat启动后,执行命令不成功,可能实际上配置有错误,导致后面的命令没有很好的执行。
        配置好之后输入 netstat -antpl 会有以下效果

        有ESTABKISHED和LISTEN是正常
        如果出现 TIME_WAIT问题
        编辑vim /etc/sysctl.conf
        添加以下内容
        net.ipv4.tcp_syn_retries=2
        net.ipv4.tcp_synack_retries=2
        表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为300秒
        net.ipv4.tcp_keepalive_time=1200
        net.ipv4.tcp_orphan_retries=3
        表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间
        net.ipv4.tcp_fin_timeout=30
        表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
        net.ipv4.tcp_max_syn_backlog = 4096
        表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭
        net.ipv4.tcp_syncookies = 1
        表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
        net.ipv4.tcp_tw_reuse = 1
        表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭
        net.ipv4.tcp_tw_recycle = 1
        减少超时前的探测次数
        net.ipv4.tcp_keepalive_probes=5
        优化网络设备接收队列
        net.core.netdev_max_backlog=3000
        通过navtivecat去连接数据库 测试是否可以打开数据库的具体的表

        那么你的真实的数据库的 那个41的 和那个44的就是做主的数据库要进行创建表要一个一个的分别与schema.xml中table的表一个个对应上

  • 相关阅读:
    Android杂谈错误整理(持续更新)
    javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver错误解决办法
    收藏微软面试智力题 (附答案)
    gridview等控件换行实现办法
    [原创]DataView特殊字条串替换(过滤)
    [转]ASP.Net4.0中新增23项功能
    从LOGO看百度与谷歌
    [转]Winxp下kernel32.dll内部的函数集合和地址值
    [转]ASP.NET Web Forms 4.0 简介
    asp.net类似于QQ表情弹出框功能的实现方法
  • 原文地址:https://www.cnblogs.com/liangshao6a/p/10407371.html
Copyright © 2011-2022 走看看