(七)mysql中间件mycat配置和部署(基于M-M-S-S)

学习预览:

(一)mysql 运维基础篇(Linux云计算从入门到精通)

(二)mysql 索引和视图(数据库运维基础补充)

(三)mysql 触发器、存储过程和函数(数据库运维基础补充)

(四)MySQL安全机制和日志管理(mysql运维)

(五)mysql数据备份—物理备份(完备+lvm快照+xtrabackup)+逻辑备份(mysqldump+导入导出)

(六)mysql复制技术—M-S主从配置(传统+GTID)+M-M-S-S主从配置(GTID)

(七)mysql中间件mycat配置和部署(基于M-M-S-S)

(八) 数据库集群技术—Galera Cluster安装与配置

(九)数据库集群技术Galera+mycat(数据库运维学习终章)


 

CONTENT

7.1 DB Proxy数据库中间件概述

7.2 mycat概述

7.3 配置java环境

7.4 mycat安装部署

7.4.1 下载mycat和相关驱动

7.4.2 修改配置文件

7.4.3 master1上开启授权账号

7.5 开启mycat并测试


7.1 DB Proxy数据库中间件概述

(1)DB Proxy的应用场景,APPserver端不需要判断如何去访问数据库(毕竟后面的数据库环境可能会比较复杂),所以只需要安装proxy就可以实现读写分离,访问数据库。大概的拓扑图帮助大家理解其概念哦:

(2)数据库中间件的主要作用:

  • 1.读写分离 M-S-S M-M-S-S
  • 2.负载均衡 Galera Cluster
  • 3.支持数据的分片自动路由与聚合

(3)常见的数据库中间件:

  • MySQL Proxy        MySQL官方(这个好像不太好用的亚子)
  • Atlas                       奇虎360
  • DBProxy                美团点评
  • Amoeba                早期阿里巴巴
  • cober                     阿里巴巴
  • MyCat                   阿里巴巴  (这个比较常用,下面我就使用mycat来部署mysql中间件)

7.2 mycat概述

这个官网上给它的解释很详细,我就简单拉个概念。

  • 一个彻底开源的,面向企业应用开发的大数据库集群
  • 支持事务、ACID、可以替代MySQL的加强版数据库
  • 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
  • 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
  • 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
  • 一个新颖的数据库中间件产品

7.3 配置java环境

下面我就直接开始安装mycat了,先配置java环境,mycat是依赖java环境的。

#我安装的jdk14版本,比较新,大家根据需要下载
wget https://download.oracle.com/otn-pub/java/jdk/14.0.1+7/664493ef4a6946b186ff29eb326336a2/jdk-14.0.1_linux-x64_bin.tar.gz?AuthParam=1587277033_3ff384ec1aceaba6c3613c6c76d44642

#检查一下本地是否有安装java,有的话先卸载,因为低版本的java不适用mycat
rpm -qa | grep java
yum remove java-1.* -y
 
#解压
tar xf jdk-14.0.1_linux-x64_bin.tar.gz\?AuthParam\=1587277033_3ff384ec1aceaba6c3613c6c76d44642 -C /usr/local/  
ln -s /usr/local/jdk-14.0.1/ /usr/local/java   #创建一个链接方便使用

#编辑环境变量
vim /etc/profile
----------------------------------------------------------------------------------------
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
----------------------------------------------------------------------------------------
#source生效
source /etc/profile  

env | grep java  #检查java环境
PATH=/usr/local/java/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
JAVA_HOME=/usr/local/java
----------------------------------------------------------------------------------------
java -version  #检查JAVA版本
java version "14.0.1" 2020-04-14
Java(TM) SE Runtime Environment (build 14.0.1+7)
Java HotSpot(TM) 64-Bit Server VM (build 14.0.1+7, mixed mode, sharing)

7.4 mycat安装部署

我这个依旧是基于上篇文章M-M-S-S做的,拓扑如下:

M-M-S-S配置博客链接

7.4.1 下载mycat和相关驱动

(1)下载mycat:

#我下载的是1.6.7版本
wget http://dl.mycat.i0/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux. tar.gz
#解压到/usr/local目录下
tar xf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz -C /usr/local/

#修改权限
useradd mycat;passwd mycat
chown mycat:mycat /usr/local/mycat

(2)下载8.x版本的驱动

因为我的数据库是mysql8版本,需要下载8.x版本的驱动,Mycat 默认的MySQL驱动版本为5.x。到maven中央仓库上复制8.x驱动jar包的下载地址,然后到Linux上使用wget命令进行下载:

https://mvnrepository.com/artifact/mysql/mysql-connector-java

wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18.jar
#将jar包方到这个目录下,并删除5.X版本
mv mysql-connector-java-8.0.18.jar /usr/local/mycat/lib/
rm -rf /usr/local/mycat/lib/mysql-connector-java-5.1.35.jar
#接着使用chmod命令设置该驱动包的权限:
chmod 777 lib/mysql-connector-java-8.0.18.jar 

7.4.2 修改配置文件

主要配置文件schema.xml、server.xml 、wrapper.confrule.xml。

