(一)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(数据库运维学习终章)
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并测试
(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中间件)
这个官网上给它的解释很详细,我就简单拉个概念。
- 一个彻底开源的,面向企业应用开发的大数据库集群
- 支持事务、ACID、可以替代MySQL的加强版数据库
- 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
- 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
- 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
- 一个新颖的数据库中间件产品
下面我就直接开始安装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)
我这个依旧是基于上篇文章M-M-S-S做的,拓扑如下:
M-M-S-S配置博客链接
(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
主要配置文件schema.xml、server.xml 、wrapper.conf和rule.xml。
方便观看,我把多余的注释和一些内容删去了,但不影响mycat的使用,后面我会再详细介绍配置文档的。
(1)schema.xml文件配置,开放两个数据库(testdb和bbs)给用户。
cd /usr/local/mycat/;
vim conf/schema.xml
select user()
(2)server.xml文件配置
123456
testdb,bbs
user
testdb,bbs
true
(3)rule.xml文件配置就默认好了,以后再研究,不过wrapper.conf这个文件要注意了,后面mycat频繁起不来的很多原因都可以在这边解决
- 比如MyCat启动报错,“运行./mycat console报错 Unrecognized VM option 'AggressiveOpts'”,我们只需在这个文件把这行注释掉。
- 还有会输出以下错误信息:(是因为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
这个很简单,注意这边账号和密码要和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' ;
(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,还有最后一篇数据库集群技术再下一篇博客中介绍!