版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shenzhen_zsw/article/details/89208914
目录
配置编码格式,vi /etc/my.cnf ,添加default-character-set=utf8
修改conf下的partition-hash-int.txt文件
准备工作
IP | 主机名 | 数据库名 | 安装软件 |
192.168.2.191 | spark1 | db1 | mycat,mysql |
192.168.2.192 | spark2 | db2 | mysql |
192.168.2.193 | spark3 | db3 | mysql |
安装mysql客户端和服务端
安装MySQL客户端
yum -y install mysql
说明:3台机器都需要安装;
安装mysql服务端
yum -y install mysql-server
yum -y install mysql-devel
说明:3台机器都需要安装;
添加mysql用户及权限并配置数据库
三台服务器都安装mysql以后 ,三台机器同样配置数据库
具体步骤如下:
配置编码格式,vi /etc/my.cnf ,添加default-character-set=utf8
[root@spark1 ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-character-set=utf8
lower_case_table_names = 1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[root@spark1 ~]#
说明:
1)增加default-character-set=utf8;设置编码格式;
2)增加lower_case_table_names = 1,忽略大小写配置;
scp到其他机器
scp /etc/my.cnf spark2:/etc/
scp /etc/my.cnf spark3:/etc/
添加开机启动项
chkconfig --add mysqld
chkconfig mysqld on
说明:
1)3台机器都需要设置;
启动mysql
service mysqld start
说明:
1)3台机器都需要设置;
配置root用户并设置密码
mysql -uroot -p
mysql> use mysql;
mysql> select user,host from user;
mysql> delete from user where user = "";
mysql> select user,host from user;
mysql> update user set host='%' where host='127.0.0.1';
mysql> update user set password = PASSWORD('888888') where user = 'root';
说明:
1)3台机器都需要设置;
添加新用户
mysql> insert into mysql.user(Host,User,Password) values("%","mycat",password("888888"));
说明:
1)3台机器都需要设置;
赋予权限
mysql> grant all privileges on *.* to 'mycat'@'%' identified by '888888';
说明:
1)3台机器都需要设置;
刷新权限
mysql> flush privileges;
说明:
1)3台机器都需要设置;
登录新建的用户并创建响应的数据库
机器1:
mysql -umycat -p
mysql> create database db1;
机器2:
mysql -umycat -p
mysql> create database db2;
机器3:
mysql -umycat -p
mysql> create database db3;
安装MyCat
解压mycat压缩文件到指定目录下
[root@spark1 soft]# tar -zxvf Mycat-server-1.4-release-20151019230038-linux.tar.gz -C /application/
配置环境变量
#MyCat环境变量配置
export MYCAT_HOME=/application/mycat
export PATH=$PATH:$MYCAT_HOME/bin
source /etc/profile
说明:
1)将其环境变量生效;
启动MyCat
mycat start
创建新的用户组和用户
#创建一个新的group
groupadd mycat
#创建一个新的用户,并加入group
useradd mycat -g mycat
#给新用户设置密码
passwd mycat
配置mycat配置文件
编辑schema.xml文件
[root@spark1 conf]# pwd
/application/mycat/conf
cp schema.xml schema.xml.tmp
[root@spark1 conf]# cat schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<schema name="mycat" checkSQLschema="false" sqlMaxLimit="100">
<table name="employee" primaryKey="ID" dataNode="dn1,dn2,dn3" rule="sharding-by-intfile" />
</schema>
<!--数据节点dn1,对应的主机c1,对应是数据库db1 -->
<dataNode name="dn1" dataHost="spark1" database="db1" />
<dataNode name="dn2" dataHost="spark2" database="db2" />
<dataNode name="dn3" dataHost="spark3" database="db3" />
<!-- 主机C1-->
<dataHost name="spark1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="spark1:3306" user="mycat" password="888888" />
</dataHost>
<!-- 主机C2-->
<dataHost name="spark2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM2" url="spark2:3306" user="mycat" password="888888" />
</dataHost>
<!-- 主机C3-->
<dataHost name="spark3" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM3" url="spark3:3306" user="mycat" password="888888" />
</dataHost>
</mycat:schema>
[root@spark1 conf]#
编辑server.xml文件
[root@spark1 conf]# cat server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<property name="defaultSqlParser">druidparser</property>
<property name="processors">1</property>
<property name="processorExecutor">32</property>
</system>
<user name="root">
<property name="password">888888</property>
<property name="schemas">mycat</property>
</user>
</mycat:server>
[root@spark1 conf]#
修改conf下的partition-hash-int.txt文件
在下面添加10020=2,
原本默认的是分两个就是10000和10010,
现在我们有三个就要三个分类id了,添加一个即可
vi partition-hash-int.txt
10000=0
10010=1
10020=2
测试mycat
启动mycat,执行mycat start
mycat start
查看mycat是否启动成功
[root@spark1 conf]# tail -100 /application/mycat/logs/wrapper.log
STATUS | wrapper | 2019/04/11 12:26:35 | --> Wrapper Started as Daemon
STATUS | wrapper | 2019/04/11 12:26:36 | Launching a JVM...
INFO | jvm 1 | 2019/04/11 12:26:37 | OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=64M; support was removed in 8.0
INFO | jvm 1 | 2019/04/11 12:26:41 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2019/04/11 12:26:41 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
INFO | jvm 1 | 2019/04/11 12:26:41 |
INFO | jvm 1 | 2019/04/11 12:26:44 | log4j 2019-04-11 12:26:44 [./conf/log4j.xml] load completed.
INFO | jvm 1 | 2019/04/11 12:26:49 | MyCAT Server startup successfully. see logs in logs/mycat.log
STATUS | wrapper | 2019/04/11 12:48:54 | TERM trapped. Shutting down.
STATUS | wrapper | 2019/04/11 12:48:56 | <-- Wrapper Stopped
STATUS | wrapper | 2019/04/11 12:48:56 | --> Wrapper Started as Daemon
STATUS | wrapper | 2019/04/11 12:48:57 | Launching a JVM...
INFO | jvm 1 | 2019/04/11 12:48:57 | OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=64M; support was removed in 8.0
INFO | jvm 1 | 2019/04/11 12:48:57 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2019/04/11 12:48:57 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
INFO | jvm 1 | 2019/04/11 12:48:57 |
INFO | jvm 1 | 2019/04/11 12:48:58 | log4j 2019-04-11 12:48:58 [./conf/log4j.xml] load completed.
INFO | jvm 1 | 2019/04/11 12:48:59 | MyCAT Server startup successfully. see logs in logs/mycat.log
测试下8066端口
telnet spark1 8066
测试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);
查看mycat中的employee表
查看spark1连接中db1数据库的employee表
查看spark2连接中db2数据库的employee表
查看spark3连接中db3数据库的employee表
发现每个库中的employee都有只有两条数据;