mycat的部署及测试

news2024/9/24 17:16:52

一、基本概念

Mycat 介绍:是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。Mycat是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),并且要求必须在 JDK7 以上的版本上运行。

mycat工作原理:基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理 SELECT 查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

常见的中间件:

读写分离的好处

  1. 分担单台的服务器的负载。主从只负责各自的写和读,极大程度的缓解 X(写)锁和 S(读)锁争用。
  2. 从库可配置 myisam 引擎,提升查询性能以及节约系统开销。
  3. 增加冗余,提高可用性。

二、jdk的安装

1.官网下载jdk

Java Downloads | Oracle

2.解压到指定路径

[root@mycat ~]# mkdir /usr/local/java
[root@mycat ~]# tar -xf jdk-8u211-linux-x64.tar.gz -C  /usr/local/java

3.配置环境变量

[root@mycat ~]#vim /etc/profile
export PATH=/usr/local/java/bin:$PATH

4.使环境变量生效

[root@mycat ~]# source /etc/profile

5.查看java版本

[root@localhost ~]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

三、mycat的安装与配置

1、下载mycat

 http://dl.mycat.org.cn/

[root@mycat ~]# wget http://dl.mycat.org.cn/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz

2.解压到指定路径

[root@mycat ~]# tar -xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local

3.修改配置文件

(1)了解mycat下的文件

[root@localhost mycat]# ls
bin  catlet  conf  lib  logs  tmlogs  version.txt

 --bin:可执行命令

--conf:配置文件

--lib: 存放jar及其依赖包

--logs:日志信息

--tmlogs:临时日志

--version:版本信息

(2)修改配置文件

server.xml:定义用户以及系统相关变量,如端口等。其中用户信息是应用程序连接 mycat 的用户信息

[root@mycat ~]# vim /usr/local/mycat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
#用户和密码是应用程序连接到 MyCat 使用的.schemas 配置项所对应的值是逻辑数据库的名字,这个名字需要和后面 schema.xml 文件中配置的一致
<mycat:server xmlns:mycat="http://io.mycat/">
  <user name="root" defaultAccount="true">
                <property name="password">123456</property>
                <property name="schemas">TESTDB</property>
        </user>

</mycat:server>

schema.xml:逻辑库定义和表以及分片定义的配置文件


<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

    #逻辑库名称,与server.xml的一致    不检查sql               最大连接数        数据库节点名称    
        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
      # 此数据节点的名称             主机组               真实数据库名称
         <dataNode name="dn1" dataHost="localhost1" database="db1" />
        <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="master1" url="master1:3306" user="mycat"
                                   password="Qianfeng@123">
                        <readHost host="slave1" url="slave1:3306" user="mycat" password="Qianfeng@123" />
                </writeHost>
                <writeHost host="master2" url="master2:3306" user="mycat"
                                   password="Qianfeng@123">
                        <readHost host="slave2" url="slave2:3306" user="mycat" password="Qianfeng@123" />
                </writeHost>
        </dataHost>
</mycat:schema>

 注意:
1)schema标签中的“name”的值和server.xml文件中user标签中的“schemas”值一样。
2)dataNode标签中的“database”为需要复制的数据库名称,服务器中必须有这个库。
3)dataHost标签中的“balance”和“switchType”。

writeType属性
负载均衡类型,目前的取值有2种:
1.writeType="0",所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties.
2.writeType="1",所有写操作都随机的发送到配置的writeHost,1.5以后废弃不推荐。

switchType属性
-1表示不自动切换
1默认值,自动切换
2基于MySQL主从同步的状态决定是否切换-3基于MySQL galary cluster的切换机制(适合集群)

(3)启动mycat

#启动mycat
[root@mycat ~]# /usr/local/mycat/bin/mycat start
Starting Mycat-server...
Mycat-server is already running.

