mycat mysql 物理部署_一、MyCat的搭建

一、什么是mycat

简单直接点就是,MyCat其实就是一个数据库的中间件!一般我们都是app直接到数据库!有了MyCat以后,就是app到MyCat然后再访问数据库。

mycat是个中间件,它负责连接管理mysql,应用程序连接mycat,把mycat当作mysql服务那样连接操作。

linux系统的搭建

简介:

MyCat是java开发的,所以安装前要在你的系统的先安装jdk1.7以上的版本才可以。

一、JDK安装

安装步骤:

1、wget安装方式

起步搭建jdk1.7以上版本的java环境!然后下载mycat并且安装,修改配置然后启动mycat。

wget http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

ls查看下载压缩包名并解压 (1、pwd 可查看当前下载目录和解压目录在root   2、yum install tar )

tar -zxvf jdk-8u131-linux-x64.tar.gz

2、yum 安装方式

1、搜索JDK安装包

yum search java|grep jdk

7f305a6d7a2ce19c309c876c076b1234.png

2、安装

yum install java-1.8.0-openjdk-src.x86_64

3、测试安装结果

java -version 通过yum默认安装的路径为  /usr/lib/jvm  可以通过cd /usr/lib/jvm  命令 查看

二、MyCat安装

官网:http://www.mycat.io/

9e3eac87cff585a4831943420366d8cb.png

2、wget获取(使用pwd命令查看下载到当前的路径)

wget http://dl.mycat.io/1.6.6.1/Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz

3、解压

tar -zxvf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz

4、环境变量配置

vi /etc/profile 添加

export MYCAT_HOME=/home/mycat

使环境变量生效source /etc/profile

5、启动mycat

进入mycat/bin目录,执行./mycat start 用ps -ef|grep mycat查看下进程

暂时先不管,mysql的监听端口是3306,mycat的监听端口是8066,检查下8066是不是在监听中

6ae05686af9c6a7293c58a7f93dc7fed.png

6、进程已启动端口被监听,接下来查看mycat的默认账号和密码以及配置server.xml

cd /home/mycat

cat conf/server.xml

c628d5f1c44439d9d9b64e090a06ed52.png

配置了2个用户,一个是root,一个是user,接下来使用navicat连接

d71d10fceebe75170730dd9e76bbdfb8.png

7、配置 server.xml   vim conf/server.xml 无权限

授权chmod -R 777 mycat

8、MyCat配置文件介绍

conf/rule.xml 定义分片规则

conf/schema.xml 定义逻辑库、表以及分片节点等内容

conf/server.xml 定义用户授权及服务器参数相关配置

8.1配置schema

<?xml version="1.0"?> #第一行必须是XML文件的第一个元素且前面不能空格。 否则报错"[xX][mM][lL]" 的处理指令目标

#TESTDB 是MyCat默认的一个测试逻辑数据库,需要在此节点下定义逻辑表,但在这里只是指定表的名称,并不对表进行详细的定义。

#下面这条语句就是指逻辑表tb_user_info将在dn1,dn2,dn3上创建 使用的分片规则是 auto-sharding-long

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

select user()

password="root123">

此时在schema.xml中配置好的表名,实际上只是一个逻辑的表,这个表在物理数据库中并不存在,需要在MyCat通过Create Table 来创建这个表,执行Create语句以后,MyCat会在真实MySql配置的数据库中创建表。

8.2auto-sharding-long分片规则的实现原理

id

rang-long

autopartition-long.txt

可见这个TableRule是通过id 来进行分片的,分片的算法是rang-long,算法中使用了autopartition-long.txt

查看文本命令 cat autopartition-long.txt

# range start-end ,data node index

# K=1000,M=10000.

0-500M=0

500M-1000M=1

1000M-1500M=2

K表示1000条记录,M表示10000条记录,上面的三个配置就是0~500万的记录会存在数据库db1的表中,500万~1000万会存在db2的表中,1000万~1500万会存在db3的表中。

9、TESTDB 是MyCat默认的一个测试逻辑数据库,需要在此节点下定义逻辑表,但在这里只是指定表的名称,并不对表进行详细的定义。

c7dc8916563296cd0cb5aa12daf81d32.png

三、Mysql安装

1、参考安装即可

https://www.cnblogs.com/huiyi0521/p/10113280.html

