• 设备
    • 今日
    • 7

    mycat的安装及部署

    mycat的安装及部署
    部署jdk环境
    检查现有版本JDK   
    # java -version    
    查找java相关文件并卸载 
    rpm -qa | grep java 
    [root@localhost local]#  rpm -qa | grep java  
    subversion-javahl-1.6.11-9.el6_4.x86_64
    ant-javamail-1.7.1-13.el6.x86_64
    java-1.6.0-openjdk-javadoc-1.6.0.0-1.66.1.13.0.el6.x86_64
    java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
    java-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_64
    libvirt-java-0.4.9-1.el6.noarch
    eclipse-mylyn-java-3.4.2-9.el6.x86_64
    lpg-java-compat-1.1.0-4.1.el6.noarch
    pki-java-tools-9.0.3-32.el6.noarch
    tzdata-java-2013g-1.el6.noarch
    java_cup-0.10k-5.el6.x86_64
    libvirt-java-devel-0.4.9-1.el6.noarch
    java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
    java-1.7.0-openjdk-devel-1.7.0.45-2.4.3.3.el6.x86_64
    java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

    [root@localhost local]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

    [root@localhost local]# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

    rpm -ivh jdk-8u71-linux-x64.rpm

    将java命令加入到环境变量中  
    vim /etc/profile  
    //添加内容  
    JAVA_HOME=/usr/java/jdk1.8.0_71  
    JRE_HOME=$JAVA_HOME/jre
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin  
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib  
    export JAVA_HOME JRE_HOME PATH CLASSPATH  

    //使配置立即生效  
    # source /etc/profile  
    //查看PATH  
    # echo $PATH  

    3、配置mycat中的jdk文件路径
    # cd /usr/local/mycat/conf/
    # vim wrapper.conf 
    # Java Application
    wrapper.java.command=/usr/java/jdk1.7.0_79/bin/java

    mycat的安装及部署
    tar xf Mycat-Server-1.4-RC-Linux-RW-20150724.tar.gz
    cd /usr/local/mycat/conf/

    vi /usr/local/mycat/conf/wrapper.conf 
       wrapper.java.command=/usr/java/jdk1.8.0_71/bin/java

    [root@yqy103 conf]# cd /usr/local/mycat/conf
    [root@yqy103 conf]# cp schema.xml schema.xml.bak
    [root@yqy103 conf]#  vim schema.xml

    4、读写分离配置(重点配置):
    # cp schema.xml schema.xml.bak
    # vim schema.xml

    <schema name="TD_OA" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
    <dataNode name="dn1" dataHost="localhost1" database="TD_OA" />
    <dataNode name="dn2" dataHost="localhost1" database="TD_OA" />
    <dataNode name="dn3" dataHost="localhost1" database="TD_OA" />
    <!--<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="1"
    writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <!-- can have multi write hosts -->
    <writeHost host="hostM1" url="192.168.8.60:3306" user="mycat"
    password="pass">
    <!-- can have multi read hosts -->
    <readHost host="hostS1" url="192.168.11.145:3306" user="mycat_r" password="pass" />
    </writeHost>
    </dataHost>

    (1)<schema name="TD_OA" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
    这里的TD_OA就是我们所宣称的数据库名称,必须和server.xml中的用户指定的数据库名称一致。添加一个dataNode="dn1",是指定了我们这个库只有在dn1上,没有分库。

    (2)<dataNode name="dn1" dataHost="localhost1" database="TD_OA" />
    这里只需要改database的名字,TD_OA就是你真是的数据库上的数据库名,可根据自己的数据库名称修改。

    (3) <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
    writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

    需要配置的位置:
    balance="1" writeType="0" switchType="1"

    balance
    1、balance=0 不开启读写分离机制,所有读操作都发送到当前可用的writehostle .
    2、balance=1 全部的readhost与stand by writeHost 参与select语句的负载均衡。简单的说,双主双从模式(M1àS1,M2àS2,并且M1和M2互为主备),正常情况下,M1,S1,S2都参与select语句的复杂均衡。
    3、balance=2 所有读操作都随机的在readhost和writehost上分发

    writeType
    负载均衡类型,目前的取值有3种:
    1、writeType="0", 所有写操作发送到配置的第一个writeHost。
    2、writeType="1",所有写操作都随机的发送到配置的writeHost。
    3、writeType="2",不执行写操作。

    switchType
    1、switchType=-1 表示不自动切换
    2、switchType=1 默认值,自动切换
    3、switchType=2 基于MySQL 主从同步的状态决定是否切换
    (4)<writeHost host="hostM1" url="192.168.8.60:3306" user="mycat" password="pass">
    <!– can have multi read hosts –>
    <readHost host="hostS1" url="192.168.11.145:3306" user="mycat_r" password="pass" />

    注意:
    这里配置的是读写服务器的IP地址和端口访问,访问的用户名和密码;而且一定要先在客户端测试OK了以后在进行配置。
    5、将mycat命令加入到配置文件中
    # vim /etc/profile
    export PATH=/usr/local/mycat/bin:$PATH
    # source /etc/profile

    6、创建管理用户
    主库上对mycat用户授权如下:

    用户:mycat 密码:pass 端口:3306

    权限:insert,delete,update,select

    命令:grant insert,delete,update,select on TD_OA.* to mycat@'192.168.8.%' identified by 'pass';
    flush privileges;

    从库上mycat_r用户授权如下:
    用户:mycat_r 密码:pass 端口:3306
    权限: select

    grant select on TD_OA.* to mycat_r@'192.168.8.%' identified by 'pass';
    flush privileges;

    提示:由于主库和从库是同步mysql数据库复制的,所以从库上的mycat用户会自动和主库的一致,即无法实现只读select的授权
    revoke insert,update,delete on TD_OA.* from mycat@'192.168.8.%'; #<=回收insert update delete 权限

    修改mycat配置文件
    vim /usr/local/mycat/conf/server.xml
    <user name="mycat">
    <property name="password">pass</property>
    <property name="schemas">TD_OA</property>
    </user>

    <user name="mycat_r">
    <property name="password">pass</property>
    <property name="schemas">TD_OA</property>
    <property name="readOnly">true</property>
    </user>

    注意:

    ①这里配置的是可以连接主库的两个用户

    用户:mycat 密码:pass 给予此用户TD_OA数据库增删改查的权限。

    用户:mycat_r 密码:pass 给予此用户TD_OA数据库读的权限。

    ②这里的TD_OA,不一定是你数据库上的真实库名,可以任意指定,只要接下来和schema.xml的配置文件的库名统一即可。


    7、启动mycat

    # mycat console #<=通过console命令启动mycat,这样方便提取信息
    Running Mycat-server...
    wrapper  | --> Wrapper Started as Console
    wrapper  | Launching a JVM...
    wrapper  | JVM exited while loading the application.
    jvm 1    | Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: oawebserver002: oawebserver002: Temporary failure in name resolution
    解决:编辑Hosts文件将主机名和IP绑定
    # vim /etc/hosts
    192.168.8.60 oawebserver002
    # mycat restart使配置生效

    在客户端连接mysql主库服务器:

    # yum install -y mysql
    # mysql -umycat -ppass -h192.168.8.60 -P8066

    8、管理命令与监控

    mycat自身有类似其他数据库的管理监控方式,可通过mysql命令行,登陆端口9066执行相应的SQL操作,也可通过jdbc的方式进行远程连接管理。

    登录:目前mycat有两个端口,8066数据端口,9066管理端口。命令行登录时通过9066管理端口来执行:

    mysql -umycat -ppass -h127.0.0.1 -P9066 -DTD_OA

    选项:
    -h 后面接主机
    -u mycat server.xml配置的逻辑库用户
    -p mycat server.xml配置的逻辑库密码
    -P 后面接的端口9066,注意P大写
    -D Mycat server.xml中配置的逻辑库

    1、查看所有的命令,如下:
    mysql> show @@help;
    +--------------------------------------+-----------------------------------+
    | STATEMENT                            | DESCRIPTION                       |
    +--------------------------------------+-----------------------------------+
    | clear @@slow where datanode = ?      | Clear slow sql by datanode        |
    | clear @@slow where schema = ?        | Clear slow sql by schema          |
    | kill @@connection id1,id2,...        | Kill the specified connections    |
    | offline                              | Change MyCat status to OFF        |
    | online                               | Change MyCat status to ON         |
    | reload @@config                      | Reload basic config from file     |
    | reload @@config_all                  | Reload all config from file       |
    | reload @@route                       | Reload route config from file     |
    | reload @@user                        | Reload user config from file      |
    | rollback @@config                    | Rollback all config from memory   |
    | rollback @@route                     | Rollback route config from memory |
    | rollback @@user                      | Rollback user config from memory  |
    | show @@backend                       | Report backend connection status  |
    | show @@cache                         | Report system cache usage         |
    | show @@command                       | Report commands status            |
    | show @@connection                    | Report connection status          |
    | show @@connection.sql                | Report connection sql             |
    | show @@database                      | Report databases                  |
    | show @@datanode                      | Report dataNodes                  |
    | show @@datanode where schema = ?     | Report dataNodes                  |
    | show @@datasource                    | Report dataSources                |
    | show @@datasource where dataNode = ? | Report dataSources                |
    | show @@heartbeat                     | Report heartbeat status           |
    | show @@parser                        | Report parser status              |
    | show @@processor                     | Report processor status           |
    | show @@router                        | Report router status              |
    | show @@server                        | Report server status              |
    | show @@session                       | Report front session details      |
    | show @@slow where datanode = ?       | Report datanode slow sql          |
    | show @@slow where schema = ?         | Report schema slow sql            |
    | show @@sql where id = ?              | Report specify SQL                |
    | show @@sql.detail where id = ?       | Report execute detail status      |
    | show @@sql.execute                   | Report execute status             |
    | show @@sql.slow                      | Report slow SQL                   |
    | show @@threadpool                    | Report threadPool status          |
    | show @@time.current                  | Report current timestamp          |
    | show @@time.startup                  | Report startup timestamp          |
    | show @@version                       | Report Mycat Server version       |
    | stop @@heartbeat name:time           | Pause dataNode heartbeat          |
    | switch @@datasource name:index       | Switch dataSource                 |
    +--------------------------------------+-----------------------------------+
    40 rows in set (0.01 sec)

    2、显示mycat数据库的列表,对应的在scehma.xml配置的逻辑库
    mysql> show @@databases;
    +----------+
    | DATABASE |
    +----------+
    | TD_OA    |
    +----------+
    1 row in set (0.00 sec)

    3、显示mycat数据节点的列表,对应的是scehma.xml配置文件的dataNode节点
    mysql> show @@datanode;
    +------+------------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
    | NAME | DATHOST          | INDEX | TYPE  | ACTIVE | IDLE | SIZE | EXECUTE | TOTAL_TIME | MAX_TIME | MAX_SQL | RECOVERY_TIME |
    +------+------------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
    | dn1  | localhost1/TD_OA |     0 | mysql |      0 |   10 | 1000 |      10 |          0 |        0 |       0 |            -1 |
    | dn2  | localhost1/TD_OA |     0 | mysql |      0 |   10 | 1000 |      10 |          0 |        0 |       0 |            -1 |
    | dn3  | localhost1/TD_OA |     0 | mysql |      0 |   10 | 1000 |      10 |          0 |        0 |       0 |            -1 |
    +------+------------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+

    其中,NAME表示datanode的名称;dataHost 对应的是dataHost属性的值,数据主机的名称,ACTIVE表示活跃的连接数,IDIE表示闲置的连接数,SIZE对应的是总连接的数量。

    mysql> show @@heartbeat;
    +--------+-------+----------------+------+---------+-------+--------+---------+--------------+---------------------+-------+
    | NAME   | TYPE  | HOST           | PORT | RS_CODE | RETRY | STATUS | TIMEOUT | EXECUTE_TIME | LAST_ACTIVE_TIME    | STOP  |
    +--------+-------+----------------+------+---------+-------+--------+---------+--------------+---------------------+-------+
    | hostM1 | mysql | 192.168.8.60   | 3306 |       1 |     0 | idle   |       0 | 0,0,0        | 2016-04-22 19:19:05 | false |
    | hostS1 | mysql | 192.168.11.145 | 3306 |       1 |     0 | idle   |       0 | 0,0,0        | 2016-04-22 19:19:05 | false |
    +--------+-------+----------------+------+---------+-------+--------+---------+--------------+---------------------+-------+

    RS_CODE状态为1,正常状态

    4、获取当前mycat的版本
    mysql> show @@version;

    5、显示mycat前端连接状态
    mysql> show @@connection;

    6、显示mycat后端连接状态
    mysql> show @@backend;

    7、显示数据源
    mysql> show @@datasource;

    特别说明:
    reload @@config,这个命令在执行的时候,mycat服务不可用,防止提交的事物出错。








    来自:PC 广东省
    上一篇: linux系统中rsync+inotify实现服务器之间文件实时同步
    您可能还喜欢这些:

    亲,沙发正空着,还不快来抢?

    评论审核已开启 记住我的个人信息 回复后邮件通知我