首页 > 数据库 >MySQL运维5-Mycat配置

MySQL运维5-Mycat配置

时间:2023-12-14 22:18:10浏览次数:37  
标签:xml 逻辑 运维 标签 分片 Mycat MySQL 取值

一、schema.xml

  1.1 简介

    schema.xml作为Mycat中最重要的配置文件之一,涵盖了Mycat的逻辑库、逻辑表、分片规则、分片节点即数据源的配置。主要包括一下三组标签

    • schema标签
    • datanode标签
    • datahost标签

  1.2 schema标签

    用于定于Mycat实例中的逻辑库,一个Mycat实例中,可以有多个数据库,可以通过schema标签来划分不同的逻辑库。Mycat中的逻辑库的概念,等同于MySQL中的database概念没需要操作某个逻辑库下的表时,就需要切换逻辑库,同MySQL一样,使用use xxxx语句。

    

    核心属性:

    • name: 自定自定义的逻辑库苦命
    • checkSQLschema: 在SQL语句操作时指定了数据库名称,执行时是否自动去除,true:自动去除,false不自动去除,即如果有true时,我们可以不进入数据库查询.
    • sqlMaxLimit: 如果未指定limit进行查询,列表查询模式默认查询的条数。

    checkSQLschema参数演示:

    

     说明1:当checkSQLschema为true时,我们可以不进入数据库查询,即使用DB01.TB_ORDER的方式,但是如果checkSQLschema为false的时候,就不能这样写了,就必须要要先usr DB01;今日数据库里面在查找,所以这里大家就直接给true就行了。

  1.3 schema标签中的table标签

    table标签定义Mycat中逻辑库schema下的逻辑表,所有需要查分的表都需要在table标签中定义。

    核心属性

    • name:定义逻辑表表名,在该逻辑库下唯一
    • DataNode:定义逻辑表所属的dataNode,该属性需要与dataNode标签中的name对应,多个dataNode用逗号隔开
    • rule: 分片规则的名称,分片规则名字是在rule.xml中定义的
    • primaryKey: 逻辑表对应的真是表的主键
    • type: 逻辑表的类型,目前逻辑表只有全局表和普通表,如果未配置,默认是普通表,全局表配置为global

  1.4 dataNode标签

    

     dataNode标签中定义了Mycat中的数据节点,也就是我们通常说的数据分片,一个dataNode标签就是一个独立的数据分片

    核心属性

    • name:定义了数据节点名称
    • dataHost:数据库实例主机名称,引用自dataHost标签中name属性
    • database:定义分片所属数据库

  1.5 dataHost标签

    

    该标签在Mycat逻辑库中作为底层标签,直接定义了具体的数据库实例、读写分离,心跳语句。

    核心属性:

    • name:唯一标识符,供上层标签使用
    • maxCon/minCon:最大连接数/最小连接数
    • balance:负载均衡策略,取值0,1,2,3 ,读写分离的时候,在详细说明这四个取值的意义。
    • writeType:写操作分发方式(0:写操作转发到第一个writeHost,第一个挂了,切换到第二个;1:写操作随机发配到配置的writeHost)
    • dbDriver:数据库驱动,支持native和jdbc,native主要支持MySQL5+,jdbc主要支持MySQL8+

  1.6 schema.xml逻辑库映射

    逻辑库的名字和mysql数据库中的名字可以不一致的,例如我们这里配置的逻辑库的名字是大写的DB01,而MySQL中的数据库名则是小写的db01,这取决于逻辑库和MySQL真实数据库的映射关系。

    

    schema.xml整体配置流程即关系隐射示意

    

 二、rule.xml

  rule.xml中定义了所有拆分表的规则,在使用过程中可以灵活的使用分片算法,或者对同一个分片算法使用不同的参数,它让分片过程可配置化,主要包含两类标签:tableRule,Function

  

  

  而在schema.xml中配置的分片规则就是在这里定义的

  

  说明1:在tableRule标签里面主要有columns和algorithm两个标签。

  说明2:columns标签主要是分表的依据

  说明3:algorithm标签主要是,分库分表的算法引用,这里algorithm里面的值就是Function标签的实现。

  

  例如:auto-sharding-long 分表规则的,依据是rang-long这个算法。

  

  而 rang-long这个算法就在function标签中有定义,而function标签中的class就是对应这个算法的实现类。

  说明4:至于这里面的分库分表的规则具体的使用,我们会在后面分库分表实战章节,用到的时候在详细说。 

