• mycat安装和测试


    mycat安装和测试

    一.  环境准备

    本机环境是三台centos6.5

    IP

    主机名

    数据库名

    安装软件

    192.168.17.4

    master

    db1

    mycat,mysql

    192.168.17.5

    slave1

    db2

    mysql

    192.168.17.6

    slave2

    db3

    mysql

    二.  安装mysql

    1.安装mysql软件

    linux下安装mysql有两种方式:一种是通过下载源码编译安装,一种是通过rpm包安装,如果配置了yum直接用yum安装会更快

    编译安装步骤:

    1.  ./congfigrue –prefix=安装路径
    2.  make
    3. make install

    因为编译安装,后面为了使用方便要将服务注册到init服务中比较麻烦,这里介绍最简单的yum安装

    1.     安装mysql客户端

    yum -y install mysql

    2.     安装mysql服务器端

    yum -y install mysql-server

    yum -y install mysql-devel

    3.添加mysql用户及权限并配置数据库

    三台服务器都安装mysql以后 ,三台机器同样配置数据库

    具体步骤如下:

    1. 配置编码格式,vi  /etc/my.cnf  ,添加default-character-set=utf8
    1. 添加开机启动项

    chkconfig --add mysqld

    chkconfig mysqld on

    1. 启动mysql,service mysqld start
    1. 配置root用户并设置密码,mysqladmin -u root password 123456
    1. 创建新用户,首先用root用户登录,mysql -uroot –p然后输入密码

    执行use mysql,进入用户管理库,执行select user,host from user;查询当前用户发现有一些user是空的用户,直接删掉,delete  from  user  where   user=”” 否则后面会出问题

    这里能看到只能本机访问root,可以通过执行语句update user set host = '%' where user = 'root' and host='localhost';;来释放root的访问权限,让所有ip都能通过root登录

    执行语句insert into mysql.user(Host,User,Password) values("%","mycat",password("123456"));添加新用户

    然后是赋权限,我这里是赋了所有权限,可以只赋某个库,或者部分权限,命令自己网上查,执行赋权限语句grant all privileges on *.* to 'mycat'@'%' identified by '123456';后一定记得执行flush privileges;来刷新权限

    登录新建的用户并创建响应的数据库,mysql –umycat –p   ,create database db1/db2/db3,根据不同机器数据库名不同

    1. 上述操作在三台机器上一样操作

    三.  安装mycat

    1.安装mycat软件并创建用户

    下载解压tar -zxvf Mycat-server-1.4-release-20151019230038-linux.tar.gz

    配置环境变量

    export MYCAT_HOME=/opt/sxt/soft/mycat

    PATH=$PATH:$MYCAT_HOME/bin

    通过配置sh /opt/sxt/soft/mycat/bin/mycat start执行开机启动也可以自己写脚本加入init服务

    创建一个新的group

    groupadd mycat

    创建一个新的用户,并加入group

    useradd -g mycat mycat

    给新用户设置密码,

    passwd mycat

    2.配置mycat配置文件

    在三台mysql的配置文件vi /etc/my.cnf中加入lower_case_table_names = 1来忽略大小写
    
    
    编辑schema文件
    先备份一下cp   $MYCAT_HOME/conf/schema.xml    $MYCAT_HOME/conf/schema.xml.tmp
    vim $MYCAT_HOME/conf/schema.xml 
    将里面mycat:schema节点的东西全部干掉,如下配置
    <table name="employee" primaryKey="ID" dataNode="dn1,dn2,dn3"
    rule="sharding-by-intfile" />
    </schema>
    <!--数据节点dn1,对应的主机c1,对应是数据库db1 -->
    <dataNode name="dn1" dataHost="master" database="db1" />
    <dataNode name="dn2" dataHost="slave1" database="db2" />
    <dataNode name="dn3" dataHost="slave2" database="db3" />
    <!-- 主机C1-->
    <dataHost name="master" maxCon="1000" minCon="10" balance="0"
    writeType="0" dbType="mysql" dbDriver="native">
    <heartbeat>select user()</heartbeat>
    <!--mysql数据库的连接串 -->
    <writeHost host="hostM1" url="master:3306" user="mycat"
    password="123456">
    </writeHost>
    </dataHost>
    <!-- 主机C2-->
    <dataHost name="slave1" maxCon="1000" minCon="10" balance="0"
    writeType="0" dbType="mysql" dbDriver="native">
    <heartbeat>select user()</heartbeat>
    <writeHost host="hostM2" url="slave1:3306" user="mycat"
    password="123456">
    </writeHost>
    </dataHost>
    <!-- 主机C3-->
    <dataHost name="slave2" maxCon="1000" minCon="10" balance="0"
      writeType="0" dbType="mysql" dbDriver="native">
     <heartbeat>select user()</heartbeat>
     <!--mysql数据库的连接串 -->
     <writeHost host="hostM3" url="slave2:3306" user="mycat"
        password="123456">
     </writeHost>
    </dataHost>
    
    
    在conf目录下配置server.xml ,将目录下没有的用户全部删掉或者注释掉,添加可用的用户,这里添加了
    <user name="mycat">
    <property name="password">123456</property>
    <property name="schemas">JamesMycatSchema</property>
    </user>
    
    
    修改conf下的partition-hash-int.txt文件  在下面添加10020=2,原本默认的是分两个就是10000和10010,现在我们三个就要三个分类id了,添加一个即可
    
    

    四.  测试mycat

    1.启动mycat,

    执行mycat start

    tail -100  $MYCAT_HOME/logs/wrapper.log查看结果如下就表明启动成功了

    2.测试mysql表横向分割

    在虚拟机外的windows安装Navicat for MySQL,分别连接到三个mysql数据库,执行建表语句create table employee (id int not null primary key,name varchar(100),sharding_id int not null);

    用Navicat for MySQL连接mycat,mycat默认端口是8066,配置如图:

    因为刚才执行了建表语句,这时候连接上了mycat里面也有一个空的employee表

    执行如下语句

    insert into employee(id,name,sharding_id) values(1, 'I am db1',10000);

    insert into employee(id,name,sharding_id) values(2, 'I am db2',10010);

    insert into employee(id,name,sharding_id) values(3, 'I am db3',10020);

    insert into employee(id,name,sharding_id) values(4, 'I am db1',10000);

    insert into employee(id,name,sharding_id) values(5, 'I am db2',10010);

    insert into employee(id,name,sharding_id) values(6, 'I am db3',10020);

    刷新一下navicat查看mycat连接的库

  • 相关阅读:
    String
    Map和Set
    js的栈与堆
    js的私有属性
    随便谈一谈原型
    前端页面优化提速
    nth-child和nth-of-type
    重复输出字符串
    闭包
    mongodb内嵌文档的查询
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/6859593.html
Copyright © 2020-2023  润新知