#查看mycat是否启动
[root@mycat ~]# /usr/local/mycat/bin/mycat status
Mycat-server is running (38335).
[root@mycat ~]# ss -nplt
State       Recv-Q Send-Q       Local Address:Port                      Peer Address:Port              
LISTEN      0      1                127.0.0.1:32000                                *:*                   users:(("java",pid=38337,fd=4))
LISTEN      0      128              127.0.0.1:9000                                 *:*                   users:(("php-fpm",pid=1012,fd=5),("php-fpm",pid=1011,fd=5),("php-fpm",pid=1004,fd=7))
LISTEN      0      128                      *:80                                   *:*                   users:(("nginx",pid=951,fd=6),("nginx",pid=949,fd=6))
LISTEN      0      128                      *:22                                   *:*                   users:(("sshd",pid=941,fd=3))
LISTEN      0      100              127.0.0.1:25                                   *:*                   users:(("master",pid=1351,fd=13))
LISTEN      0      50                    [::]:1984                              [::]:*                   users:(("java",pid=38337,fd=58))
LISTEN      0      100                   [::]:8066                              [::]:*                   users:(("java",pid=38337,fd=87))
LISTEN      0      50                    [::]:37476                             [::]:*                   users:(("java",pid=38337,fd=57))
LISTEN      0      50                    [::]:46405                             [::]:*                   users:(("java",pid=38337,fd=60))
LISTEN      0      100                   [::]:9066                              [::]:*                   users:(("java",pid=38337,fd=83))
LISTEN      0      128                   [::]:22                                [::]:*                   users:(("sshd",pid=941,fd=4))
LISTEN      0      100                  [::1]:25                                [::]:*                   users:(("master",pid=1351,fd=14))

(4)在服务器上给用户授权

mysql> grant all on *.* to 'mycat'@'%' identified by 'Qianfeng@123';

四、测试

1.测试客户端登录mycat

语法:mysql -u逻辑用户 -p逻辑密码 -hmycat服务器的主机地址 -P8806(mycat的端口)

                   与server.xml文件中user字节中的信息一致

[root@master ~]# mysql -uroot -p123456 -h10.36.192.16 -P8066

mysql> show databases;
+----------+
| DATABASE |
+----------+
| TESTDB   |
+----------+
1 row in set (0.00 sec)

2、测试读写分离

balance 属性
负载均衡类型,目前的取值有 4 种:
1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
2. balance="1", 全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 
    互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
3. balance="2", 所有读操作都随机的在 writeHost、readhost 上分发。
4. balance="3", 所有读请求随机的分发到 writerHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。

balance=0

所有读的信息都发送到master1上

(1)修改配置文件

[root@mycat conf]# vim schema.xml

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

 (2)重启mycat

[root@mycat ~]# /usr/local/mycat/bin/mycat restart
Stopping Mycat-server...
Stopped Mycat-server.
Starting Mycat-server...

(3)客户端登录mycat,并读取信息