2、解决支持远程连接mysql

mysql> use mysql

mysql> select t.host from user t where t.user='root';

+--------------+

| host |

+--------------+

| localhost |

+--------------+

这个返回结果说明现在 root 用户只允许在服务器的本地登录。

执行如下命令:

mysql>update user set host='%' where user='root';

然后重启 MySQL 服务就可以了。

四、实践

1、登录物理数据库,创建db1、db2、db3

create database db1;

create database db2;

create database db3;

2、客户端连接mycat,注意连接的是mycat而不是物理数据库,mycat默认端口号8066

mysql -uroot -p123456 -h127.0.0.1 -P8066 -DTESTDB

注意-P、-D需要大写,-h 后面必须是ip,使用localhost会出错

3、查看表,默认显示schema.xml中配置的表,实际上此时物理数据库没有表,所以查询employee会出错

show databases;

5f038360b3d011715646d4d45cb9081b.png

4、修改mycat_home\conf\schema.xml中的url、user、password ,然后重新启动

98d1d9adb44be287b0a27327b561c251.png

./mycat restart 重启服务

5、表分片-mycat中,创建employee表,插入数据

create table employee (id int not null primary key,name varchar(100),sharding_id int not null);

insert into employee(id,name,sharding_id) values(1,'leader us',10000);

insert into employee(id,name,sharding_id) values(2, 'me',10010);

insert into employee(id,name,sharding_id) values(3, 'mycat',10000);

insert into employee(id,name,sharding_id) values(4, 'mydog',10010);

mycat中,执行计划显示来自两个数据节点,与schema.xml中配置的一致

explain select * from employee;

56f46d60f1644e0951dba9c2cad70e50.png

物理数据库中,mycat创建了employee表,查看数据,可以发现数据实现了分片

006e665cb1e18b59b905ac92d06060c1.png

注意:

schema.xml 配置schema、datanode、datahost

schema就是逻辑数据库,它包含table(逻辑表),表中有对应的datanode、分片规则

datanode,就是逻辑数据库,含有物理数据库名字

datahost,就是物理数据库的ip地址,用户名、密码等

server.xml 配置连接mycat的用户名、密码、数据库名

rule.xml 分片规则

将物理数据库的某个数据库作为一个节点,与mycat逻辑数据表关联,操作mycat某个逻辑表即操作在该多个节点的某个表对应,实现将逻辑表在多个节点进行数据切片(切片规则根据id)

MyCAT 定义了一种特殊的表逻辑表也称全局表:

1、全局表的插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性

2、全局表的查询操作,只从一个节点获取

3、全局表可以跟任何一个表进行 JOIN 操作

d45a19f4840239b16e3c4adc8b397ec3.png

6、查询数据

6.1读的配置

1cdcee69153c02ef4b52dae5936d7532.png

读写配置一样

select * from employee;

或者 select * from employee where id=3;

对我来说就是查询操作就是查询mycat的逻辑表跟普通表操作一样

75a46cc2ddae05121b57558f7b7aedb8.png

7、节点扩展-分片迁移

7.1 配置文件修改以及分片节点的位置(切片节点位置就是更改物理库节点名不变)

cca8b9d7424afd584a46e9d5e27d7fc6.png

7.2业务切换-表进行加锁 注意:在业务量小的时候,比如凌晨,进行切换

先在db5、db6之上做flush table命令将dn2.employee内存中数据刷到磁盘中,并重新加载mycat:

7.2.1  先在dh1上127.0.0.1刷磁盘

mysql> flush table dn2.employee with read lock; //或者两个切片 flush table dn2.employee,dn3.employee with read lock;

Query OK, 0 rows affected (0.00 sec)

7.2  解锁表

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

7.3 然后重新加载mycat,使改动的新配置的分片到新实例上生效

mysql> reload @@config;

Query OK, 1 row affected (0.08 sec)

Reload config success

7.4查看切片是否完整

mysql> explain select * from travelrecord;

7.2和7.3 都失败了 我直接    ./mycat restart 重启服务   (缺少平滑启动和锁定)

那是因为7.2命令是在mysql里面执行的,

7.3是在 mycat 9066管理端口里执行   mysql -uroot -p123456 -h127.0.0.1 -P9066

插入测试

insert into employee(id,name,sharding_id) values(5, 'mycat',10000);

