首页 > 系统相关 >mycat linux 搭建,分表分库,增长长插入

mycat linux 搭建,分表分库,增长长插入

时间:2023-05-21 18:32:37浏览次数:62  
标签:分库 VARCHAR name seq value mycat linux MYCAT


  1. 下载Mycat-server-1.6.7.1-release-20200209222254-linux.tar
    下载地址:Mycat-server-1.6.7.1-release-20200209222254-linux.tar
  2. 解压 进入bin 启动
./mycat start  启动
./mycat stop  停止
./mycat restart 重启
  1. mycat分库分表
    server.xml
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE mycat:server SYSTEM "server.dtd">  
<mycat:server xmlns:mycat="http://io.mycat/">  
     <system> 
             <property name="defaultSqlParser">druidparser</property>  
             <property name="mutiNodeLimitType">1</property>  
			 <property name="sequnceHandlerType">1</property>       
             <!-- mycat服务的端口号  -->  
             <property name="serverPort">8066</property>  
             <!-- mycat管理的端口号  -->
             <property name="managerPort">9066</property>   
     </system>

     <!-- 配置连接Mycat的用户名, 密码, 逻辑数据库名称  -->  
     <user name="hikari">  
             <property name="password">hikari123</property>  
             <property name="schemas">HIKARI_CLOUD</property>  
     </user>  
</mycat:server>

schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
	 <schema name="HIKARI_CLOUD" checkSQLschema="false" sqlMaxLimit="100">
        <table name="tb_admin" dataNode="dataNode0,dataNode1,dataNode2,dataNode3,dataNode4,dataNode5,dataNode6,dataNode7,dataNode8,dataNode9" rule="mod-long"/>   
		<table name="tb_user" dataNode="dataNode0,dataNode1,dataNode2,dataNode3,dataNode4,dataNode5,dataNode6,dataNode7,dataNode8,dataNode9" rule="mod-long"/>   
    </schema>  
	
	<dataNode name="dataNode0" dataHost="localhost" database="hikari_cloud_0" />
	<dataNode name="dataNode1" dataHost="localhost" database="hikari_cloud_1" />
	<dataNode name="dataNode2" dataHost="localhost" database="hikari_cloud_2" />
	<dataNode name="dataNode3" dataHost="localhost" database="hikari_cloud_3" />
	<dataNode name="dataNode4" dataHost="localhost" database="hikari_cloud_4" />
	<dataNode name="dataNode5" dataHost="localhost" database="hikari_cloud_5" />
	<dataNode name="dataNode6" dataHost="localhost" database="hikari_cloud_6" />
	<dataNode name="dataNode7" dataHost="localhost" database="hikari_cloud_7" />
	<dataNode name="dataNode8" dataHost="localhost" database="hikari_cloud_8" />
	<dataNode name="dataNode9" dataHost="localhost" database="hikari_cloud_9" />

	<dataHost name="localhost" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM1" url="localhost:3306" user="hikari"
				   password="hikari123">
		</writeHost>
	</dataHost>
</mycat:schema>

rule.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
  <tableRule name="mod-long">
     <rule>
       <columns>id</columns>
       <algorithm>mod-long</algorithm>
     </rule>
  </tableRule>
  <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
     <!-- dataNode数量(根据实际情况进行修改此配置) -->
     <property name="count">10</property>
  </function>
</mycat:rule>
  1. id 自增长
    在同一个节点任何一个数据库上
    新建MYCAT_SEQUENCE 表
CREATE TABLE MYCAT_SEQUENCE(
  name VARCHAR(50) NOT NULL COMMENT 'sequence名称',
  current_value INT NOT NULL COMMENT '当前value',
  increment INT NOT NULL DEFAULT 100 COMMENT '增长步长',
  PRIMARY KEY(name)
) ENGINE=InnoDB;

 INSERT INTO MYCAT_SEQUENCE(NAME,current_value,increment) VALUES ('ADMIN', 3, 1);

sql 创建三个sql函数

DROP FUNCTION IF EXISTS mycat_seq_currval;
DELIMITER $$
CREATE FUNCTION mycat_seq_currval(seq_name VARCHAR(50))RETURNS VARCHAR(64) CHARSET 'utf8'
BEGIN
DECLARE retval VARCHAR(64);
SET retval='-999999999,NULL';
SELECT CONCAT(CAST(current_value AS CHAR),',',CAST(increment AS CHAR)) INTO retval FROM
MYCAT_SEQUENCE WHERE NAME = seq_name;
RETURN retval;
END$$
DELIMITER ;




DROP FUNCTION IF EXISTS mycat_seq_setval;
DELIMITER $$
CREATE FUNCTION mycat_seq_setval(seq_name VARCHAR(50),VALUE INTEGER) RETURNS VARCHAR(64) CHARSET 'utf8'
BEGIN
   UPDATE MYCAT_SEQUENCE SET current_value = VALUE    WHERE NAME = seq_name;
