MySql --- mycat 分片服务器

**

准备四台主机搭建mycat分片服务器

通过某种特定条件,将存放在一个数据库(主机)中的数据,分散存放到多个数据库(主机)中,已达到分散单台设备负载的效果。
其中192.168.4.56作为mycat服务器,192.168.4.54和192.168.4.55作为数据库服务器,192.168.4.254作为客户端。如图-1所示:

在这里插入图片描述

步骤一:公共配置

1)关闭防火墙和selinux,配置yum源(系统源),这里不再操作

2)在54(主机c2)和55(主机c1)上面创建db1和db2库

[root@c1 ~]# mysql -u root -p123456    
mysql> create database db1;    //c1上面创建db1库

[root@c2 ~]# mysql -u root -p123456
mysql> create database db2;    //c2上面创建db2库

在54、55上面授权一个用户

mysql> grant all on *.* to admin@"%" identified by  "123456";

3)修改数据库的配置文件

注意:1代表不区分表名的大小写,0为区分大小写

主机c1、c2上面:

[root@c1 ~]# vim /etc/my.cnf
[mysqld]
lower_case_table_names=1        //表名忽略大小写

[root@c1 ~]# systemctl restart mysqld

4)在56主机上面安装JDK

[root@mycat ~]# yum -y install java-1.8.0-openjdk

5)在56主机上面安装mycat

[root@mycat mysql]# tar -xf Mycat-server-1.4-beta-20150604171601-linux.tar.gz   
//免安装,解压即可使用

[root@mycat mysql]#  mv mycat/ /usr/local/
[root@mycat mysql]# ls /usr/local/mycat/
bin  catlet  conf  lib  logs  version.txt
[root@mycat mysql]# cd /usr/local/mycat/

[root@mycat mycat]# ./bin/mycat  --help
Usage: ./bin/mycat { console | start | stop | restart | status | dump }

6)修改配置文件

目录结构说明:

bin mycat命令,如 启动 停止 等

catlet 扩展功能

conf 配置文件

lib mycat使用的jar

log mycat启动日志和运行日志

wrapper.log mycat服务启动日志

mycat.log 记录SQL脚本执行后的报错内容

重要配置文件说明:

server.xml 设置连mycat的账号信息

schema.xml 配置mycat的真实库表

rule.xml 定义mycat分片规则

配置标签说明

… … 定义连mycat用户信息

… … 指定数据节点

… … 指定数据库地址及用户信息

查看server.xml配置文件

[root@mycat mycat]#  cd conf/
[root@mycat conf]# vim server.xml
    </system>
    <user name="test">    //连接mycat服务时使用的用户名 test
            <property name="password">test</property>        
//使用test用户连接mycat用户时使用的密码
            <property name="schemas">TESTDB</property>    
//连接上mycat服务后,可以看到的库名多个时,使用逗号分隔 (是逻辑上的库名,服务器上没有这个库名,随便取,但要记住)
    </user>
    <user name="user">
            <property name="password">user</property>
            <property name="schemas">TESTDB</property>
            <property name="readOnly">true</property>        
//定义只读权限,使用定义的user用户连接mycat服务后只有读记录的权限,不写这一行则是可读可写
    </user>

修改schema.xml配置文件

[root@mycat conf]# vim schema.xml
<table name="travelrecord" dataNode="dn1,dn2" rule="auto-sharding-long" />
//travelrecord(逻辑上的,名字不能随便写,一般不动)表分片到数据节点dn1和dn2,dn1和dn2随便取的名字
<table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2" />
<table name="hotnews" primaryKey="ID" dataNode="dn1,dn2" rule="mod-long" />
<dataNode name="dn1" dataHost="c1" database="db1" />
//数据节点对应的服务器 name="dn1"名称要与上面的对应 dataHost="c1"写本机主机    名,database="db1"存在的数据库名,定义分片使用的库,所在的物理主机,真正存储数   据的db1库在物理主机mysql55上
<dataNode name="dn2" dataHost="c2" database="db2" />
//定义分片使用的库,所在的物理主机,真正存储数据的db1库在物理主机mysql55上
指定c1名称主机对应的ip地址
<dataHost name="c1" maxCon="1000" minCon="10" balance="0"
            writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                    <heartbeat>select user()</heartbeat>
            <!-- can have multi write hosts -->
            <writeHost host="c1" url="192.168.4.55:3306" user="admin"        
                    password="123456">
//访问数据库时,mycat服务连接数据库服务器时使用的用户名和密码
                    <!-- can have multi read hosts -->
            </writeHost>
    </dataHost>
指定c2名称主机对应的ip地址
    <dataHost name="c2" maxCon="1000" minCon="10" balance="0"    
             writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                    <heartbeat>select user()</heartbeat>
            <!-- can have multi write hosts -->
            <writeHost host="c2" url="192.168.4.54:3306" user="admin"        
                     password="123456">
//访问数据库时,mycat服务连接数据库服务器时使用的用户名和密码
                    <!-- can have multi read hosts -->
            </writeHost>
     </dataHost>

7)添加PATH路径

[root@mycat conf]# echo "PATH=/usr/local/mycat/bin:$PATH" >> /etc/profile
[root@mycat conf]# source /etc/profile
[root@mycat conf]# which mycat
/usr/local/mycat/bin/mycat

8)启动服务并查看端口

[root@mycat conf]#  mycat start

[root@mycat conf]# netstat -antup | grep :8066

[root@mycat conf]# ps -C java

用admin用户登录

[root@client ~]#  mysql -h192.168.4.54 -uadmin -p123456
mysql> show processlist;

[root@mycat conf]# ls /usr/local/mycat/logs/
mycat.log mycat.pid wrapper.log //wrapper.log为错误日志

[root@mycat conf]# ldconfig -v //更新加载的模块

9)客户端访问

命令: mysql -hmycat主机的IP -P端口号 -u用户 -p密码

[root@clent ~]# mysql -h192.168.4.56 -P8066 -utest -ptest
mysql> show databases;

+----------+
| DATABASE |
+----------+
| TESTDB   |
+----------+

mysql> USE TESTDB;

10)客户端测试:

mysql>  create table employee(id int not null primary key,name varchar(100),sharding_id int not null);

mysql>  insert into employee(id,name,sharding_id) values(1,"bob",10000);

mysql>  insert into employee(id,name,sharding_id) values(1,"lucy",10010);

mysql>  select * from  employee;
+----+------+-------------+
| id | name | sharding_id |
+----+------+-------------+
|  1 | bob  |       10000 |
|  1 | lucy |       10010 |
+----+------+-------------+

11)分别在c1、c2上面查看结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值