Mycat实战案例

8 篇文章 0 订阅

目录

一.简介

二.非分片表配置

1.在数据库中使用单个节点

2.server.xml在之前时就配置完毕了

3.schema.xml配置

4.修改配置模板

5.修改xml

6.历经九九八十一难,终于过了,浪费我一个小时。

7.老是卡在一个警告上面,又浪费我半个小时

8.查看数据库内容

9.添加语句

10.测试案例的读写分离(多个节点)

11.模板,修改并存

12.登录测试

13.进入Mysql-Mycat中

14.进入表查看对应信息

15.写操作的管理dataHost中writeType控制

1.为了测试读写分离将数据库中双机热备关系挡掉(各自执行stop slave)

2.俩边数据不同步

3.查看数据是 10.42.60.249的

4.查看写数据(读写都是在一个节点中写的)

5.修改对应配置 

6.随机读取

16.读操作的配置

1.在配置文件中在writeType是0是对balance的值从0-3配置测试

2.实现读写分离(设置为1)

三.分片表格的测试

1.关闭主从

2.创建数据

3.修改schema.xml配置

1.要修改的模板   

2.运行Mycat(额外开启一个窗口只负责启动Mycat)

3.进入数据库,查看对应表

4.增加数据

5.查看新增数据

6.分析第一分片,第二分片

7.新增一条500W以后数据

8.新增一条超过千万数据

9.查看全部数据

四.以上实战案例初步完成

1.总结实现功能

2.mycat测试出现的任何问题

1.连接后端数据库失败

2.schema.xml中配置writeHost readHost url指定错误

3.xml配置失败

4.重装mycat

5.Mycat停止不下来

6.Myca 无法启动


一.简介

一个mycat中维护的各种不同结构的主从,分布式对应的所有标签含义

二.非分片表配置

1.在数据库中使用单个节点

数据库mysql01,表格student();

2.server.xml在之前时就配置完毕了

3.schema.xml配置

​
<mycat:schema xmlns:mycat="http://org.opencloudb/" >
#创建一个逻辑库mytest  自动追加逻辑库名  最大查询数
	<schema name="mytest" checkSQLschema="true" sqlMaxLimit="100">
#创建一个非分片表 主键默认ID 一个分片
		<table name="student" primaryKey="ID" dataNode="dn1"/>
	</schema>
#真实存在的数据库名 mysql01 
	<dataNode name="dn1" dataHost="localhost1" database="mysql01" />
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
		writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
#sql语句
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM1" url="10.42.60.249:3306" user="root"
			password="root"/>
#后端Mycat连接数据库
	</dataHost>

</mycat:schema>

​

4.修改配置模板

IP需要换一下

5.修改xml

6.历经九九八十一难,终于过了,浪费我一个小时。

7.老是卡在一个警告上面,又浪费我半个小时

Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (HY000): Access denied for user 'root' with host '10.42.60.249'

PS:2019-7-31:补充解决方案

先关闭[root@liuyong mycat]# bin/mycat console    在运行即可 今天又遇到这个坑,忘记记录解决方法 现在补充下

十万个曹尼玛在崩腾

  • show databases;
  • use mytest;
  • show tables;
  • select * from student;

8.查看数据库内容

9.添加语句


10.测试案例的读写分离(多个节点)

dataHost中添加多个数据库多个writeHost readHost

11.模板,修改并存

<schema name="mytest" checkSQLschema="true" sqlMaxLimit="100">

<table name="student" primaryKey="ID" dataNode="dn1"/>

</schema>

<dataNode name="dn1" dataHost="localhost1" database="mysql01" />

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"

writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<writeHost host="hostM1" url="10.9.151.60:3306" user="root"

password="root"/>

<writeHost host="hostM2" url="10.9.104.184:3306" user="root"

password="root"/>

</dataHost>

12.登录测试

13.进入Mysql-Mycat中

14.进入表查看对应信息

因为两个数据库表的信息完全相同,不确定,查询的是哪个数据库

15.写操作的管理dataHost中writeType控制

