<!DOCTYPE mycat:server SYSTEM "server.dtd">
<!--mycat 一般正常就这个配置就可以了 -->
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<!--charset 字符集与mysql需要一直 -->
<!--sqlExecuteTimeout sql超时断开连接 默认单位秒 -->
<property name="nonePasswordLogin">0</property> <!--0 需要密码,1 不需要-->
<property name="useSqlStat">0</property>
<property name="useGlobleTableCheck">0</property>
<property name="processors">2</property><!--线程数-->
<property name="sequnceHandlerType">1</property><!-- 0 本地文件1数据库方式2时间戳3zookeeper方式 -->
<property name="txIsolation">2</property><!--隔离级别 1,读未提交 2 读已提交 ,3可重读,4序列化-->
<property name="defaultMaxLimit">100</property><!--mycat 默认数据集大小 分布式一般数据量比较大 没配置默认返回这个数据数 -->
<property name="maxPacketSize">104857600</property> <!--mysql包数据大小-->
<property name="serverPort">8066</property><!--mycat 端口 -->
<property name="managerPort">9066</property><!--mycat 管理端口 -->
<property name="idleTimeout">1800000</property><!--前端多久没有访问,会断开连接,mycat连接池更好提供服务 毫秒-->
<property name="bindIp">0.0.0.0</property><!--网卡ip-->
<property name="frontWriteQueueSize">2048</property><!--前端写队列大小-->
<property name="sqlExecuteTimeout">300</property>
<property name="sqlInterceptor">io.mycat.server.interceptor.impl.StatisticsSqlInterceptor</property><!-- 需Java 拦截的类-->
<property name="sqlInterceptorType">UPDATE,DELETE,INSERT</property> <!-- 记录操作类型-->
<property name="sqlInterceptorFile">/tmp/sqllog.txt</property>
</system>
<!-- 指定地址用户才能访问mycat
<firewall>
<whitehost>
<host user="root" host="127.0.0.1"></host>
<blacklist check="true">
<property name="noneBaseStatementAllow">true</property> 是否允许ddl功能
<property name="deleteWhereNoneCheck">true</property> delete没条件不给删除
<blacklist>
</whitehost>
</firewall>
-->
<user name="app_mycat">
<!--java -cp Mycat-server-1.6.5-release.jar io.mycat.util.DecryptUtil 0:root:123456 获取加密密码 -->
<property name="password">aI1N4myKYg6oMXWvWuDQvpOMbEkhnHIWDRPj3z3u6vaFUXZm67kH9MP8G4bvhtSK7a9Z0InTTOGsfw==</property>
<property name="usingDecrypt">1</property>
<property name="schemas">imooc_db</property>
</user>
<!--
配置用户访问权限
<user name="app_mycat" defaultAccount="true"> 表示默认账号
<property name="schemas">imooc_db</property>
<property name="password">aI1N4myKYg6oMmWvWpOMbEkhnHIWDRPj3z3u6vaFUXZm67kH9MP8G4bvhtSK7a9Z0InTTOGsfw==</property>
<property name="usingDecrypt">1</property>
<privileges check="true">
<schema name="imooc_db" dml="0110"> 数字对应insert,update,select,delete操作 0是没有权限
<table name="table1" dml="0000"></table>
<table name="table2" dml="1111"></table>
</schema>
</privileges>
</user>
-->
</mycat:server>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
<!-- name必须唯一 取名一般hash_mode_4_id 表示通过hash取模,并且是通过id分片,取4模-->
<tableRule name="order_master">
<rule>
<columns>customer_id</columns> <!--一般选主键或者业务关联键 作为 切片键,决定数据存储位置和性能-->
<algorithm>mod-long</algorithm> <!-- 分片函数-->
</rule>
</tableRule>
<!-- io.mycat.route.function.PartitionByHashMod hash取模可以算字符串-->
<!-- io.mycat.route.function.PartitionByFileMap 异地多活,根据地域ID-->
<!-- io.mycat.route.function.PartitionByPrefixPattern 部分字符串取模-->
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<property name="count">4</property>
</function>
<!--
<function name="hash-int-test"
class="org.opencloudb.route.function.PartitionByFileMap">
<property name="mapFile">partition-hash-int-test.txt</property> 枚举文件内容 a=0 换行b=1 换行DEFAULT_NODE=9
<property name="type">1</property> 0表示数字类型,1表示字符串类型
<property name="defaultNode">0</property> node>=0表示支持默认节点
</function>
-->
</mycat:rule>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--检查SQL中是否含库名 mysql不支持直接夸物理数据库的访问 用户自己检查-->
<schema name="imooc_db" checkSQLschema="false" sqlMaxLimit="100">
<!--autoIncrement 自增序列-->
<table name="order_master" dataNode="orderdb01,orderdb02,orderdb03,orderdb04" rule="order_master" primaryKey="order_id" autoIncrement="true">
<!--select * from order_master 1 join order_detail b on a.order_id=b.order_id; 关联分片语句 -->
<childTable name="order_detail" joinKey="order_id" parentKey="order_id" primaryKey="order_detail_id" autoIncrement="true"/>
</table>
<!--name和物理库相同 如果分片键不是主键则会记录主键信息,分片查询时,再次发起查询时,速度会比较快
dataNode节点顺序就是分片规则的节点顺序,一旦定义不要轻易修改,不然数据会混乱-->
<table name="order_cart" dataNode="ordb" primaryKey="cart_id"/>
<table name="order_customer_addr" dataNode="ordb" primaryKey="customer_addr_id"/>
<!-- global全局表,-->
<table name="region_info" dataNode="ordb,prodb,cusdb" primaryKey="region_id" type="global"/>
<table name="shipping_info" dataNode="ordb" primaryKey="ship_id"/>
<table name="warehouse_info" dataNode="ordb" primaryKey="w_id"/>
<table name="warehouse_product" dataNode="ordb" primaryKey="wp_id"/>
<table name="product_brand_info" dataNode="prodb" primaryKey="brand_id"/>
<table name="product_category" dataNode="prodb" primaryKey="category_id"/>
<table name="product_comment" dataNode="prodb" primaryKey="comment_id"/>
<table name="product_info" dataNode="prodb" primaryKey="product_id"/>
<table name="product_supplier_info" dataNode="prodb" primaryKey="supplier_id"/>
<table name="product_pic_info" dataNode="prodb" primaryKey="product_pic_id"/>
<table name="customer_balance_log" dataNode="cusdb" primaryKey="balance_id"/>
<table name="customer_inf" dataNode="cusdb" primaryKey="customer_inf_id"/>
<table name="customer_level_inf" dataNode="cusdb" primaryKey="customer_level"/>
<table name="customer_login" dataNode="cusdb" primaryKey="customer_id"/>
<table name="customer_login_log" dataNode="cusdb" primaryKey="login_id"/>
<table name="customer_point_log" dataNode="cusdb" primaryKey="point_id"/>
</schema>
<dataNode name="ordb" dataHost="mysqlS2" database="order_db"/>
<dataNode name="prodb" dataHost="mysqlS1" database="product_db"/>
<dataNode name="cusdb" dataHost="mysqlS3" database="customer_db"/>
<dataNode name="orderdb03" dataHost="mysqlM1" database="orderdb03"/>
<dataNode name="orderdb04" dataHost="mysqlM1" database="orderdb04"/>
<dataNode name="orderdb01" dataHost="mysqlS3" database="orderdb01"/>
<dataNode name="orderdb02" dataHost="mysqlS3" database="orderdb02"/>
<dataNode name="mycat" dataHost="mysqlM1" database="mycat"/>
<!-- mysql一主一从是可以保证写的高可用的 连接池连接数
balance 0 不开启读写分离 1 发送到当前的writeHost对应的readHost和备用的writeHost
2.所有的读操作都随机发送到所有的writeHost,readHost上
3.所有的读操作都只发送到writeHost的readHost上
wtireType 0 写主机挂了,才会发送到另一台写主机 1 写请求随机放到写请求 (pxc集群多写mysql集群的时候才能用,不然出问题)
dbtype 支持sql类型 dbDrive native mysql原生的驱动 jdbc 用来连接其他数据库
switchType 1 只要一台挂了,另一台自动切换 ,-1则不启动 后台数据库使用一主多从集群mha 3m 主从复制高可用工具,这里就可以设置-1
-->
<dataHost balance="3" maxCon="1000" minCon="10" name="mysqlM1" writeType="0" switchType="1" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="129.204.66.6:3306" password="qqqwww" user="im_mycat"/>
<readHost host="hostS1" url="47.107.218.8:3306" password="qqqwww" user="im_mycat"/>
</writeHost>
<writeHost host="hostS1" url="47.107.218.8:3306" password="qqqwww" user="im_mycat"/>
</dataHost>
<dataHost balance="3" maxCon="1000" minCon="10" name="mysqlS1" writeType="0" switchType="1" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<writeHost host="hostS1" url="47.107.149.9:3306" password="qqqwww" user="im_mycat"/>
</dataHost>
<dataHost balance="3" maxCon="1000" minCon="10" name="mysqlS2" writeType="0" switchType="1" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<writeHost host="hostS2" url="120.79.218.8:3306" password="qqqwww" user="im_mycat"/>
</dataHost>
<dataHost balance="3" maxCon="1000" minCon="10" name="mysqlS3" writeType="0" switchType="1" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<writeHost host="hostS3" url="118.25.89.9:3306" password="qqqwww" user="im_mycat"/>
</dataHost>
</mycat:schema>
如果文章对您有帮助,欢迎移至上方按钮打赏,非常感谢你的支持!
全部评论