【MySQL读写分离重要】【mycat包 jdk包】【报错解决方法】

读写分离

在这里插入图片描述

**在数据库集群架构中,让主库负责处理写入操作,而从库只负责处理select查询,让两者分工明确达到提高数据库整体读写性能。**当然,主数据库另外一个功能就是负责将数据变更同步到从库中,也就是写操作。
读写分离的好处

  1. 分摊服务器压力,提高机器的系统处理效率。
  2. 在写入不变,大大分摊了读取,提高了系统性能。另外,当读取被分摊后,又间接提高了写入的性能。所以,总体性能提高了。
  3. 增加冗余,提高服务可用性,当一台数据库服务器宕机后可以调整另外一台从库以最快速度恢复服务。

Mycat 数据库中间件
Mycat 是一个开源的数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有存 储引擎,所以并不是完全意义的数据库系统。 那么 Mycat 是什么?Mycat 是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服 务是实现对主从数据库的读写分离、读的负载均衡。

**常见的数据库中间件:
在这里插入图片描述
MyCAT 是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了 JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行。

读写分离布置条件

步骤;准备一台新的主机放到master的前面做代理
方法;’192.168.246.133 mysql-mycat 解析
方法;并将三台机器互做本地解析,而且已经做好主从复制,最少是主从复制 这里仔细检测

步骤;关闭防火墙 修改主机名
[root@mycat-server ~]# systemctl stop firewalld
[root@mycat-server ~]# setenforce 0
在这里插入图片描述
步骤;安装之前需要下载 俩个包 一个是 中间件 jdk mycat
我这里是选择上传到服务器
在这里插入图片描述
步骤:进行解压 改下名字 配置环境变量
方法;tar xzf jdk-8u221-linux-x64.tar.gz -C /usr/local/ 解压到这个目录下
方法;tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/ 俩个都解压
方法;[root@mycat ~]# cd /usr/local/ 进到这个目录下
方法;[root@mycat local]# mv jdk1.8.0_221/ java 把文件改个名字
在这里插入图片描述
在这里插入图片描述
设置环境变量
方法1;[root@mycat local]# vim /etc/profile #添加如下内容,

JAVA_HOME=/usr/local/java  #指定java安装目录
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

[root@mycat local]# source /etc/profile 重点 一定要刷新一下

方法2;# vim /etc/profile #添加如下内容
PATH=/usr/local/java/bin:$PATH 添加这个

[root@mycat local]# source /etc/profile 重点 一定要刷新一下
在这里插入图片描述
配置mycat
认识配置文件
MyCAT 目前主要通过配置文件的方式来定义逻辑库和相关配置:
/usr/local/mycat/conf/server.xml #定义用户以及系统相关变量,如端口等。其中用户信息是前端应用程序连接 mycat 的用户信息。
/usr/local/mycat/conf/schema.xml #定义逻辑库,表、分片节点等内容。

步骤;配置server.xml 就是一个虚拟用户

方法;下面的用户和密码是应用程序连接到 MyCat 使用的,可以自定义配置**
方法;而其中的schemas 配置项所对应的值是逻辑数据库的名字,也可以自定义,但是这个名字需要和后面 schema.xml 文件中配置的一致。

[root@mycat ~]# cd /usr/local/mycat/conf/ 先进入这个目录下
在这里插入图片描述
[root@mycat conf]# vim server.xml
在这里插入图片描述

配置schema.xml 这里面要仔细要删除的东西多 直接看下面成图

以下是配置文件中的每个部分的配置块儿
逻辑库和分表设置
<schema name=“testdb” // 逻辑库名称,与server.xml的一致
checkSQLschema=“false” // 不检查sql
sqlMaxLimit=“100” // 最大连接数
dataNode=“dn1”> // 数据节点名称

数据节点
<dataNode name=“dn1” // 此数据节点的名称
dataHost=“localhost1” // 主机组虚拟的
database=“testdb” /> // 真实的数据库名称

主机组
<dataHost name=“localhost1” // 主机组
maxCon=“1000” minCon=“10” // 连接
balance=“0” // 负载均衡
writeType=“0” // 写模式配置
dbType=“mysql” dbDriver=“native” // 数据库配置
switchType=“1” slaveThreshold=“100”>

在这里插入图片描述
读写配置



下面代码是 配置的ab复制适合一主一从

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <schema name="rng" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="localhost1" database="t1" />
        <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="master" url="192.168.150.175:3306" user="mycat" password="Qf@123456">
                <readHost host="slave" url="192.168.150.176:3306" user="mycat" password="Qf@123456" />
                </writeHost>
        </dataHost>
</mycat:schema>

在这里插入图片描述

以下是组合为完整的配置文件,适用于一主二从的架构 ,就比上面多了一个读 配置好入下图
细节提示 真实存在的表 要在主节点数据库里面真实存在 没有记得去创建
在这里插入图片描述

步骤; 在真实的 主节点 master 数据库上给用户授权

grant all on t1.* to mycat@'%' identified by 'Qf@123456';

mysql> grant all on testdb.* to mycat@’%’ identified by ‘Qf@456789’; 创建用户 课件上的
mysql> flush privileges;
在这里插入图片描述
步骤;创建完 在其他从节点上面 测试一下能不能登录
在这里插入图片描述

步骤;启动Mycat 启动之前需要调整JVM
方法;在wrapper.conf中添加
方法;[root@mycat mycat]# cd /usr/local/mycat/conf
方法;[root@mycat conf]# vim wrapper.conf #在设置JVM哪里添加如下内容
wrapper.startup.timeout=300 //超时时间300秒
wrapper.ping.timeout=120 搜索这个 找到添加上面的那个
在这里插入图片描述
启动: /usr/local/mycat/bin/mycat start #需要稍微等待一会
Starting Mycat-server…
[root@mycat ~]# jps #查看mycat是否启动
13377 WrapperSimpleApp 出现这个说明启动成功 等一会
13431 Jps
[root@mycat ~]# netstat -lntp | grep java 查看端口号
在这里插入图片描述
测试 mycat 用一开始创建的虚拟用户登录
将master当做mycat的客户端
[root@mysql-master ~]# mysql -mingqing -h mysql-mycat -p’mingqing@123’ -P 8066
在这里插入图片描述

报错解决方法

如果在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权限为*.*

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值