• Mycat的简易安装及测试


    1.环境
        OS版本  CentOS release 6.5 (Final)  64bit
        DB版本  Mysql 5.6.37
        Mycat   1.6
        jdk1.7及以上版本
        
    2.实战部署
        1.创建用户及用户组
            [root@mysql01 ~]# groupadd mycat
            [root@mysql01 ~]# useradd -g mycat mycat
    
        2.上传解压JDK
            Java Oracle官方下载地址为:
            http://www.oracle.com/technetwork/java/javase/archive-139210.html
            
            [mycat@mysql01 ~]$ tar zxvf jdk-7u80-linux-x64.tar.gz        
        3.上传解压mycat
            [mycat@mysql01 ~]$ tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
        
        4.指定目录安装mycat及jdk
            [root@mysql01 mycat]# mv mycat /usr/local/
            [root@mysql01 mycat]# mv jdk1.7.0_80 /usr/local/mycat/
            
        5.配置jdk环境变量        
            export JAVA_HOME=/usr/local/mycat/jdk1.7.0_80
            export PATH=$JAVA_HOME/bin:$PATH
            export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
            
        6.创建测试库(mycat 对db1 db2 db3做了默认配置)
            mysql> create database db1;
            mysql> create database db2;
            mysql> create database db3;
        
        7.配置mycat到数据库的连接(schema.xml)
            #手动测试 通过url user password 能链接到测试库
            <writeHost host="hostM1" url="localhost:3306" user="root" password="123456">    
           
        8.启动mycat
            [mycat@mysql01 bin]$ ./mycat start
            Starting Mycat-server...
            [mycat@mysql01 bin]$
                    
            日志抛出异常
            [mycat@mysql01 logs]$ more wrapper.log 
            STATUS | wrapper  | 2017/09/27 22:34:57 | --> Wrapper Started as Daemon
            STATUS | wrapper  | 2017/09/27 22:34:57 | Launching a JVM...
            ERROR  | wrapper  | 2017/09/27 22:35:03 | JVM exited while loading the application.
            INFO   | jvm 1    | 2017/09/27 22:35:03 | Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException
            : mysql01: mysql01: Name or service not known
            STATUS | wrapper  | 2017/09/27 22:35:07 | Launching a JVM...
            [mycat@mysql01 logs]$        
           
        9.修改hosts文件,绑定主机名  
            [root@mysql01 3306]# vi /etc/hosts
            127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
            ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
            127.0.0.1   mysql01    
           
        10.再次启动mycat    
            [mycat@mysql01 bin]$ ./mycat start
            Starting Mycat-server...
            [mycat@mysql01 bin]$       
           
            日志未见异常,启动成功        
            [mycat@mysql01 bin]$ ps -ef|grep mycat
            mycat     3374     1  0 22:39 ?        00:00:00 /usr/local/mycat/bin/./wrapper-        
            
    
    3.测试        
        1.利用mycat连接mysql数据库
            #在mysql系统用户下执行登陆,此时的mysql相当于客户端 
            [mysql@mysql01 ~]$ mysql -uroot -p123456 -h127.0.0.1 -P8066 -DTESTDB
            Warning: Using a password on the command line interface can be insecure.
            Reading table information for completion of table and column names
            You can turn off this feature to get a quicker startup with -A
    
            Welcome to the MySQL monitor.  Commands end with ; or g.
            Your MySQL connection id is 2
            Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB)
    
            Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
    
            Oracle is a registered trademark of Oracle Corporation and/or its
            affiliates. Other names may be trademarks of their respective
            owners.
    
            Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
            mysql>    
                
            其中8066是mycat的监听端口,其中-u,-p,-h分别是用户名,密码和主机,-D是连接的逻辑库。
    这里的端口,用户名,密码,逻辑库都是在 server.xml 文件中配置的 2.创建Travelrecord表 mysql> create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int); Query OK, 0 rows affected (0.20 sec) mysql> 至于表名为什么是travelrecord,这个和配置文件schema.xml的配置有关 3.插入数据 mysql> insert into travelrecord(id,user_id,traveldate,fee,days) values(1,'Victor',20160101,100,10); mysql> insert into travelrecord(id,user_id,traveldate,fee,days) values(5000001,'Job',20160102,100,10); mysql> insert into travelrecord(id,user_id,traveldate,fee,days) values(10000001,'Slow',20160103,100,10); mysql> 至于ID为什么取三个值,这个与conf目录下autopartition-long.txt的定义有关,这个文件主要定义auto-sharding-long的规则。 这里主要是测试在id取不同区间的值时,分片的效果。 4.查看分片效果 #重新登陆到mysql上查询(不要通过mycat查询) [mysql@mysql01 ~]$ mysql -uroot -p123456 -h 127.0.0.1 -P 3306 mysql> select * from db1.travelrecord; +----+---------+------------+------+------+ | id | user_id | traveldate | fee | days | +----+---------+------------+------+------+ | 1 | Victor | 2016-01-01 | 100 | 10 | +----+---------+------------+------+------+ 1 row in set (0.00 sec) mysql> select * from db2.travelrecord; +---------+---------+------------+------+------+ | id | user_id | traveldate | fee | days | +---------+---------+------------+------+------+ | 5000001 | Job | 2016-01-02 | 100 | 10 | +---------+---------+------------+------+------+ 1 row in set (0.00 sec) mysql> select * from db3.travelrecord; +----------+---------+------------+------+------+ | id | user_id | traveldate | fee | days | +----------+---------+------------+------+------+ | 10000001 | Slow | 2016-01-03 | 100 | 10 | +----------+---------+------------+------+------+ 1 row in set (0.00 sec) mysql> 数据分片插入成功 4.查看MyCAT具体会将数据分配到哪个节点上 mysql> explain insert into travelrecord(id,user_id,traveldate,fee,days) values(1,'Victor',20160101,100,10); +-----------+----------------------------------------------------------------------------------------------+ | DATA_NODE | SQL | +-----------+----------------------------------------------------------------------------------------------+ | dn1 | insert into travelrecord(id,user_id,traveldate,fee,days) values(1,'Victor',20160101,100,10) | +-----------+----------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> explain insert into travelrecord(id,user_id,traveldate,fee,days) values(5000001,'Job',20160102,100,10); +-----------+-------------------------------------------------------------------------------------------------+ | DATA_NODE | SQL | +-----------+-------------------------------------------------------------------------------------------------+ | dn2 | insert into travelrecord(id,user_id,traveldate,fee,days) values(5000001,'Job',20160102,100,10) | +-----------+-------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> explain insert into travelrecord(id,user_id,traveldate,fee,days) values(10000001,'Slow',20160103,100,10); +-----------+---------------------------------------------------------------------------------------------------+ | DATA_NODE | SQL | +-----------+---------------------------------------------------------------------------------------------------+ | dn3 | insert into travelrecord(id,user_id,traveldate,fee,days) values(10000001,'Slow',20160103,100,10) | +-----------+---------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> 语法其实蛮简单,就是SQL语句前加上explain语句 5.关于配置文件,conf目录下主要以下三个需要熟悉 server.xml是Mycat服务器参数调整和用户授权的配置文件 schema.xml是逻辑库定义和表以及分片定义的配置文件 rule.xml是分片规则的配置文件
  • 相关阅读:
    Python3中字符串的编码与解码以及编码之间转换(decode、encode)
    Python 封装
    Python多态、鸭子类型
    Python抽象类和接口类
    Python 类的名称空间和组合
    Python面向对象
    Python 模块和包
    接口自动化之cookies/session
    jmeter之cookies登录
    jenkins发送邮件
  • 原文地址:https://www.cnblogs.com/twodog/p/12139294.html
Copyright © 2020-2023  润新知