提示信息

mycat配置脚本

峰子 已关注
  • [root@s8 mycat-1.6.6.1]# ll
  • total 12
  • drwxr-xr-x. 2 root root 190 Sep 29 04:01 bin
  • drwxrwxrwx. 2 root root 6 Oct 31 2018 catlet
  • drwxrwxrwx. 4 root root 4096 Oct 9 02:53 conf
  • drwxr-xr-x. 2 root root 4096 Sep 29 04:01 lib
  • drwxrwxrwx. 3 root root 92 Oct 11 00:02 logs
  • drwxr-xr-x. 2 root root 25 Oct 9 02:53 tmlogs
  • -rwxrwxrwx. 1 root root 185 Oct 31 2018 version.txt
  • [root@s8 mycat-1.6.6.1]# cd conf/
  • [root@s8 conf]# ll
  • total 128
  • -rwxrwxrwx. 1 root root 88 Oct 31 2018 autopartition-long.txt
  • -rwxrwxrwx. 1 root root 48 Oct 31 2018 auto-sharding-long.txt
  • -rwxrwxrwx. 1 root root 62 Oct 31 2018 auto-sharding-rang-mod.txt
  • -rwxrwxrwx. 1 root root 334 Oct 31 2018 cacheservice.properties
  • -rwxrwxrwx. 1 root root 3244 Oct 31 2018 dbseq.sql
  • -rw-r--r--. 1 root root 50 Oct 9 02:53 dnindex.properties
  • -rwxrwxrwx. 1 root root 439 Oct 31 2018 ehcache.xml
  • -rwxrwxrwx. 1 root root 2132 Oct 31 2018 index_to_charset.properties
  • -rwxrwxrwx. 1 root root 1253 Oct 31 2018 log4j2.xml
  • -rwxrwxrwx. 1 root root 178 Oct 31 2018 migrateTables.properties
  • -rwxrwxrwx. 1 root root 262 Oct 31 2018 myid.properties
  • -rwxrwxrwx. 1 root root 15 Oct 31 2018 partition-hash-int.txt
  • -rwxrwxrwx. 1 root root 102 Oct 31 2018 partition-range-mod.txt
  • -rwxrwxrwx. 1 root root 4678 Oct 31 2018 rule.xml
  • -rwxr-xr-x. 1 root root 4678 Oct 9 02:33 rule.xml.bak
  • -rwxrwxrwx. 1 root root 3112 Oct 9 21:10 schema.xml
  • -rwxr-xr-x. 1 root root 4219 Oct 9 02:21 schema.xml.bak
  • -rwxrwxrwx. 1 root root 413 Oct 31 2018 sequence_conf.properties
  • -rwxrwxrwx. 1 root root 75 Oct 31 2018 sequence_db_conf.properties
  • -rwxrwxrwx. 1 root root 27 Oct 31 2018 sequence_distributed_conf.properties
  • -rwxrwxrwx. 1 root root 51 Oct 31 2018 sequence_time_conf.properties
  • -rwxrwxrwx. 1 root root 4870 Oct 9 03:56 server.xml
  • -rwxr-xr-x. 1 root root 4851 Oct 9 02:17 server.xml.bak
  • -rwxrwxrwx. 1 root root 16 Oct 31 2018 sharding-by-enum.txt
  • -rwxrwxrwx. 1 root root 4299 Oct 31 2018 wrapper.conf
  • drwxrwxrwx. 2 root root 4096 Sep 29 04:01 zkconf
  • drwxrwxrwx. 2 root root 36 Sep 29 04:01 zkdownload
    1. [root@s8 conf]# more server.xml
    2. <?xml version="1.0" encoding="UTF-8"?>
    3. <!-- - - Licensed under the Apache License, Version 2.0 (the "License");
    4. - you may not use this file except in compliance with the License. - You
    5. may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
    6. - - Unless required by applicable law or agreed to in writing, software -
    7. distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
    8. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
    9. License for the specific language governing permissions and - limitations
    10. under the License. -->
    11. <!DOCTYPE mycat:server SYSTEM "server.dtd">
    12. <mycat:server xmlns:mycat="http://io.mycat/">
    13. <system>
    14. <property name="nonePasswordLogin">0</property> <!-- 0为需要密码登陆、1为不需要密码登陆 ,默认为0,设置为1则需要指定默认账户-->
    15. <property name="useHandshakeV10">1</property>
    16. <property name="useSqlStat">0</property> <!-- 1为开启实时统计、0为关闭 -->
    17. <property name="useGlobleTableCheck">0</property> <!-- 1为开启全加班一致性检测、0为关闭 -->
    18. <property name="sequnceHandlerType">2</property>
    19. <property name="subqueryRelationshipCheck">false</property> <!-- 子查询中存在关联查询的情况下,检查关联字段中是否有分片字段 .默认 false -->
    20. <!-- <property name="useCompression">1</property>--> <!--1为开启mysql压缩协议-->
    21. <!-- <property name="fakeMySQLVersion">5.6.20</property>--> <!--设置模拟的MySQL版本号-->
    22. <!-- <property name="processorBufferChunk">40960</property> -->
    23. <!--
    24. <property name="processors">1</property>
    25. <property name="processorExecutor">32</property>
    26. -->
    27. <!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena | type 2 NettyBufferPool -->
    28. <property name="processorBufferPoolType">0</property>
    29. <!--默认是65535 64K 用于sql解析时最大文本长度 -->
    30. <!--<property name="maxStringLiteralLength">65535</property>-->
    31. <!--<property name="sequnceHandlerType">0</property>-->
    32. <!--<property name="backSocketNoDelay">1</property>-->
    33. <!--<property name="frontSocketNoDelay">1</property>-->
    34. <!--<property name="processorExecutor">16</property>-->
    35. <property name="serverPort">8066</property>
    36. <property name="managerPort">9066</property>
    37. <property name="idleTimeout">300000</property>
    38. <property name="frontWriteQueueSize">4096</property>
    39. <property name="processors">32</property>
    40. <property name="bindIp">0.0.0.0</property>
    41. <!--分布式事务开关,0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志-->
    42. <property name="handleDistributedTransactions">0</property>
    43. <!--
    44. off heap for merge/order/group/limit 1开启 0关闭
    45. -->
    46. <property name="useOffHeapForMerge">1</property>
    47. <!--
    48. 单位为m
    49. -->
    50. <property name="memoryPageSize">64k</property>
    51. <!--
    52. 单位为k
    53. -->
    54. <property name="spillsFileBufferSize">1k</property>
    55. <property name="useStreamOutput">0</property>
    56. <!--
    57. 单位为m
    58. -->
    59. <property name="systemReserveMemorySize">384m</property>
    60. <!--是否采用zookeeper协调切换 -->
    61. <property name="useZKSwitch">false</property>
    62. <!-- XA Recovery Log日志路径 -->
    63. <!--<property name="XARecoveryLogBaseDir">./</property>-->
    64. <!-- XA Recovery Log日志名称 -->
    65. <!--<property name="XARecoveryLogBaseName">tmlog</property>-->
    66. <!--如果为 true的话 严格遵守隔离级别,不会在仅仅只有select语句的时候在事务中切换连接-->
    67. <property name="strictTxIsolation">false</property>
    68. <property name="useZKSwitch">true</property>
    69. </system>
    70. <!-- 全局SQL防火墙设置 -->
    71. <!--白名单可以使用通配符%或着*-->
    72. <!--例如<host host="127.0.0.*" user="root"/>-->
    73. <!--例如<host host="127.0.*" user="root"/>-->
    74. <!--例如<host host="127.*" user="root"/>-->
    75. <!--例如<host host="1*7.*" user="root"/>-->
    76. <!--这些配置情况下对于127.0.0.1都能以root账户登录-->
    77. <!--
    78. <firewall>
    79. <whitehost>
    80. <host host="1*7.0.0.*" user="root"/>
    81. </whitehost>
    82. <blacklist check="false">
    83. </blacklist>
    84. </firewall>
    85. -->
    86. <user name="root" defaultAccount="true">
    87. <property name="password">mycoding</property>
    88. <property name="schemas">cp_test1</property>
    89. <!-- 表级 DML 权限设置 -->
    90. <!--
    91. <privileges check="false">
    92. <schema name="TESTDB" dml="0110" >
    93. <table name="tb01" dml="0000"></table>
    94. <table name="tb02" dml="1111"></table>
    95. </schema>
    96. </privileges>
    97. -->
    98. </user>
    99. <!--
    100. <user name="user">
    101. <property name="password">user</property>
    102. <property name="schemas">TESTDB</property>
    103. <property name="readOnly">true</property>
    104. </user>
    105. -->
    106. </mycat:server>
    1. [root@s8 conf]# more schema.xml
    2. <?xml version="1.0"?>
    3. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    4. <mycat:schema xmlns:mycat="http://io.mycat/">
    5. <schema name="cp_test1" checkSQLschema="false" sqlMaxLimit="100">
    6. <!-- global table is auto cloned to all defined data nodes ,so can join
    7. with any table whose sharding node is in the same data node -->
    8. <table name="cpuser" primaryKey="id" autoIncrement="true" type="global" dataNode="dn1" />
    9. </schema>
    10. <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
    11. /> -->
    12. <dataNode name="dn1" dataHost="mycat-228" database="cp_test1" />
    13. <!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" />
    14. <dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />
    15. <dataNode name="jdbc_dn2" dataHost="jdbchost" database="db2" />
    16. <dataNode name="jdbc_dn3" dataHost="jdbchost" database="db3" /> -->
    17. <dataHost name="mycat-228" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100">
    18. <heartbeat>select user()</heartbeat>
    19. <!-- can have multi write hosts -->
    20. <writeHost host="s1" url="192.168.1.221:3306" user="root" password="mycoding">
    21. <!-- can have multi read hosts -->
    22. <readHost host="s2" url="192.168.1.222:3306" user="root" password="mycoding" />
    23. <readHost host="s3" url="192.168.1.223:3306" user="root" password="mycoding" />
    24. <readHost host="s4" url="192.168.1.224:3306" user="root" password="mycoding" />
    25. <readHost host="s5" url="192.168.1.225:3306" user="root" password="mycoding" />
    26. <readHost host="s9" url="192.168.1.229:3306" user="root" password="123456" />
    27. </writeHost>
    28. </dataHost>
    29. <!--
    30. <dataHost name="sequoiadb1" maxCon="1000" minCon="1" balance="0" dbType="sequoiadb" dbDriver="jdbc">
    31. <heartbeat> </heartbeat>
    32. <writeHost host="hostM1" url="sequoiadb://1426587161.dbaas.sequoialab.net:11920/SAMPLE" user="jifeng" password="jifeng"></writeHost>
    33. </dataHost>
    34. <dataHost name="oracle1" maxCon="1000" minCon="1" balance="0" writeType="0" dbType="oracle" dbDriver="jdbc"> <heartbeat>select 1 from dual</heartbeat>
    35. <connectionInitSql>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'</connectionInitSql>
    36. <writeHost host="hostM1" url="jdbc:oracle:thin:@127.0.0.1:1521:nange" user="base" password="123456" > </writeHost> </dataHost>
    37. <dataHost name="jdbchost" maxCon="1000" minCon="1" balance="0" writeType="0" dbType="mongodb" dbDriver="jdbc">
    38. <heartbeat>select user()</heartbeat>
    39. <writeHost host="hostM" url="mongodb://192.168.0.99/test" user="admin" password="123456" ></writeHost> </dataHost>
    40. <dataHost name="sparksql" maxCon="1000" minCon="1" balance="0" dbType="spark" dbDriver="jdbc">
    41. <heartbeat> </heartbeat>
    42. <writeHost host="hostM1" url="jdbc:hive2://feng01:10000" user="jifeng" password="jifeng"></writeHost> </dataHost> -->
    43. <!-- <dataHost name="jdbchost" maxCon="1000" minCon="10" balance="0" dbType="mysql"
    44. dbDriver="jdbc"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1"
    45. url="jdbc:mysql://localhost:3306" user="root" password="123456"> </writeHost>
    46. </dataHost> -->
    47. </mycat:schema>
      遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
    峰子 关注 已关注

    最近一次登录:2019-10-10 14:28:58   

    暂时还没有签名,请关注我或评论我的文章

    释怀¥
    10月20日

    Mycat的配置看起来有些复杂,尤其是处理分布式事务和SQL防火墙设置部分。

    隔境之羌╰: @释怀¥

    在配置Mycat时,确实会遇到一些复杂的部分,尤其是在处理分布式事务和SQL防火墙配置时。为了更好地理解这些设置,可以参考一些具体的配置示例。

    例如,Mycat的分布式事务配置需要设置事务管理器,可以参考以下简单配置:

    <transaction>
        <type>xa</type>
        <xa-datasource>
            <name>example_ds</name>
            <jdbcUrl>jdbc:mysql://localhost:3306/example</jdbcUrl>
            <username>root</username>
            <password>password</password>
        </xa-datasource>
    </transaction>
    

    此外,关于SQL防火墙,如果想要确保某些SQL语句不被执行,可以在Mycat的配置文件中设置过滤规则:

    <rule>
        <sql>select * from sensitive_table</sql>
        <action>deny</action>
    </rule>
    

    为了更深入地了解这些配置的细节,建议参考Mycat的官方文档,网址是 Mycat Documentation。这样的文档通常提供了更全面的示例和解释,有助于深入理解 Mycat 的配置和用法。

    11月14日 回复 举报
    痴男
    10月21日

    配置文件中详细展示了Mycat的系统属性,比如serverPortuser配置,确保了系统的安全性和可操作性。

    泓渊: @痴男

    配置Mycat时,详细的系统属性配置确实是保障系统正常运行的重要环节。特别像serverPortuser这样的参数,通过合理配置,可以有效增强系统安全性。在实践中,为了避免配置错误,建议使用如下的方法来管理配置文件:

    <property name="serverPort" value="8066" />
    <property name="user" value="mycat" />
    

    在这些基础参数之外,建议再添加一些如maxConnectionsminConnections参数,以便于管理数据库连接池,例如:

    <property name="maxConnections" value="100" />
    <property name="minConnections" value="10" />
    

    合理调整这些参数能有效提升系统的可扩展性和性能。

    同时,可以考虑将配置文件放置在版本控制系统中(例如Git),这在团队协作时能够提供更好的管理能力,确保每位成员都能获取到最新的配置文件。

    如需了解更多配置细节,可以参考官方文档:Mycat Documentation

    4天前 回复 举报
    扯不断
    10月25日

    通过schema.xml配置,可以看到如何定义不同的数据节点和主机。这对于分库分表的设置至关重要。

    愫暮: @扯不断

    在配置 Mycat 的过程中,schema.xml 的定义确实是对数据库分片与路由策略的基础。特别是当需要处理多数据源或者复杂查询时,合理配置节点可以显著提高系统的扩展性和性能。

    举个例子,如果需要对用户数据进行分表,可以在schema.xml 中定义如下:

    <schema name="user_db" checkSQLschema="false" 
        paddingCharacter="0" indexed="false" 
        dataSource="ds1" numberOfShards="4">
        <table name="user" primaryKey="id">
            <property name="shardingType" value="hash"/>
            <property name="hashAlgorithm" value="mod"/>
        </table>
    </schema>
    

    上述配置中,通过设置 shardingTypehash,可以根据用户ID将数据均匀分布到不同的分库中。这种方式可以有效减小单一数据库负载,实现更好的读写性能。

    另外,建议可以查看 Mycat 官方文档 以获取更多关于配置和最佳实践的详细信息,帮助更好地理解分库分表的策略和配置方法。这对优化大数据场景下的性能无疑是有帮助的。

    6天前 回复 举报
    如果
    10月30日

    server.xml中的useZKSwitch属性值得注意,它涉及到Zookeeper的使用,影响节点的高可用性。

    韦庆龙: @如果

    对于useZKSwitch属性的讨论很有意思,它确实在配置Mycat时扮演了重要角色,尤其是涉及到使用Zookeeper进行集群管理时。提高节点的高可用性不仅关乎数据的一致性,也与系统的整体稳定性密切相关。

    在配置server.xml时,可以参考以下示例,以更好地理解如何配置useZKSwitch属性:

    <configuration>
        <cluster>
            <useZKSwitch>true</useZKSwitch>
            <zkServers>localhost:2181</zkServers>
        </cluster>
    </configuration>
    

    通过以上设置,Mycat将会启用Zookeeper集群模式。值得注意的是,Zookeeper的监控和管理功能可以显著减少单点故障的风险,提高系统的可靠性。同时,应确保Zookeeper的连接稳定,以及主机能够访问配置的Zookeeper服务器。

    在此背景下,了解Zookeeper的工作机制和最佳实践也是十分重要的,可以参考Zookeeper官方文档来获取更多信息。这样有助于深入理解如何实现更高的可用性和系统容错能力。

    11月09日 回复 举报
    人间
    11月05日

    建议在配置时合理规划数据节点以及其对应的数据库实例,以避免读写分离或分片策略带来的潜在瓶颈。

    温存: @人间

    在配置数据节点时,确实需要仔细思考读写分离与分片策略对系统性能的影响。合理规划可以有效减少潜在的瓶颈,有助于提高系统的整体效率。例如,在进行读写分离时,可以将读请求发送到从库,而将写请求发送到主库。以下是一个简单的配置示例:

    <cluster>
        <node name="master" address="192.168.1.1" />
        <node name="slave1" address="192.168.1.2" />
        <node name="slave2" address="192.168.1.3" />
    </cluster>
    

    对于分片策略,如果有大量的数据写入,可以根据某些字段(如用户ID)进行分片,这样可以合理地分布负载。例如,可以将用户ID为1-1000的数据分配到分片A,1001-2000分配到分片B等。

    此外,建议参考一些实践案例来验证这些策略的有效性,比如 MyCat官方文档 上的配置示例和最佳实践,可能会提供更深入的见解。同时,关注性能监控工具也是一个不错的选择,以实时观察节点的负载和瓶颈,自动调整配置。

    通过合理规划节点和策略,可以有效增强系统的扩展性与稳定性。

    3天前 回复 举报
    摇曳
    11月07日

    文档内的注释帮助了解每个配置项的作用,尤其是在处理复杂的SQL动态路由时提供了大的指导。

    文魁: @摇曳

    在配置复杂的SQL动态路由时,清晰的注释确实能大大提升理解和调试的效率。例如,在动态路由中,以下配置项的作用可以通过注释来说明:
    
    ```xml
    <dynamic-dataSource>
        <!-- 数据源的名称 -->
        <dataSource name="ds1">
            <!-- 数据来源的类型 -->
            <type>MySQL</type>
            <!-- 数据源的连接信息 -->
            <connection-url>jdbc:mysql://localhost:3306/mydb</connection-url>
        </dataSource>
        <!-- 更多的数据源配置 -->
    </dynamic-dataSource>
    

    在注释中可以明确指出connection-url的格式要求和注意事项,这对于新手来说尤为重要。此外,考虑到不同环境(如开发、测试、生产)可能会有不同的配置,建议可以使用变量来进行管理,以降低维护成本。例如,可以使用类似${DB_URL}的方式进行替换。

    另外,建议参考以下网址,里面有更详细的动态路由配置实例及最佳实践:MyCat Documentation ```

    11月13日 回复 举报
    想哭不想流泪
    11月08日

    其中的systemReserveMemorySizememoryPageSize配置有助于优化系统的内存分配和使用效率。

    kaifeng: @想哭不想流泪

    在内存管理方面,合理配置systemReserveMemorySizememoryPageSize的确能够对性能产生积极影响。比如,在处理大规模数据时,调优这些参数可以减少内存碎片,提高内存的使用效率。

    例如,如果systemReserveMemorySize设置过低,可能会导致在高并发情况下频繁的内存申请,增加了系统的负担。可以尝试将其值设置为系统总内存的10%-20%来观察性能变化。

    同时,对于memoryPageSize,较小的页面大小在某些情况下能够更精细地管理内存,有助于减少大对象带来的内存浪费。不过,也要注意如果设置过小,可能会增加管理开销。

    可以参考相关的文档和性能调优指南,例如MyCat的官方文档中有关内存配置的部分,以获得更全面的理解和应用策略。

    11月14日 回复 举报
    淡色调
    11月16日

    对于Mycat初学者,可能最好逐项测试配置的影响,尤其是在真实环境中应用之前做性能调优。

    距离: @淡色调

    在配置Mycat的时候,确实逐项测试配置对理解各选项的影响至关重要。可以尝试使用负载测试工具,比如Apache JMeter,来评估不同配置下的性能表现。在真实环境中应用之前,进行这样的测试可以帮助发现潜在的瓶颈。

    例如,可以编写一个简单的JMeter计划,对Mycat配置的各个方面进行基准测试。以下是一个基本示例的概念:

    <ThreadGroup>
        <numThreads>100</numThreads>
        <rampTime>10</rampTime>
    </ThreadGroup>
    <HTTPRequest>
        <serverName>your/mycat/server</serverName>
        <path>/your/api/endpoint</path>
    </HTTPRequest>
    

    建议在测试后对结果进行深入分析,观察响应时间、吞吐量等指标,进而调整Mycat配置,找到最佳性能设置。此外,可以参考Mycat的官方文档和社区资源,例如Mycat文档Mycat GitHub,获取更详细的配置指导和最佳实践。

    11月13日 回复 举报
    黎巴嫩
    11月25日

    Mycat支持多种数据库类型,通过配置文件,可以快速切换和连接不同的数据库,这体现了Mycat的灵活性。

    沉淀: @黎巴嫩

    我觉得提到Mycat的灵活性确实是个亮点,尤其是在多个数据库类型的支持上,能够通过配置文件轻松切换和连接不同数据库,极大地方便了开发和运维。

    例如,Mycat的配置文件通常在mycat.conf中,假设我们要连接MySQL和PostgreSQL,可以按照如下方式配置:

    <datasource>
        <name>mysql_ds</name>
        <driver>mysql</driver>
        <host>127.0.0.1</host>
        <port>3306</port>
        <user>root</user>
        <password>password</password>
        <database>mydb</database>
    </datasource>
    
    <datasource>
        <name>postgresql_ds</name>
        <driver>postgresql</driver>
        <host>127.0.0.1</host>
        <port>5432</port>
        <user>postgres</user>
        <password>password</password>
        <database>mydb</database>
    </datasource>
    

    通过以上配置,可以方便地在不同的数据源间切换。此外,Mycat还支持多种路由策略和分片功能,这些都能为项目的扩展性提供很大的支持。

    关于更多的配置和功能,可以参考Mycat文档了解更详细的信息和示例,以充分利用Mycat的能力。

    11月09日 回复 举报
    离爱
    12月02日

    Mycat的文档可以参考Mycat官方文档。该文档提供了全面的配置指南和实践策略。

    血红: @离爱

    很高兴看到关于Mycat的讨论。Mycat作为一个开源的数据库中间件,确实在分布式数据库管理方面表现出色。配置方面,理解不同的参数对性能的影响是很重要的,比如连接池的配置、路由策略的选择等。

    在配置中,一个较为常用的连接池设置示例可以参考:

    <connection>
        <pool>
            <type>dbcp</type>
            <minIdle>5</minIdle>
            <maxIdle>20</maxIdle>
            <maxActive>100</maxActive>
            <initialSize>10</initialSize>
        </pool>
    </connection>
    

    此外,关于路由策略,可以使用hash路由以实现更好的负载均衡,例如:

    <sharding>
        <shardingRule>
            <expression>hash(id)</expression>
            <shardingMethod>hash</shardingMethod>
        </shardingRule>
    </sharding>
    

    为更深入的理解Mycat的配置,推荐访问Mycat官方文档获取更多具体的实例和使用建议,帮助优化配置以满足特定的业务需求。

    11月11日 回复 举报
    ×
    免费图表工具,画流程图、架构图