1 Star 0 Fork 120

勇敢牛牛/DBA

forked from panglijing/DBA 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
RDBMS2_DAY03_知识点版 4.98 KB
一键复制 编辑 原始数据 按行查看 历史
panglijing 提交于 2021-11-20 02:02 . update RDBMS2_DAY03_知识点版.
RDBMS2_day03 mycat服务 (实现数据库分库分表方式存储)
一、 相关概念
1)什么是分库分表
将存放在一台数据库服务器中的数据,按照特定方式进行拆分,
分散存放到多台数据库服务器中,以达到分散单台服务器负载的效果
2)分库分表分割方式
第一种:水平分割(横向切分)
按照表中指定字段的分片规则,将表记录按行切分,分散存储到多个数据库中。
第二种:垂直分割(纵向切分)
将单个数据库的多个表按业务类型分类,分散存储到不同的数据库
3) MyCAT软件介绍(提供数据分库分表存储的服务软件(中间件))
mycat是基于Java的分布式数据库系统中间件,为高并发环境的分布式存储提供解决方案
适合数据大量写入的存储需求
支持MySQL、Oracle、Sqlserver、Mongodb等
提供数据读写分离服务
提供数据分片服务
基于阿里巴巴Cobar进行研发的开源软件
4) 提供的10种分片规则
1 枚举法 sharding-by-intfile
2 固定分片 rule1
3 范围约定 auto-sharding-long
4 求模法 mod-long
5 日期列分区法 sharding-by-date
6 通配取模 sharding-by-pattern
7 ASCII码求模通配 sharding-by-prefixpattern
8 编程指定 sharding-by-substring
9 字符串拆分hash解析 sharding-by-stringhash
10 一致性hash sharding-by-murmur
5) 分片服务器的工作过程
当mycat收到一个SQL命令时
解析SQL命令涉及到的表
然后看对表的配置,如果有分片规则,则获取SQL命令里分片字段的值,并匹配分片函数,获得分片列表
然后将SQL命令发往对应的数据库服务器去执行
最后收集和处理所有分片结果数据,并返回到客户端
6) 存储的拓扑结构
192.168.4.50 主机做客户端 只有mysql命令就可以 数据库服务不需要
准备新的服务ip地址192.168.4.56 做mycat分片服务器
关 firewalld selinux 不需要安装任何数据库服务软件。
准备3台崭新的数据库服务器 192.168.4.53 /54 /55
(如果有相同Ip地址的数据库服务器要删除、重新准备3台新的数据库服务器 数据库管理员本机登录密码123qqq...A)
7) 部署mycat服务(192.168.4.56)
第一步:安装软件
第二步:了解安装目录文件列表
bin //mycat命令
catlet //扩展功能
conf //配置文件
.txt 和 ..properties 结尾的是 分片规则配置文件
.xml 结尾的是 mycat服务配置文件
lib //mycat使用的jar包
logs //mycat启动日志和运行日志
version.txt //mycat软件 说明文件
第三步:修改配置文件(重要)
#首先定义客户端连接mycat 使用的用户名、密码机虚拟库名
[root@maxscale56 ~]# vim /usr/local/mycat/conf/server.xml
#定义分片存储数据的表
[root@maxscale56 ~]# vim /usr/local/mycat/conf/schema.xml
第四步:配置数据库服务器(重要)
#创建存储数据的库
#用户授权
第五步:启动56主机的 mycat服务 并查看服务状态
5.1、启动服务的准备工作
1)把56主机的物理内存调大到 1G 以上
2)给mycat服务器定义主机名 (hostname mycat56)
3)测试数据库服务器的授权用户pljadmin
5.2、启动mycat服务
5.3、查看服务状态 netstat -utnalp | grep 8066
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
建表存储数据的步骤:
1) 连接mycat服务器
2)创建表:必须根据表使用的分片规则建表,具体操作如下:
1 确定使用分片规则的表叫什么名字名 (查看schema.xml 文件里 <table> )
2 确定分片字段的表头名 (查看rule.xml文件里的 <tableRule> )
3 确定分片规则使用的配置文件,定义分片字段的值 (查看rule.xml文件里的 <function> )
4 修改分片规则的配置文件,定义分片字段的值
5 重启mycat服务
6 创建表并存储数据
3)在数据库服务器查看数据
~~~~~~~~~~~~~~~~~~~~~~~~~~~分片规则的使用~~~~~~~~~~~~~~~~~~
1) sharding-by-intfile 枚举分片规则的使用 工作过程:分片字段的值必须在列举范围内选择
2) mod-long 求模法分片规则的使用 工作过程: 根据分片字段值与设定的数字求模结果存储数据
当余数是 0 数据存储到 dn1
当余数是 1 数据存储到 dn2
当余数是 2 数据存储到 dn3
~~~~~~~~~~~~~~~~~~~~~~~~ 添加新库新表~~~~~~~~~~~~~~~~~~~~~
7.1 添加新库 vim server.xml
7.2 添加新表 vim schema.xml
7.3 重启mycat服务
7.4 查看服务的端口号
7.5 客户端连接mycat服务器 查看库 和 表
7.6 创建表并存储数据
7.7 在数据库服务器本机查看数据
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/brave-co/dba.git
git@gitee.com:brave-co/dba.git
brave-co
dba
DBA
master

搜索帮助