Mycat入门(mycat1.6)
yuyutoo 2025-04-30 20:55 1 浏览 0 评论
一、Linux系统下搭建Mycat
注:如果没有服务器可以选择虚拟机进行操作
1、首先准备好服务器或者虚拟机
2、安装和配置MySQL数据库
2.1、删除原来的数据库
//查询已安装的mariadb
[root@wcy ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64 //文件名
//卸载mariadb,文件名为上述命令查询出来的文件
[root@wcy ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
2.2、下载与安装MySQL
a、安装MySQL官方的yum repository
[root@wcy ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
b、下载rpm包
[root@wcy ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm
c、安装MySQL服务
如果是centos8
首先执行:
yum module disable mysql
[root@wcy ~]# yum -y install mysql-community-server
d、启动MySQL服务
[root@wcy ~]# systemctl start mysqld.service
查看启动状态
[root@localhost ~]# systemctl status mysqld.service
安装完成!
2.3、配置MySQL
a、mysql的几个相关命令
重启:systemctl restart mysqld.service
关闭:systemctl stop mysqld.service
配置开机启动
[root@wcy ~]# systemctl enable mysqld
[root@wcy ~]# systemctl daemon-reload
b、配置文件默认路径
配置文件:/etc/my.cnf
日志文件:/var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid
c、修改root密码
grep 'temporary password' /var/log/mysqld.log
首次通过初始密码登录后,使用以下命令修改密码
mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY'你的root密码';
d、重新载入
mysql> flush privileges;
e、远程访问
GRANT ALL ON *.* TO'root'@'%' IDENTIFIED BY '你的密码'; //只有执行了
注意:如果是阿里云用户注意开放3306或相关端口
f、mysql安装之后默认的字符集是latin,我们修改为UTF-8。可以使用status命令查看。
mysql> status;
输入命令:vim /etc/my.cnf
在最下方追加
[client]
default-character-set = utf8
[mysqld]
character-set-server=utf8
lower_case_table_names = 1
[mysql]
default-character-set=utf8
重启MySQL
systemctl restart mysqld.service
3、安装jdk1.8
3.1、安装方式一
安装命令:
yum install -y java-1.8.0-openjdk.x86_64
查询jdk版本
命令:
java -version
3.2、安装方式二
a、下载环境,JDK安装包
https://www.oracle.com/java/technologies/javase-jdk16-downloads.html
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
推荐安装11
https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
这里我下载的是Linux x64 Compressed Archive,可以根据自己的环境自行下载
b、在/usr/local/下创建java目录
[root@mycat2 local]# mkdir java
[root@mycat2 local]# chmod 777 java
c、使用ftp链接服务器并把下载的安装包上传至java目录
d、进入到java目录,解压上传文件
tar -zxvf +需要解压的包名
[root@mycat2 java]# tar -zxvf jdk-16.0.2_linux-x64_bin.tar.gz
e、编辑配置文件,配置环境变量,vim /etc/profile进入编辑状态,在打开的文件最后面加上如下代码:
JAVA_HOME=/usr/local/java/jdk-16.0.2
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
f、重新加载配置文件,输入:
source /etc/profile
g、最后一步,查看安装情况
输入:
java -version
输入:
javac
4、mycat下载地址
http://dl.mycat.org.cn/1.6-RELEASE/
http://www.mycat.org.cn/
http://dl.mycat.org.cn/1.6.6/
4.1、服务器下载wget
wget http://dl.mycat.org.cn/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
4.2、解压
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
4.3、启动
[root@mycat2 mycat]# ./mycat/bin/mycat
[root@mycat2 mycat]# ./mycat/bin/mycat
Usage: ./mycat/bin/mycat { console | start | stop | restart | status | dump }
#控制台|启动|停止|重启|状态|转储
#执行命令的方式
./mycat/bin/mycat +操作
#控制台:
./mycat/bin/mycat console
#启动:
./mycat/bin/mycat start
#停止:
./mycat/bin/mycat stop
#重启:
./mycat/bin/mycat restart
#状态:
./mycat/bin/mycat status
#转储:
./mycat/bin/mycat dump
4.4、测试
[root@mycat2 mycat]# ./mycat/bin/mycat console
二、Mycat核心概念详解
1、数据库中间件可以被当作一个或多个数据库集群构成的逻辑库。
数据库中间件可以以多租户的形式为一个或多个应用提供服务,每个应用访问的可能是一个独立或者共享的物理库,如图:
2、逻辑表
既然有逻辑库,就会有逻辑表。在分布式数据库中,对于应用来说,读写数据的表就是逻辑表。逻辑表可以分布在一个或多个分片库中,也可以不分片。
2.1、分片表
分片表是将指数据量很大的表切分到多个数据库实例中,所有分片组合起来构成了一张完整的表。例如在Mycat上配置t_node的分片表,数据按照规则被切分到dn1、dn2两个节点。
2.2、非分片表
并非所有的表在数据量很大时都需要进行分片,某些表可以不用分片。非分片表是相对于分片表而言的不需要进行数据切分的表。如下配置中的t_node只存在于节点dn1上。
2.3、ER表
关系型数据库是基于实体关系模型(Entity Relationship Model)的,Mycat中的ER表便来源于此。基于此思想,Mycat提出了基于E-R关系的数据分片策略,子表的记录与其所关联的父表的记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据关联查询不会跨库操作。
表分组(Table Group)是解决跨分片数据关联查询的一种很好的思路,也是数据切分的一条重要规则。
2.4、全局表
在一个真实的业务场景中往往存在大量类似的字典表,这些字典表中的数据变动不频繁,而且数据规模不大,很少有超过数十万条的记录。
当业务表因为规模进行分片后,业务表与这些附属的字典表之间的关联查询就成了比较棘手的问题,所以在Mycat中通过数据冗余来解决这类表的关联查询,即所有分片都复制了一份数据,我们把这些冗余数据的表定义为全局表。
数据冗余是解决跨分片数据关联查询的一种很好的思路,也是数据切分规划的另一条重要规则。
3、Mycat原理介绍
Mycat 原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,首先对SQL语句做了一些特定的分析,例如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL语句发往后端的真实数据库,并将返回的结果做适当处理,最终再返回给用户,如图:
如图,Orders表被分为三个分片节点dn1、dn2、dn3,它们分布在两台MySQL Server(dataHost)上,即datanode=database@datahost,因此你可以用1~N台服务器来分片,分片规则(sharding rule)为典型的字符串枚举分片规则,一个规则的定义是分片字段(sharding column)+分片函数(rule function)。这里的分片字段为prov,分片函数则为字符串枚举方式。
相关推荐
- ETCD 故障恢复(etc常见故障)
-
概述Kubernetes集群外部ETCD节点故障,导致kube-apiserver无法启动。...
- 在Ubuntu 16.04 LTS服务器上安装FreeRADIUS和Daloradius的方法
-
FreeRADIUS为AAARadiusLinux下开源解决方案,DaloRadius为图形化web管理工具。...
- 如何排查服务器被黑客入侵的迹象(黑客 抓取服务器数据)
-
---排查服务器是否被黑客入侵需要系统性地检查多个关键点,以下是一份详细的排查指南,包含具体命令、工具和应对策略:---###**一、快速初步检查**####1.**检查异常登录记录**...
- 使用 Fail Ban 日志分析 SSH 攻击行为
-
通过分析`fail2ban`日志可以识别和应对SSH暴力破解等攻击行为。以下是详细的操作流程和关键分析方法:---###**一、Fail2ban日志位置**Fail2ban的日志路径因系统配置...
- 《5 个实用技巧,提升你的服务器安全性,避免被黑客盯上!》
-
服务器的安全性至关重要,特别是在如今网络攻击频繁的情况下。如果你的服务器存在漏洞,黑客可能会利用这些漏洞进行攻击,甚至窃取数据。今天我们就来聊聊5个实用技巧,帮助你提升服务器的安全性,让你的系统更...
- 聊聊Spring AI Alibaba的YuQueDocumentReader
-
序本文主要研究一下SpringAIAlibaba的YuQueDocumentReaderYuQueDocumentReader...
- Mac Docker环境,利用Canal实现MySQL同步ES
-
Canal的使用使用docker环境安装mysql、canal、elasticsearch,基于binlog利用canal实现mysql的数据同步到elasticsearch中,并在springboo...
- RustDesk:开源远程控制工具的技术架构与全场景部署实战
-
一、开源远程控制领域的革新者1.1行业痛点与解决方案...
- 长安汽车一代CS75Plus2020款安装高德地图7.5
-
不用破解原车机,一代CS75Plus2020款,安装车机版高德地图7.5,有红绿灯读秒!废话不多讲,安装步骤如下:一、在拨号状态输入:在电话拨号界面,输入:*#518200#*(进入安卓设置界面,...
- Zookeeper使用详解之常见操作篇(zookeeper ui)
-
一、Zookeeper的数据结构对于ZooKeeper而言,其存储结构类似于文件系统,也是一个树形目录服务,并通过Key-Value键值对的形式进行数据存储。其中,Key由斜线间隔的路径元素构成。对...
- zk源码—4.会话的实现原理一(会话层的基本功能是什么)
-
大纲1.创建会话...
- Zookeeper 可观测性最佳实践(zookeeper能够确保)
-
Zookeeper介绍ZooKeeper是一个开源的分布式协调服务,用于管理和协调分布式系统中的节点。它提供了一种高效、可靠的方式来解决分布式系统中的常见问题,如数据同步、配置管理、命名服务和集群...
- 服务器密码错误被锁定怎么解决(服务器密码错几次锁)
-
#服务器密码错误被锁定解决方案当服务器因多次密码错误导致账户被锁定时,可以按照以下步骤进行排查和解决:##一、确认锁定状态###1.检查账户锁定状态(Linux)```bash#查看账户锁定...
- zk基础—4.zk实现分布式功能(分布式zk的使用)
-
大纲1.zk实现数据发布订阅...
- 《死神魂魄觉醒》卡死问题终极解决方案:从原理到实战的深度解析
-
在《死神魂魄觉醒》的斩魄刀交锋中,游戏卡死犹如突现的虚圈屏障,阻断玩家与尸魂界的连接。本文将从技术架构、解决方案、预防策略三个维度,深度剖析卡死问题的成因与应对之策,助力玩家突破次元壁障,畅享灵魂共鸣...
你 发表评论:
欢迎- 一周热门
-
-
前端面试:iframe 的优缺点? iframe有那些缺点
-
带斜线的表头制作好了,如何填充内容?这几种方法你更喜欢哪个?
-
漫学笔记之PHP.ini常用的配置信息
-
推荐7个模板代码和其他游戏源码下载的网址
-
其实模版网站在开发工作中很重要,推荐几个参考站给大家
-
[干货] JAVA - JVM - 2 内存两分 [干货]+java+-+jvm+-+2+内存两分吗
-
正在学习使用python搭建自动化测试框架?这个系统包你可能会用到
-
织梦(Dedecms)建站教程 织梦建站详细步骤
-
【开源分享】2024PHP在线客服系统源码(搭建教程+终身使用)
-
2024PHP在线客服系统源码+完全开源 带详细搭建教程
-
- 最近发表
-
- ETCD 故障恢复(etc常见故障)
- 在Ubuntu 16.04 LTS服务器上安装FreeRADIUS和Daloradius的方法
- 如何排查服务器被黑客入侵的迹象(黑客 抓取服务器数据)
- 使用 Fail Ban 日志分析 SSH 攻击行为
- 《5 个实用技巧,提升你的服务器安全性,避免被黑客盯上!》
- 聊聊Spring AI Alibaba的YuQueDocumentReader
- Mac Docker环境,利用Canal实现MySQL同步ES
- RustDesk:开源远程控制工具的技术架构与全场景部署实战
- 长安汽车一代CS75Plus2020款安装高德地图7.5
- Zookeeper使用详解之常见操作篇(zookeeper ui)
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)