三、server.xml

  server.xml配置文件包含了Mycat的系统配置,主要有两个重要的标签:system, user.

  3.1 system标签

    

     重要属性说明:

    • charset: 取值utf8: 设置Mycat的字符集,字符集需要与MySQL的字符集保持一致
    • nonePasswordLogin: 取值 [0, 1], 0:需要登录密码登录,1:不需要登录密码登录,默认为0,设置为1,则需要指定默认账户
    • useHandshakeV10: 取值 [0,1],使用该选项主要是为了能够兼容高低版本的jdbc驱动,是否采用handshakeV10来与client进行通讯,1:是,0:否
    • useSqlStat: 取值[0,1],开启SQL实时统计 1:开启,0:关闭,开启之后Mycat会自动统计SQL语句的执行情况:mysql -h xxx.xxx.xxx.xxx -P 9066 -u root -p之后就可以查看,使用show @@sql; show @@sql.low; show @@sql.sum等,分别是查看Myact执行的sql, 执行效率比较低的SQL,SQL的整体执行情况,读写比例等等。
    • useGlobelTableCheak: 取值[0,1],是否开启全局表一致性检查,1:开启,0关闭
    • sqlExecuteTimeout: 取值1000等整数:SQL执行的超时时间单位为秒
    • sequnceHandleType:取值[0,1,2],用来指定Mycat全局序列类型,0:本地文件,1:数据库方式,2:为时间戳方式,默认使用本地文件方式,文件方式主要用于测试
    • sequnceHandlePattern: 正则表达式:必须带有MYCATSEQ或者mycatseq进入序列匹配流程
    • subqueryRelationshipCheck: 取值[true,false],子查询存在关联查询的情况下,检查关联字段中是否有分片字段,默认false
    • useCompression: 取值[0,1],开启mysql压缩协议,0:关闭,1:开始
    • fakeMySQLVersion: 5.5,5.6,8.0.27等,设置模拟MySQL版本号
    • defaultSqlParser: 由于Mycat的最初版本使用了FoundationDB的SQL解析器,在Mycat1.3后增加了Druid解析器,所以要设置defaultSqlParser属性来指定默认的解析器,解析器有两个:druidparser和fdbparser,在Mycat1.4之后默认是fruidparser,fdbparser已经废弃
    • processors: 取值[1,2....] 指定系统可用的线程数量,默认值为CPU核心 乘以 每个核心运行的线程数,processors会影响processorBufferPool,processorBufferLocalPercent,processorExecutor属性,所以在性能调优时可以适当的修改processors的值
    • processorBufferChunk: 指定每次分配Socker Direct Buffer默认值为4096字节,也会影响BufferPool长度,如果一次性获取字节过多而导致buffer不都用,则会出现警告,可以调大该值
    • processorExecutor: 指定NIOProcessor上共享businessExecutor固定线程池的大小,Mycat把异步任务交给businessExecutor线程池,在新版本的Mycat中这个连接池使用频率不高,可以适当的把该值调小
    • packetHeaderSize: 指定MySQL协议中的报文头长度,默认4个字节。
    • maxPacketSize: 指定MySQL协议可以携带的数据最大大小,默认值为16M
    • idleTimeout: 取值30等,指定连接的空闲时间的超时长度,如果超时将关闭资源并回收,默认30分钟
    • txlsolation:取值[1,2,3,4], 初始化前端连接的事务隔离级别,默认为REPEATED_READ,对应数字3,READ_UNCOMMITED=1, READ_COMMITED=2,REPEATED_READ=3,SERIALIZABLE=4
    • sqlExecuteTimeout: 取值 300 等, 执行SQL的超时时间,如果SQL语句执行超时,将关闭连接,默认300秒
    • serverPort: 8066 ,定义Mycat的使用端口,默认8066
    • managerPort: 9066, 定义Mycat的管理端口,默认9066

  3.2 user标签

    

      说明1:server.xml中允许有多个user,即同时配置多个用户的权限

    说明2:如果一个账户可以访问多个逻辑库,多个逻辑库之间用逗号隔开

    说明3:dml中的四个二进制数分别代表增,改,查,删的权限

    说明4:如果逻辑表和逻辑库的权限冲突,则就近原则,即优先使用逻辑表的权限

    

 