[root@master ~]# mysql -uroot -p123456 -h10.36.192.16 -P8066

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test1         |
+---------------+
1 row in set (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test1         |
+---------------+
1 row in set (0.00 sec)

balance=1

所有写发送到master1,所有读随机发送在master2,slave1,slave2上

(1)修改配置信息

[root@mycat conf]# vim schema.xml

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

(2) 重启mycat

[root@master ~]# /usr/local/mycat/bin/mycat restart
Stopping Mycat-server...
Stopped Mycat-server.
Starting Mycat-server...

(3)客户端登录mycat,并查看信息 

[root@master ~]# mysql -uroot -p123456 -h10.36.192.16 -P8066

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test4         |
+---------------+
1 row in set (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test3         |
+---------------+
1 row in set (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test2         |
+---------------+
1 row in set (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test4         |
+---------------+
1 row in set (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test3         |
+---------------+
1 row in set (0.00 sec)

balance=2

所有读的信息随机发送到master1,master2,slave1,slave2

(1)修改配置文件

[root@mycat conf]# vim schema.xml

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

(2) 重启mycat

[root@localhost conf]# /usr/local/mycat/bin/mycat restart
Stopping Mycat-server...
Stopped Mycat-server.
Starting Mycat-server...

(3)客户端登录mycat,并查看信息 

[root@master ~]# mysql -uroot -p123456 -h10.36.192.16 -P8066

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test2         |
+---------------+
1 row in set (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test3         |
+---------------+
1 row in set (0.01 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test1         |
+---------------+
1 row in set (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test1         |
+---------------+
1 row in set (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test4         |
+---------------+
1 row in set (0.00 sec)

balance=3 

所有读的信息随机发送到slave1 ,slave2

(1)修改配置文件

[root@mycat conf]# vim schema.xml

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

 (2)重启mycat

[root@localhost conf]# /usr/local/mycat/bin/mycat restart
Stopping Mycat-server...
Stopped Mycat-server.
Starting Mycat-server...

 (3)客户端登录mycat,并查看信息

[root@master ~]# mysql -uroot -p123456 -h10.36.192.16 -P8066

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test3         |
+---------------+
1 row in set (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test3         |
+---------------+
1 row in set (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test4         |
+---------------+
1 row in set (0.00 sec)

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

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

相关文章

敏捷开发使用

1.敏捷开发 敏捷开发以用户的需求进化为核心&#xff0c;采用迭代、循序渐进的方法进行软件开发。在敏捷开发中&#xff0c;软件项目在构建初期被切分成多个子项目&#xff0c;各个子项目的成果都经过测试&#xff0c;具备可视、可集成和可运行使用的特征。换言之&#xff0c;就…

基于NIFI工具搭建生产级别的IIOT系统

本示例内容在使用NIFI构建一个高度可扩展的物联网应用数据管道示例的基础上进行。 前文中的示例&#xff0c;如果放到生产环境中&#xff0c;那么MQTT和MINIFI部署在智能设备中&#xff0c;NIFI部署在数据中心服务器上。 如果需要修改MINIFI中的ETL任务&#xff0c;那么我们需…

Java架构师海量数据的存储方案

目录 1 导学2 海量数据和大数据的区别3 海量数据处理的核心思想4 数据库架构设计的方法论5 海量数据处理的方法6 海量数据的存储方案7 海量数据当中的写的方案8 海量数据当中读的方案9 总结1 导学 本章的主要内容呢是大型系统架构设计难点之一的海量数据架构设计相关的知识落到…

配置mysql+Navicat+XShell宝塔:Mark

Centos7开放3306端口&#xff08;iptables 防火墙 未设置&#xff09; Centos7开放3306端口_centos开启3306端口-CSDN博客 firewall-cmd --zonepublic --add-port3306/tcp --permanent Navicat连接1130错误的解决方法 Navicat连接1130错误的解决方法 - 风纳云 ERROR 1062 …

零基础转行网络安全可以做什么工作

一直在说网络安全行业好就业、薪资高、前景也好&#xff0c;但是大家对网络安全这个行业具体做什么工作可能还一知半解。所以今天来跟大家聊聊&#xff0c;网络安全学完可以找到什么样的工作&#xff0c;顺便把不同岗位的不同技术要求也说一下。 安全运维工程师 由于一些知名…

儿童龋齿:原因与预防护理

引言&#xff1a; 儿童的健康是每个家庭都十分关心的问题&#xff0c;其中口腔健康尤为重要。儿童龋齿&#xff0c;也被称为童年龋齿&#xff0c;是一种常见但可预防的口腔健康问题。本文将探讨儿童龋齿的原因&#xff0c;以及提供有关如何预防和护理儿童口腔健康的重要信息。…

Java架构师缓存架构设计解决方案

目录 1 缓存常见的三大问题1.1 缓存雪崩1.2 缓存穿透1.3 缓存击穿2 缓存key的生成策略3 热点数据集中失效的问题4 如何提高缓存的命中率5 缓存和数据库双写不一致的问题6 如何对缓存数据进行分片7 如何应对缓存数据的热点问题1 缓存常见的三大问题 缓存常见的三大问题就是缓存雪…

uni-app生命周期

uni-app的生命周期包括&#xff1a;应用生命周期、页面生命周期、组件生命周期 一、应用生命周期&#xff08;只能在App.vue文件中监听&#xff09; 函数说明onLaunch初始化完成时触发&#xff08;全局只触发一次&#xff09;onShow启动时或从后台进入前台显示onHide从前台进入…

Jenkins 执行远程shell脚本部署jar文件问题起不来

如图&#xff1a;最开始的时候没有加&#xff1a; source /etc/profile 这一行&#xff0c; run.sh里面的java -jar xxxx.jar 一直执行不来。 一开始以为是Jenkins执行退出后会kill一切它启动的进程&#xff0c;所以加了在run.sh里面加了export BUILD_IDdontKillMe&#xff0…

ArcGIS: 第二届全国大学生GIS技能大赛(广西师范学院)详解-下午题

目录 01 题目 02 思路和实操 2.1 流域提取-思路 2.2 流域提取-实操 2.2.1 获取DEM ​编辑 2.2.2 水文分析-提取流域基于单出水口 2.3 河网分级-思路 2.4 河网分级-实操 2.4.1 提取河道网络 2.4.2 河网分级 ​编辑 2.5 子流域提取和处理-思路 2.6 子流域提取和处理-实…

软考高项-第十章:项目进度管理

重要知识点&#xff1a; 以上总结&#xff0c;仅供参考。

第三章-完善MBR

为什么mbr编译时设置数据的起始地址vstart0x7c00&#xff0c;就可以保证程序加载器能将MBR加载到内存的0x7c00&#xff1f; 程序加载器负责将根据编译后的程序地址加载到内存中&#xff0c;mbr 用 vstart0x7c00 来修饰的原因&#xff0c;是开发人员知道 mbr 要被加载器&#x…

Transformer [Attention is All You Need]

&#xff08;一&#xff09;论文部分 Abstract (1)The best performing models also connect the encoder and decoder through an attention mechanism. 最好的性能通过注意力机制将编码器和解码器连接在一起。 (2)the Transformer, based solely on attention mechanisms,…

安装JAVA 依赖环境 Maven 教程

一、下载链接与Tips Maven 过去版本下载传送门&#xff1a;&#xff08; Java 8 兼容 Java 7&#xff0c;即 Java 8 的 JDK 能运行 3.8.8 以下的 Maven&#xff09; Maven Releases History Download 点击 release notes 点击 available for download. 选择 bin 的安装包 然…

【使用 TensorFlow 2】03/3 创建自定义损失函数

一、说明 TensorFlow 2发布已经接近5年时间&#xff0c;不仅继承了Keras快速上手和易于使用的特性&#xff0c;同时还扩展了原有Keras所不支持的分布式训练的特性。3大设计原则&#xff1a;简化概念&#xff0c;海纳百川&#xff0c;构建生态.这是本系列的第三部分&#xff0c;…

Linux之open/close/read/write/lseek记录

一、文件权限 这里不做过多描述&#xff0c;只是简单的记录&#xff0c;因为下面的命令会涉及到。linux下一切皆是文件包括文本、硬件设备、管道、数据库、socket等。通过ls -l 命令可以查看到以下信息 drwxrwxrwx 1 root root 0 Oct 10 17:06 open -rwxrwxrwx 1 root roo…

js 滚动鼠标滑轮放大缩小图片

<div><h1>原图</h1><imgsrc"https://so.360tres.com/dmsmty/160_160_100/t01b29734b9604fb7aa.webp"/><h1>可放大缩小的图</h1><div class"imgView"><imgsrc"https://so.360tres.com/dmsmty/160_160_10…

建设一个完整的企业经营管理体系是什么样的

建设一个完整的企业经营管理体系是确保企业高效、可持续发展的基础。该体系包括组织架构、战略规划、运营管理、人力资源管理、财务管理等多个要素&#xff0c;下面将逐一进行详细介绍。 一、组织架构&#xff1a; 组织架构是企业内部各个部门、职能和层级之间的关系和分工。…

代码随想录算法训练营第五十三天 |1143.最长公共子序列、1035.不相交的线、53. 最大子序和动态规划

一、1143.最长公共子序列 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;动态规划子序列问题经典题目 | LeetCode&#xff1a;1143.最长公共子序列_哔哩哔哩_bilibili 思考&#xff1a; 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j]…

关键词搜索天猫商品列表数据,天猫商品列表数据接口

在网页抓取方面&#xff0c;可以使用 Python、Java 等编程语言编写程序&#xff0c;通过模拟 HTTP 请求&#xff0c;获取天猫网站上的商品页面。在数据提取方面&#xff0c;可以使用正则表达式、XPath 等方式从 HTML 代码中提取出有用的信息。值得注意的是&#xff0c;天猫网站…