1.为了测试读写分离将数据库中双机热备关系挡掉(各自执行stop slave)

在各自的数据库中,而不是在mycat中执行

2.俩边数据不同步

3.查看数据是 10.42.60.249的

4.查看写数据(读写都是在一个节点中写的)

5.修改对应配置 

  • writeType:写权限设定1值已经在1.5之后的mycat不建议了
    • 0:默认从第一个writeHost写数据
    • 1:老版本的继承,在多个writeHost时,作用是读写的随机进行;writeType=1屏蔽balcance

6.随机读取

16.读操作的配置

1.在配置文件中在writeType是0是对balance的值从0-3配置测试

  • balance:读权限的定义
    • 0:不开启读的分离,所有的读操作都在第一个writeHost
    • 1:全部的readHost和备用writeHost都参与读数据的平衡,如果读的请求过多,负责写的第一个writeHost也分担一部分(读写分离)
    • 2:所有的读操作,都随机的在所有的writeHost和readHost中进行
    • 3:所有的读操作,都到writeHost对应的readHost上进行(备用writeHost不参加了),在集群中没有配置ReadHost的情况下,读都到第一个writeHost完成
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"

writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"/>

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"

writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"/>

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="2"

writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"/>

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"

writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"/>

2.实现读写分离(设置为1)


三.分片表格的测试

1.关闭主从

必须保证两台数据库分离没有主从关系之前已经解除

2.创建数据

创建数据库中分片表格product表格

3.修改schema.xml配置

<table name="product" primaryKey="ID" dataNode="dn1,dn2" 
        rule="auto-sharding-long"/>

分片主要配置   rule 自动切分级别

<schema name="mytest" checkSQLschema="true" sqlMaxLimit="100">
		<table name="student" primaryKey="ID" dataNode="dn1"/>
		<table name="product" primaryKey="ID" dataNode="dn1,dn2" 
		rule="auto-sharding-long"/>
	</schema>
	<dataNode name="dn1" dataHost="localhost1" database="mysql01" />
	<dataNode name="dn2" dataHost="localhost2" database="mysql01" />
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
		writeType="1" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM1" url="10.42.60.249:3306" user="root"
			password="root"/>
	</dataHost>
	<dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
		writeType="1" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM1" url="10.42.65.114:3306" user="root"
			password="root"/>
	</dataHost>

1.要修改的模板   

2.运行Mycat(额外开启一个窗口只负责启动Mycat)

3.进入数据库,查看对应表

4.增加数据

5.查看新增数据

 rule标签开启级别,0-500W一下在第一分片dn1

可以手动修改分片级别

6.分析第一分片,第二分片

这里不是所谓的DN1就是第一分片,DN2就是第二分片,是根据,谁在前,就是第一分片

7.新增一条500W以后数据

超过500W保存在第二分片

8.新增一条超过千万数据

第二分片最大存储为1000W,找不到其他分片报错

9.查看全部数据


四.以上实战案例初步完成

1.总结实现功能

  • 实现非分片表格

  • 实现读写分离

  • 实现分片表格

2.mycat测试出现的任何问题

1.连接后端数据库失败

 

后端数据库的mysql.user表格内容不是上面内容,没有把所有root用户的密码改成'root'加密字符串

2.schema.xml中配置writeHost readHost url指定错误

根据错误信息去更改

3.xml配置失败

console控制台启动都会指定到具体内容;

4.重装mycat

将安装文件mycat解压文件夹删除,重新解压.

5.Mycat停止不下来

PS:遇到这个问题,我目前只能重启,没解决,但是简单说一下,

如何避免这个问题的产生,单独开一个窗口,

只负责来开启Mycat,其他功能一律在其他窗口执行,

停止Stop也必须在其他窗口去关闭,

6.Myca 无法启动

当Mycat 正常启动之后,不要操作,

如Ctrl+Z 强制退出等操作,当强行退出,会产生,无法正常关闭,

修改对应配置文件也无法正常重新启动Mycat


暂告一段落

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值