标签:xml,逻辑,运维,标签,分片,Mycat,MySQL,取值
From: https://www.cnblogs.com/Se7eN-HOU/p/17901253.html

相关文章

  • openGauss学习笔记-159 openGauss 数据库运维-备份与恢复-导出数据-使用gs_dump和gs_d
    openGauss学习笔记-159openGauss数据库运维-备份与恢复-导出数据-使用gs_dump和gs_dumpall命令导出数据-导出所有数据库-导出所有数据库159.1导出所有数据库openGauss支持使用gs_dumpall工具导出所有数据库的全量信息,包含openGauss中每个数据库信息和公共的全局对象信息。可根......
  • MySQL如何清理数据并释放磁盘空间
    在我们的生产环境中有一张表:courier_consume_fail_message,是存放消息消费失败的数据的,设计之初,这张表的数据量评估在万级别以下,因此没有建立索引。但目前发现,该表的数据量已经达到百万级别,原因产生了大量的重试消费,这导致了该表的慢查询。因此需要清理该表数据。而实际上,使用DE......
  • mysql
    mysql1、安装#mysql5.7-name:准备mysql安装包copy:src:/mysqlsql-{{MYSQL_VERSION}}.tar.gzdest:/usr/local/mysql-{{MYSQL_VERSION}}.tar.gz-name:解压mysql安装包shell:tar-xf/usr/local/mysql-{{MYSQL_VERSION}}.tar.gz-C/usr/local-......
  • 手动安装LAMP——在 CentOS 7 上安装 PHP、Apache 和 MariaDB(替代 MySQL)
    在CentOS7上安装PHP、Apache和MariaDB(替代MySQL)的过程如下:1.更新系统:sudoyumupdate2.安装Apache:sudoyuminstallhttpd3.启动Apache服务并设置开机自启:sudosystemctlstarthttpdsudosystemctlenablehttpd4.安装MariaDB:sudoyuminstallmariadb-server......
  • MySQL哪些操作会记录至Binlog文件?
    参考:MySQL哪些操作会记录至Binlog文件?操作影响行数为0会写Binlog?https://juejin.cn/post/7066724038999015432Row模式下,会记录所有执行成功且返回的影响行数大于0的DDL和DML操作,当UPDATE和DELETE操作的影响行数为0时不会记录操作至Binlog。有如下疑问:mysql数据库没......
  • 连接MySQL报错{"Authentication to host 'PC10103' for user 'root' using method &#
    连接MySQL报错{"Authenticationtohost'PC10103'foruser'root'usingmethod'sha256_password'failedwithmessage:Accessdeniedforuser'root'@'PC10103'(usingpassword:YES)"}先在MySQL中执行如下查询SEL......
  • MySQL账号锁定与解锁
    MySQL提供了多种方法来锁定解锁账号,下面是几种常用的方法:1.使用ALTER语句锁定账号锁定账号:ALTERUSER'username'@'localhost'ACCOUNTLOCK;解锁账号:ALTERUSER'username'@'localhost'ACCOUNTUNLOCK;2.使用UPDATE语句锁定账号锁定账号:UPDATEmysql.userSETacco......
  • mysql 索引优化2
    对于关联sql的优化关联字段加索引,让mysql做join操作时尽量选择NLJ算法小表驱动大表,写多表连接sql时如果明确知道哪张表是小表可以用straight_join写法固定连接驱动方式,省去mysql优化器自己判断的时间 in和exsits优化原则:小表驱动大表,即小的数据集驱动大的数据集in:当B表的......
  • MySQL:SQL 错误 [1118] [42000]: Row size too large.
    1.场景:今天在用MySQL建表的时候,报了一个错误;SQL错误[1118][42000]:Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535.Thisincludesstorageoverhead,checkthemanual.YouhavetochangesomecolumnstoTEXTor......
  • Linux 部署企业级夜莺监控分析工具并实现远程访问(运维零距离!!)
    夜莺监控是一款开源云原生观测分析工具,采用All-in-One的设计理念,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。夜莺于2020年3月20日,在github上发布v1版本,已累计迭代100多个版本。本地部署后,为解决......