方便观看,我把多余的注释和一些内容删去了,但不影响mycat的使用,后面我会再详细介绍配置文档的。

(1)schema.xml文件配置,开放两个数据库(testdb和bbs)给用户。

cd /usr/local/mycat/;
vim conf/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>
        <schema name="bbs" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2">
        </schema>

        <dataNode name="dn1" dataHost="localhost1" database="testdb" />
        <dataNode name="dn2" dataHost="localhost1" database="bbs" />

        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
     <writeHost host="master1" url="jdbc:mysql://master1:3306" user="mycat_user" password="Root@123">
     <readHost host="slave1" url="jdbc:mysql://slave1:3306" user="mycat_user" password="Root@123" />
     <readHost host="slave2" url="jdbc:mysql://slave2:3306" user="mycat_user" password="Root@123" />
     </writeHost>

      <writeHost host="master2" url="jdbc:mysql://master2:3306" user="mycat_user" password="Root@123">
      <readHost host="slave1" url="jdbc:mysql://slave1:3306" user="mycat_user" password="Root@123" />
      <readHost host="slave2" url="jdbc:mysql://slave2:3306" user="mycat_user" password="Root@123" />
      </writeHost>
    </dataHost>
</mycat:schema>

(2)server.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<!--配置连接mycat的用户-->
        <user name="root">
                <property name="password">123456</property>
                <!--虚拟数据库,这个要和schema.xml定义的数据库相一致-->
                <property name="schemas">testdb,bbs</property>
        </user>
        <!--配置第二个连接mycat的用户-->
        <user name="user">
                <property name="password">user</property>
                <property name="schemas">testdb,bbs</property>
                <!--开启只读模式-->
                <property name="readOnly">true</property>
        </user>
</mycat:server>
               

(3)rule.xml文件配置就默认好了,以后再研究,不过wrapper.conf这个文件要注意了,后面mycat频繁起不来的很多原因都可以在这边解决

  1. 比如MyCat启动报错,“运行./mycat console报错 Unrecognized VM option 'AggressiveOpts'”,我们只需在这个文件把这行注释掉。
  2. 还有会输出以下错误信息:(是因为mycat默认需要的内存要求大于机器的实际内存,修改一下就好了。)

wrapper  | Launching a JVM...
wrapper  | JVM exited while loading the application.
jvm 1    | Invalid maximum heap size: -Xmx4G
jvm 1    | The specified size exceeds the maximum representable size.
jvm 1    | Error: Could not create the Java Virtual Machine.
jvm 1    | Error: A fatal exception has occurred. Program will exit.
wrapper  | Launching a JVM...

wrapper  | JVM exited while loading the application.


#wrapper.java.additional.3=-XX:+AggressiveOpts

wrapper.java.additional.9=-Xmx1G
wrapper.java.additional.10=-Xms256M

7.4.3 master1上开启授权账号

这个很简单,注意这边账号和密码要和schema.xml给的账号密码一致,并且授权的数据库也要一致哦。

 create user 'mycat_user'@'192.168.119.164' identified with mysql_native_password by 'Root@123';
 grant all on testdb.* to 'mycat_user'@'192.168.119.164' ;
 grant all on bbs.* to 'mycat_user'@'192.168.119.164' ;

7.5 开启mycat并测试

(1)启动mycat并检查java进程是否起来

#通过console可以启动mycat并且检查启动出现的问题
[root@Centos7-host1 mycat]# bin/mycat console
#保证没问题直接start
[root@Centos7-host1 mycat]# bin/mycat start

#检查java进程是否起来,记住这边8066是客户端登录mycat的端口哦!
[root@Centos7-host1 mycat]# ss -nltp | grep java
LISTEN     0      1      127.0.0.1:32000                    *:*                   users:(("java",pid=84602,fd=4))
LISTEN     0      100         :::9066                    :::*                   users:(("java",pid=84602,fd=68))
LISTEN     0      100         :::8066                    :::*                   users:(("java",pid=84602,fd=72))

(2)客户端登录测试

客户机也要添加相应的主机解释,也要安装mysql客户端(最好不要用mysql8版本的,会出问题,因为密码加密的方式不一样)。我这个测试机安装的是MariaDB客户端。

#登录,这边注意连接的主机是mycat的IP哦,账号密码也是访问mycat的账户密码,不要用访问数据库的账户密码
#端口是8066,前面我提示过了。
mysql -h192.168.119.164 -uroot -p123456 -P8066

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.29-mycat-1.6.7.4-release-20200105164103 MyCat Server (OpenCloudDB)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| bbs      |
| testdb   |
+----------+

MySQL [(none)]> select * from testdb.t1;
+----+---------+
| id | name    |
+----+---------+
|  1 | jack    |
|  2 | tom     |
|  3 | lucy    |
|  4 | master1 |
|  5 | master2 |
+----+---------+

(3)mycat主机也可以查看日志,看客户端访问的记录,访问的是哪台数据库(我就不细说咯)。

[root@Centos7-host1 mycat]# cat logs/mycat.log 

over,还有最后一篇数据库集群技术再下一篇博客中介绍!

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硬核的无脸man~

你的鼓励是我创作的最大功力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值