分布式数据库中间mycat服务安装和测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shenzhen_zsw/article/details/89208914

目录

准备工作

安装mysql客户端和服务端

安装MySQL客户端

安装mysql服务端

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

配置编码格式,vi /etc/my.cnf ,添加default-character-set=utf8

scp到其他机器 

添加开机启动项

启动mysql

配置root用户并设置密码

添加新用户

赋予权限

刷新权限

登录新建的用户并创建响应的数据库

安装MyCat

解压mycat压缩文件到指定目录下

配置环境变量

启动MyCat

创建新的用户组和用户

配置mycat配置文件

编辑schema.xml文件

编辑server.xml文件

修改conf下的partition-hash-int.txt文件

测试mycat

启动mycat,执行mycat start

查看mycat是否启动成功

测试下8066端口

测试mysql表横向分割

在虚拟机外的windows安装Navicat for MySQL,分别连接到三个mysql数据库,执行建表语句

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

插入数据

查看mycat中的employee表

查看spark1连接中db1数据库的employee表

查看spark2连接中db2数据库的employee表

查看spark3连接中db3数据库的employee表


准备工作

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都有只有两条数据;


 

猜你喜欢

转载自blog.csdn.net/shenzhen_zsw/article/details/89208914