insert into employee(id,name,sharding_id) values(6, 'mydog',10010);

8切片规则- 三个节点 n1 、n2、n3 ,n1 满了新增n4 替换n1来插入,然后n1节点保留且切片规则只允许只读不允许插入即可解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Camel中的短重试与长重试

《骆驼设计模式》一书介绍了20种模式以及用于设计基于Apache Camel的集成解决方案的众多技巧和最佳实践。 每个模式都基于真实的用例&#xff0c;并提供了Camel特定的实现细节和最佳实践。 为了让您有这本书的感觉&#xff0c;以下是该书的重试模式摘录&#xff0c;其中介绍了如…

java实现驾校考试系统_jsp驾校考试系统

本驾校考试系统采用了Browser/Server体系结构&#xff0c;JSP(Java Server Page)作为前台开发工具&#xff0c;MySQL作为后台数据库进行开发。最终系统实现的系统将分为管理员和学员两个角色&#xff0c;其中系统管理员部分的主要功能包括修改登录密码、学员信息管理、科目1题目…

java qlv转mp4 代码_怎么将qlv格式转换成mp4?教你快速转换视频格式的技巧

如何将qlv格式转换成mp4?众所周知qlv格式是腾讯视频的下载格式&#xff0c;而qlv格式的特点在于不能用别的播放器打开。如果用腾讯视频以外的播放器打开则需要将qlv格式转换成mp4&#xff0c;那你知道将qlv格式转换成mp4的技巧吗&#xff1f;下面小编教你一种转换qlv格式的技巧…

mysql导入竖杠分割的数据_MYSQL :逗号分隔串表,分解成竖表

DROP TEMPORARY TABLE IF EXISTS Temp_Num ;CREATE TEMPORARY TABLE Temp_Num ( xh INT PRIMARY KEY ); -- 创建数字辅助表SET i 0;INSERT INTO Temp_Num(xh) -- 写入数字辅助表SELECT i : i1FROM AdDataCenter.Ad_Targeting_Mobisage aLIMIT 0, 100 ;SELECT b.AdGroupID , SU…

浙大JAVA实验题12_2019浙大计算机考研机试模拟赛(2)——概念专题

题目链接 引用自晴神OJA - 边覆盖B - 极大独立集C - 稳定婚姻问题D - 笛卡尔树没赶得上全程的比赛&#xff0c;就做了两道&#xff0c;后面两道以后有时间再补。两道都是概念题&#xff0c;比较基础~ 以下是题解A - 边覆盖Case Time Limit: 200 MS (Others) / 400 MS (Java) …

hadoop小型集群_小型Hadoop集群的Ganglia配置和一些故障排除

hadoop小型集群Ganglia是一个针对大型集群的开源&#xff0c;可扩展且分布式的监视系统。 它收集&#xff0c;汇总并提供数十种与计算机相关的指标&#xff08;例如CPU&#xff0c;内存&#xff0c;存储&#xff0c;网络使用情况&#xff09;的时序视图。 您可以在UC Berkeley …

spring aop组件_安全性中的Spring AOP –通过方面控制UI组件的创建

spring aop组件以下文章将显示在我参与的一个项目中&#xff0c;我们如何使用Spring的AOP来介绍一些与安全性相关的功能。 这样的概念是&#xff0c;为了使用户能够看到某些UI组件&#xff0c;他需要具有一定级别的安全特权。 如果不满足该要求&#xff0c;则不会显示UICompone…

使用Spring Boot构建RESTFul服务

每个人都在谈论微服务&#xff0c;例如WSO2微服务框架 &#xff0c; Spring Boot等。由于我已经很长时间没有从事任何与Spring相关的项目了&#xff0c;所以我想到了使用Spring Boot实现一个简单的RESTFul服务。 因此&#xff0c;我从Spring文档开始。 这很简单。 您可以使用“…

将Swagger与Spring Boot REST API集成

在上一篇文章中&#xff0c;我谈到了我使用Spring Boot创建RESTFul Services的经验。 在创建REST API时&#xff0c;正确的文档是其中的必需部分。 昂首阔步是什么&#xff1f; Swagger &#xff08;Swagger 2&#xff09;是用于描述和记录REST API的规范。 它指定了REST Web…

php滴滴平台接口,图片服务API文档