RETURN mycat_seq_currval(seq_name);
END$$
DELIMITER ;



DROP FUNCTION IF EXISTS mycat_seq_nextval;
DELIMITER $$
CREATE FUNCTION mycat_seq_nextval(seq_name VARCHAR(50)) RETURNS VARCHAR(64) CHARSET 'utf8'
BEGIN
UPDATE MYCAT_SEQUENCE SET current_value = current_value + increment 
WHERE NAME = seq_name;
RETURN mycat_seq_currval(seq_name);
END$$
DELIMITER ;

修改

mycat linux 搭建,分表分库,增长长插入_xml

插入测试

INSERT INTO  tb_admin (id,user_name)  VALUES (NEXT VALUE FOR MYCATSEQ_ADMIN,"xxx")


标签:分库,VARCHAR,name,seq,value,mycat,linux,MYCAT
From: https://blog.51cto.com/u_12553406/6320020

相关文章

  • 转载文章:linux安装软件包
    一、安装.deb软件包sudodpkg--installXXX.deb二、rpm软件管理工具rpm-ivh软件包名-evh 软件名卸载软件-q软件名查询已安装软件-qa查询已安装的所有软件-ql软件名软件程序列表-qf文件绝对路径查询某一个文件是由哪一个包提供-uv......
  • 嵌入式linux—初级理解
    对于不使用操作系统或使用小型实时操作系统(如freeRTOS)的设备来说,与硬件相关的驱动程序与应用程序往往混合在一起,因此常常不会对驱动与应用进行严格的区分,这也导致更换硬件平台时,应用程序移植困难。1、使用了Linux系统的设备,硬件会由操作系统接管。Linux系统的一个重要设计哲学......
  • Linux:RID技术与LVM磁盘阵列技术
    RAIDRAID即独立磁盘冗余阵列,其工作原理是将多个磁盘合并成一个逻辑设备,在此基础上提供数据保护、容错和性能优化等功能。RAID0:将两个或多个磁盘组合在一起,并将数据划分为块。每个块都被分配到不同的磁盘上,从而实现并行访问,提高了读写性能。但是,RAID0没有容错机制,如果其中一个......
  • Linux目录下明明有可执行文件却提示找不到,“No such file or directory”
    明明一切正常,findls均可找到,权限也是777 检查文件的头部:readelf-hrepeat发现machine条目:Machine:    Intel80386问题出在了文件是32位的,但是虚拟机是64位的 如果想要运行文件,需要安装32位程序的运行架构:$sudoyuminstallxulrunner.i686$su......
  • 把一个nodejs程序做成传统linux服务
     1:http://howtonode.org/deploying-node-upstart-monit  (  DeployingNode.jsWithUpstartandMonit)  2: https://www.exratione.com/2013/02/nodejs-and-forever-as-a-service-simple-upstart-and-init-scripts-for-ubuntu/    ( Node.jsandFor......
  • linux4位权限分别代表什么意思(转载)
    接触linux一段时间了,有个权限问题让我一直郁闷。网上也没找到(估计是关键字不对),就是这个0777,最前面的0是什么意思。最近看到一本书(Linux与unixshell编程指南),终于找到答案了。 先说一下777什么意思吧,linux下文件权限分为所属用户权限、所属组权限和其他权限。每一个又分为r(读)w(写)x(可......
  • [换帖]Linux命令之iconv命令
    一、命令简介  日常工作中我们需要将windows生成的文件上传到Linux系统,有时候会因为编码问题出现显示乱码。例如我上传了一个csv文件到Linux服务器上,默认编码为GB2312,在Linux打开则会出现乱码,我们需要将文件进行编码转换。iconv命令对于给定文件把它的内容从一种编码转换成另一种......
  • MyCat16——分片规则之全局序列
     1主键重复之前创建了PAYMENT_ADDRESS数据表,根据area\_id的值,进行分片设置。那么在实际使用当中,虽然我们在建表时将id字段设置为了主键,但该主键的作用域仅在单个分片的数据库中起作用。当数据被分到不同的数据库分片中,该设置就会失去作用了。我们的分片规则是:100000-300000......
  • 【linux基础-03】Linux命令速查手册
    查看Linux系统信息arch#显示机器的处理器架构(1)uname-m#显示机器的处理器架构(2)uname-r#显示正在使用的内核版本dmidecode-q#显示硬件系统部件-(SMBIOS/DMI)hdparm-i/dev/hda#罗列一个磁盘的架构特性hdparm-tT/dev/sda#在磁盘上执......
  • 【linux基础-02】vi命令
    一、Vi/Vim介绍VI(VisualInterface),是一个文本编辑器,主要在Unix及类Unix环境中使用。Vim(Viimproved)在Vi的基础之上进行了功能提升,相当于Vi的增强版。所有类Unix系统都会内建vi文本编辑器,就像window电脑上的记事本一样,可以对文本内容进行编辑,vi编辑器是U......