网站建设项,公司网站名词解释,博物馆布展设计公司,wordpress多用户编辑wiki目录 #x1f341;mycat基础概念 #x1f341;Mycat安装部署 #x1f343;初始环境 #x1f343;测试环境 #x1f343;下载安装 #x1f343;修改配置文件 #x1f343;启动mycat #x1f343;测试连接 #x1f990;博客主页#xff1a;大虾好吃吗的博客 #x1f9… 目录 mycat基础概念 Mycat安装部署 初始环境 测试环境 下载安装 修改配置文件 启动mycat 测试连接 博客主页大虾好吃吗的博客 MySQL专栏MySQL专栏地址 mycat目前已经出mycat2版本了虽然还没有全面普及但是大概这两年各大企业逐步升级mycat2但是mycat1还是要有一定的了解。本次mycat分三章讲解熟悉mycat1后可以去官网下载一个mycat2学习。官网地址上海云业网络科技有限公司
mycat基础概念
一、什么是MyCat 一个彻底开源的面向企业应用开发的大数据库集群 支持事务、ACID通过远程可以直接当做数据库使用 一个可以视为MySQL集群的企业级数据库用来替代昂贵的Oracle集群 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品 一个新颖的数据库中间件产品
二、为什么使用MyCat 如今随着互联网的发展数据的量级也是撑指数的增长从GB到TB到PB。对数据的各种操作也是愈加的困难传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性减少对事务的支持减少对复杂查询的支持来获取性能上的提升。但是在有些场合NoSQL一些折衷是无法满足使用场景的就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的所以还是需要使用关系性数据库。如何使用关系型数据库解决海量存储的问题呢此时就需要做数据库集群为了提高查询性能将一个数据库的数据分散到不同的数据库中存储为应对此问题就出现了——MyCat
综上所述Mycat作用为能满足数据库数据大量存储提高了查询性能。 读写分离 数据分片 垂直拆分分库 、 水平拆分分表 、 垂直水平拆分分库分表 多数据源整合
三、数据库中间件对比 Cobar属于阿里B2B事业群始于2008年在阿里服役3年多接管3000个MySQL数据库的schema, 集群日处理在线SQL请求50亿次以上。由于Cobar发起人的离职 Cobar停止维护。 Mycat是开源社区在阿里cobar基础上进行二次开发解决了cobar存在的问题并且加入了许多新 的功能在其中。青出于蓝而胜于蓝。 OneProxy基于MySQL官方的proxy思想利用c进行开发的 OneProxy是一款商业收费的中间件。舍 弃了一些功能专注在性能和稳定性上。 kingshard由小团队用go语言开发还需要发展需要不断完善。 Vitess是Youtube生产在使用 架构很复杂。不支持MySQL原生协议使用需要大量改造成本。 Atlas是360团队基于mysql proxy改写功能还需完善高并发下不稳定。 MaxScale是mariadbMySQL原作者维护的一个版本 研发的中间件 MySQLRoute是MySQL官方Oracle公司发布的中间件
四、支持的数据库
支持MySQL、ORACLE、SQLServer等一些主流的数据库。
五、核心技术分库分表
数据库分片指通过某种特定的条件将我们存放在一个数据库中的数据分散存放在不同的多个数据库主机中这样来达到分散单台设备的负载根据切片规则可分为以下两种切片模式MyCAT通过定义表的分片规则来实现分片每个表格可以捆绑一个分片规则每个分片规则指定一个分片字段并绑定一个函数来实现动态分片算法。 Schema逻辑库与MySQL中的Database数据库对应一个逻辑库中定义了所包括的Table。 Table逻辑表即物理数据库中存储的某一张表与传统数据库不同这里的表格需要声明其所存储的逻辑数据节点DataNode。在此可以指定表的分片规则。 DataNodeMyCAT的逻辑数据节点是存放table的具体物理节点也称之为分片节点通过DataSource来关联到后端某个具体数据库上 DataSource定义某个物理库的访问地址用于捆绑到Datanode上
六、分片规则 前面讲了数据切分一个大表被分成若干个分片表就需要一定的规则这样按照某种业务规则把数据分到某个分片的规则就是分片规则数据切分选择合适的分片规则非常重要将极大的避免后续数据处理的难。
Mycat安装部署
拓扑图如下 初始环境
master和slave搭建主从复制这里就搭建一个简单地主从关系就可以。
1. master开启二进制日志、server_id
[rootmaster ~]# vim /etc/my.cnf
server_id1
log_binmysql-bin
[rootmaster ~]# systemctl restart mysqld
[rootmaster ~]# mysql -uroot -p123 #登录mysql创建主从连接用户
#省略登录信息
mysql grant replication slave on *.* to rep192.168.8.% identified by 123;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql show master status;
-------------------------------------------------------------------------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
-------------------------------------------------------------------------------
| mysql-bin.000005 | 446 | | | |
-------------------------------------------------------------------------------
1 row in set (0.00 sec)
2. slave指定server_id、指定maste为8.20
[rootslave ~]# vim /etc/my.cnf
server_id2
[rootslave ~]# systemctl restart mysqld
[rootslave ~]# mysql -uroot -p123 #登录mysql指定主为8.20
#省略登录信息
mysql change master to- master_userrep,- master_host192.168.8.20,- master_port3306,- master_password123,- master_log_filemysql-bin.000005,- master_log_pos446;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql start slave;
Query OK, 0 rows affected (0.01 sec)
mysql show slave status\G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.8.20Master_User: repMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000005Read_Master_Log_Pos: 446Relay_Log_File: slave-relay-bin.000002Relay_Log_Pos: 320Relay_Master_Log_File: mysql-bin.000005Slave_IO_Running: YesSlave_SQL_Running: Yes
#省略部分内容
测试环境
1. master创建库、表、插入数据
mysql create database mytest character set utf8;
Query OK, 1 row affected (0.01 sec)
mysql use mytest
Database changed
mysql create table tb1(- id int primary key,- name varchar(20));
Query OK, 0 rows affected (0.01 sec)
mysql insert into tb1 values(1,z3);
Query OK, 1 row affected (0.08 sec)
mysql grant all on *.* to root% identified by 123; #提前创建一个root的远程用户权限可以根据需求提供如果没有创建mycat则没有权限查看数据
Query OK, 0 rows affected, 1 warning (0.01 sec)
2. slave查看数据
mysql select * from mytest.tb1;
----------
| id | name |
----------
| 1 | z3 |
----------
1 row in set (0.00 sec)
下载安装
1. 下载及安装
jdk要求jdk必须是1.7及以上版本
Mysql推荐mysql是5.5以上版本
MycatMycat的官方网站上海云业网络科技有限公司
下载地址 GitHub - MyCATApache/Mycat-download Mycat有windows、linux多种版本。
第一步下载Mycat-server-xxxx-linux.tar.gz
第二步将压缩包解压缩。建议将mycat放到/usr/local/mycat目录下。
第三步进入mycat目录启动mycat./mycat start 停止./mycat stop
mycat支持的命令{ console | start | stop | restart | status |dump } Mycat的默认端口号为8066
2. 配置文件的相关配置
①schema.xml 定义逻辑库表、分片节点等内容
②rule.xml 定义分片规则
③server.xml 定义用户以及系统相关变量如端口等
准备好jdk、mycat软件包解压到相应目录。
[rootmycat src]# tar zxf jdk-8u131-linux-x64.tar.gz
[rootmycat src]# mv jdk1.8.0_131/ /usr/local/java
[rootmycat src]# tar zxf Mycat-server-1.6.7.6-release-20220524173810-linux.tar.gz
[rootmycat src]# mv mycat/ /usr/local/mycat
[rootmycat src]# vim /etc/profile #添加path路径
export JAVA_HOME/usr/local/java
export MYCAT_HOME/usr/local/mycat
export PATH$JAVA_HOME/bin:$PATH:$MYCAT_HOME/bin
[rootmycat src]# source /etc/profile
[rootmycat src]# java -version #查看jdk版本
java version 1.8.0_131
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
[rootmycat src]# cd /usr/local/mycat/conf/
修改配置文件
1. 修改server.xml 修改用户信息与MySQL区分 如下
[rootmycat conf]# vim server.xml 2 . 修改schema.xml这里只需要修改IP如下图所示其他的注释信息也被我删掉了方便查看。
[rootmycat conf]# vim schema.xml
?xml version1.0?
!DOCTYPE mycat:schema SYSTEM schema.dtd
mycat:schema xmlns:mycathttp://io.mycat/
schema nameTESTDB checkSQLschematrue sqlMaxLimit100 dataNodedn1/schemadataNode namedn1 dataHostlocalhost1 databasemytest /dataHost namelocalhost1 maxCon1000 minCon10 balance0writeType0 dbTypemysql dbDriverjdbc switchType1 slaveThreshold100heartbeatselect user()/heartbeat!-- can have multi write hosts --writeHost hosthostM1 urljdbc:mysql://192.168.8.20:3306 userrootpassword123readHost hosthostS1 urljdbc:mysql://192.168.8.30:3306 userrootpassword123/readHost/writeHost/dataHost
/mycat:schema 启动mycat
[rootmycat conf]# mycat console
或者
[rootmycat conf]# mycat start
测试连接
slave测试等mycat用户名为mycat密码默认为123456端口8066.
[rootslave ~]# mysql -umycat -p123456 -h 192.168.8.10 -P8066
#省略登录信息
mysql show databases;
----------
| DATABASE |
----------
| TESTDB |
----------
1 row in set (0.00 sec)mysql use TESTDB
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql show tables;
------------------
| Tables_in_mytest |
------------------
| tb1 |
------------------
1 row in set (0.01 sec)mysql select * from tb1;
------------
| id | name |
------------
| 1 | z3 |
------------
1 row in set (0.49 sec)
至此mycat部署完成后面还将针对文件的详细信息详细讲解。