简介滴滴云图片服务API提供标准的轻量级无状态HTTP接口&#xff0c;支持用户对数据的全方位管理。接口概览API描述图片信息获取文件的基本信息&#xff0c;包括长度、宽度、文件大小、格式。图片旋转将图片按顺时针旋转。图片模糊对图片进行模糊操作。图片缩放将图片缩小或者放…

java遇上html,JAVA遇见HTML——JSP篇:JSP内置对象(上)

JSP九大内置对象JSP内置对象是Web容器创建的一组对象&#xff0c;不使用new关键就可以使用的内置对象。int[] value{60,70,80};for(int i:value){out.println(i);}%>Web程序的请求响应模式用户发送请求(request)服务器给用户响应(response)out对象&#xff1a;out对象是JspW…

java中接口文件创建_功能接口简介–在Java 8中重新创建的概念

java中接口文件创建世界各地的所有Java开发人员都将至少使用以下接口之一&#xff1a;java.lang.Runnable&#xff0c;java.awt.event.ActionListener&#xff0c;java.util.Comparator&#xff0c;java.util.concurrent.Callable。 声明的接口之间有一些共同的特征&#xff0c…

Java命令行界面(第12部分):CLAJR

第十二篇有关在Java中处理命令行参数的文章的特色库是带有Java Reflection的命令行参数 &#xff08;CLAJR&#xff09;。 该“库”是单个Java源文件&#xff08; CLAJR-0.9.java &#xff09;&#xff0c; 可从SourceForge下载 。 CLAJR的主页当前显示2006年版权日期&#xff…

specs.4.8.gz_使用Specs2和客户端API 2.0进行富有表现力的JAX-RS集成测试

specs.4.8.gz毫无疑问&#xff0c; JAX-RS是一项杰出的技术。 即将发布的规范JAX-RS 2.0带来了更多的强大功能&#xff0c;尤其是在客户端API方面。 今天的帖子的主题是JAX-RS服务的集成测试。 有很多优秀的测试框架&#xff0c;例如REST&#xff0c;可以确保提供帮助&#xff…

了解OAuth2令牌认证

1.简介 在本教程中&#xff0c;我们将了解OAuth2令牌身份验证 &#xff0c;以便只有经过身份验证的用户和应用程序才能获得有效的访问令牌&#xff0c;该令牌随后可用于访问服务器上的授权API&#xff08;在OAuth术语中仅是受保护的资源&#xff09;。 使用基于令牌的身份验证…

Java 9:好的,坏的和私有的接口方法

Java 9 是在几周前发布的。 查看发行说明 &#xff0c;其中包含许多有趣的功能。 不过&#xff0c;我觉得并非一切都是不如甲骨文和Java行家似乎图片吧 。 我看到了Java世界中的三个趋势&#xff0c;分别是好&#xff0c;坏和丑陋。 让我们从好的开始。 Birdman&#xff08;20…

PagingAndSortingRepository –如何与Thymeleaf一起使用

在本教程中&#xff0c;我将演示如何通过分页显示Thymeleaf中的企业客户列表。 1 –项目结构 我们有一个正常的Maven项目结构。 2 –项目依赖性 除了正常的Spring依赖关系之外&#xff0c;我们还添加Thymeleaf和hsqldb&#xff0c;因为我们使用的是嵌入式数据库。 <?x…

matlab里方差分析的盒子图怎么看,Matlab方差分析

Matlab 方差分析(T检验)在工农业生产和科学研究中,经常遇到这样的问题:影响产品产量、质量的因素很多,我们需要了解在这众多的因素中,哪些因素对影响产品产量、质量有显著影响.为此,要先做试验,然后对测试的结果进行分析.方差分析就是分析测试结果的一种方法.在方差分析中,把在…

使用Okta的单点登录保护您的Vert.x服务器

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 Vert.x是Spring生态系统中增长最快的元素之一&#xff0c;保护Vert.x服务器可能是一个…

Apache Kafka简介

什么是Apache Kafka&#xff1f; Apache Kafka是一个分布式流系统&#xff0c;具有发布和订阅记录流的功能。 在另一方面&#xff0c;它是企业消息传递系统。 它是一个快速&#xff0c;水平可扩展和容错的系统。 Kafka有四个核心API&#xff0c; 生产者API&#xff1a; 该API允…