搭建mycat
一、准备工作
1、确保jdk已安装成功,并且jdk版本选用1.7以上版本
2、准备一台新的主机mysql_mycat放到master的前面做代理
mycat ip 192.168.232.13
3、将三台机器互做本地解析
192.168.232.11 mysql_master
192.168.232.12 mysql_slave1
192.168.232.13 mysql_slave2
192.168.232.14 mysql_mycat
架构:
二、下载安装mycat
我们通过本地上传mycat包来安装mycat
[root@mysql_mycat ~]# tar xf Mycat-server-1.6.5-release-linux.tar.gz -C /usr/local/
cd 到/usr/local目录下,多了一个mycat文件夹
三、编辑配置文件
[root@mysql_mycat conf]# cd mycat/conf
[root@mysql_mycat conf]# vim server.xml
1.server.xml
<user name=\"mycat\" defaultAccount=\"true\">
<property name=\"password\">Qf@12345!</property>
<property name=\"schemas\">testdb</property>
<!-- 表级 DML 权限设置 -->
<!--
<privileges check=\"false\">
<schema name=\"TESTDB\" dml=\"0110\" >
<table name=\"tb01\" dml=\"0000\"></table>
<table name=\"tb02\" dml=\"1111\"></table>
</schema>
</privileges>
-->
</user>
<!--只读用户-->
<user name=\"mycat_read\">
<property name=\"password\">Qf@12345!</property>
<property name=\"schemas\">TESTDB</property>
<property name=\"readOnly\">true</property>
</user>
2.编辑schema.xml
[root@mysql_mycat conf]# vim schema.xml
<?xml version=\"1.0\"?>
<!DOCTYPE mycat:schema SYSTEM \"schema.dtd\">
<mycat:schema xmlns:mycat=\"http://io.mycat/\">
<schema name=\"testdb\" checkSQLschema=\"false\" sqlMaxLimit=\"100\" dataNode=\"dn1\"></schema>
<dataNode name=\"dn1\" dataHost=\"localhost1\" database=\"testdb\"/>
<dataHost name=\"localhost1\" maxCon=\"1000\" minCon=\"10\" balance=\"3\" writeType=\"0\" dbType=\"mysql\" dbDriver=\"native\" switchType=\"1\" slaveThreshold=\"100\">
<heartbeat>select user()</heartbeat>
<writeHost host=\"mysql_master\" url=\"192.168.232.11:3306\" user=\"mycat\" password=\"Qf@12345!\" >
<readHost host=\"mysql_slave1\" url=\"192.168.232.12:3306\" user=\"mycat\" password=\"Qf@12345!\" />
</writeHost>
</dataHost>
</mycat:schema>
注意:一定要严格遵守标签开始和结尾格式,否则会报错导致mycat启动后自动关闭
3.在mysql_mycat上创建库
mysql> create database testdb;
mysql> use testdb;
mysql> create table testdb.t1(id int);
mysql> insert into testdb.t1 values(1);
4.在master上给用户授权
[root@mysql_master ~]# mysql -uroot -p
mysql> grant all on testdb.* to mycat@\'%\' identified by \'Qf@12345!\';
mysql> flush privileges;
5.在mycat机器上测试mycat用户登录master
[root@mysql_mycat ~]# mysql -umycat -p\'Qf@12345!\' -h mysql_master
登录上之后不进行任何操作,直接退出
6.在wrapper.conf中添加
[root@mycat mycat]# cd conf/
[root@mysql_mycat conf]# vim wrapper.conf
#在设置JVM哪里添加如下内容
wrapper.startup.timeout=300 //超时时间300秒
启动:
[root@mysql_mycat mycat]# bin/mycat start
Starting Mycat-server...
[root@mysql_mycat mycat]# jps
3814 Jps
3801 WrapperSimpleApp
再次启动jps查看,如果进程丢失一个,则是因为jdk版本问题,更换jdk
四、卸载重新安装jdk
1.卸载原有jdk版本
[root@mysql_mycat mycat]# java -version
查看jdk所有包
[root@mysql_mycat ~]# rpm -qa | grep openjdk
卸载:[root@mysql_mycat ~]# rpm -qa | grep openjdk |xargs rpm -e --nodeps
再查看:[root@mysql_mycat ~]# rpm -qa | grep openjdk
发现jdk已全部删除
2.安装新jdk1.8
(1)从本地上传jdk文件压缩包
(2)解压缩
[root@mysql_mycat ~]# tar xzf jdk-8u162-linux-x64.tar.gz -C /usr/local/
[root@mysql_mycat ~]# cd /usr/local/
[root@mysql_mycat local]# mv jdk1.8.0_162/ java
(3)设置环境变量
[root@mysql_mycat ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
然后使之生效:
[root@mysql_master local]# source /etc/profile
(4)查看java版本
[root@mysql_mycat ~]# java -version
java version \"1.8.0_162\"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
五、开启mycat
[root@mysql_mycat mycat]# bin/mycat start
[root@mysql_mycat mycat]# jps
7173 WrapperSimpleApp
7189 Jps
查看8066端口
[root@mysql_mycat ~]# netstat -lntp | grep java
(1)将master当做mycat的客户端
[root@mysql_master ~]# mysql -umycat -hmysql_mycat -p\'Qf@12345!\' -P 8066
六、常见问题
1.在master上登录:mysql -umycat -hmysql_mycat -p\'Qf@12345!\' -P 8066
2.若出现连接失败,大概率是mycat未启动
3.cd到/mycat/bin/mycat目录,start启动
4.查看jps,有两个进程,启动成功
5.多行注释:
<![CDATA[---内容---]]>
6.mycat配置的密码是Qf@12345!
7.插入数据操作在mycat端
七、show tables报错
如果在show table报错:
mysql> show tables;
ERROR 3009 (HY000): java.lang.IllegalArgumentException: Invalid DataSource:0
解决方式:
登录master服务将mycat的登录修改为%
mysql> update user set Host = \'%\' where User = \'mycat\' and Host = \'localhost\';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
或者在授权用户mycat权限为*.*
来源:https://www.cnblogs.com/qsmm/p/16844836.html
本站部分图文来源于网络,如有侵权请联系删除。