数据库路由中间件MyCat - 使用篇(3)下篇

此文已由作者张镐薪授权网易云社区发布。


欢迎访问网易云社区,了解更多网易技术产品运营经验。

2. 配置conf/server.xml

server.xml几乎保存了所有mycat需要的系统配置信息。其在代码内直接的映射类为SystemConfig类。 参考完整配置:


    
        druidparser
         
        
        
        
        
        
        
        1
        
        
        
        
        8066 9066
    
    
        
        1
        CrjpLhvVJkHk0EPW35Y07dUeTimf52zMqClYQkIAN3/dqiG1DVUe9Zr4JLh8Kl+1KH1zd7YTKu5w04QgdyQeDw==
        schema1
    
        
        1
        nYx8wxkKtgdPtMXIpapwbNadIWFzpse48NcO+42D1yS//1cNxxQquw07eV/7gvVpxzbjNv47t6QpChvVszKy9g==
        true
        schema1
    

2.1 生成密文密码

查看密文密码工具类org.opencloudb.util.DecryptUtil,可以发现main方法中接收的参数为如下格式: 0:test:test 分别对应的是

  • 加密方式:0 前端加密, 1 后端加密(后端是指后台具体数据库连接)

  • server.xml 文件中定义的用户名

  • 明文密码

这里我们是配置前端,用户名为test,密码为test。 (前端和后端用的密码盐不一样,盐中还有用户名的成分) 传入这个参数运行主类,在控制命令行得到密文密码。 nYx8wxkKtgdPtMXIpapwbNadIWFzpse48NcO+42D1yS//1cNxxQquw07eV/7gvVpxzbjNv47t6QpChvVszKy9g==

2.2 配置用户和逻辑库与权限


        
        1
        CrjpLhvVJkHk0EPW35Y07dUeTimf52zMqClYQkIAN3/dqiG1DVUe9Zr4JLh8Kl+1KH1zd7YTKu5w04QgdyQeDw==
        
        schema1
    
        
        1
        nYx8wxkKtgdPtMXIpapwbNadIWFzpse48NcO+42D1yS//1cNxxQquw07eV/7gvVpxzbjNv47t6QpChvVszKy9g==
        
        true
        schema1
    

上面的注释已经很清楚,在1.5版本,用户权限更全面,并且还有ip白名单和sql黑名单的功能。

2.3 配置系统参数


        
        druidparser
        
         
        
        
        
        
        
        
        
        
        
        
        
        8066 9066
    

以下2、3、4的属性不理解不用着急,之后的源代码篇会讲述得更清楚,这里可以都不配置。

  1. Mycat可以在server.xml中配置1启用。 客户端如果是mysql命令行,则加参数-C启用压缩协议。 客户端如果是jdbc则在jdbc的url上加上参数useCompression=true,例如:jdbc:mysql://127.0.0.1:8066 /base?useCompression=true  一般网路条件越差,性能提升越明显。

  2. processors:这个属性主要用于指定系统可用的线程数,默认值为Runtime.getRuntime().availableProcessors()方法返回的值。主要影响processorBufferPool、processorBufferLocalPercent、processorExecutor属性。NIOProcessor的个数也是由这个属性定义的,所以调优的时候可以适当的调高这个属性。

  3. 由于每次执行NIO读、写操作都需要使用到buffer,系统初始化的时候会建立一定长度的buffer池来加快读、写的效率,减少建立buffer的时间。Mycat中有两个主要的buffer池:BufferPool和ThreadLocalPool BufferPool由ThreadLocalPool组合而成,每次从BufferPool中获取buffer都会优先获取ThreadLocalPool中的buffer,未命中之 后才会去获取BufferPool中的buffer。也就是说ThreadLocalPool是作为BufferPool的二级缓存,每个线程内部自己使用的。当 然,这其中还有一些限制条件需要线程的名字是由$_开头。然而,BufferPool上的buffer则是每个NIOProcessor都共享的。 默认这个属性的值为: 默认bufferChunkSize(4096)  processors属性  1000 BufferPool的总长度 = bufferPool / bufferChunk。 若bufferPool不是bufferChunk的整数倍,则总长度为前面计算得出的商 + 1 假设系统线程数为4,其他都为属性的默认值,则: bufferPool = 4096  4  1000 BufferPool的总长度 : 4000 = 16384000 / 4096

  4. processorExecutor属性 这个属性主要用于指定NIOProcessor上共享的businessExecutor固定线程池大小。mycat在需要处理一些异步逻辑的时候会把任务提交到这个线程池中。新版本中这个连接池的使用频率不是很大了,可以设置一个较小的值。

  5. TCP相关参数,前端后端分别为: frontSocketSoRcvbuf 默认值: 1024  1024 frontSocketSoSndbuf 默认值: 4  1024  1024 frontSocketNoDelay 默认值: 1 backSocketSoRcvbuf 默认值: 4  1024  1024 backSocketSoSndbuf 默认值: 1024  1024 backSocketNoDelay 默认值: 1

  6. MySql连接相关属性: packetHeaderSize : 指定Mysql协议中的报文头长度。默认4。 maxPacketSize : 指定Mysql协议可以携带的数据最大长度。默认16M。 idleTimeout : 指定连接的空闲超时时间。某连接在发起空闲检查下,发现距离上次使用超过了空闲时间,那么这个连接会被回收,就是被直接的关闭掉。默认30分钟。 charset : 连接的初始化字符集。默认为utf8。 txIsolation : 前端连接的初始化事务隔离级别,只在初始化的时候使用,后续会根据客户端传递过来的属性对后端数据库连接进行同步。默认为REPEATED_READ。 sqlExecuteTimeout:SQL执行超时的时间,Mycat会检查连接上最后一次执行SQL的时间,若超过这个时间则会直接关闭这连接。默认时间为300秒

  7. 定时任务: processorCheckPeriod : 清理NIOProcessor上前后端空闲、超时和关闭连接的间隔时间。默认是1秒。 dataNodeIdleCheckPeriod : 对后端连接进行空闲、超时检查的时间间隔,默认是60秒。 dataNodeHeartbeatPeriod : 对后端所有读、写库发起心跳的间隔时间,默认是10秒

  8. 服务相关属性: bindIp : mycat服务监听的IP地址,默认值为0.0.0.0。 serverPort : 定义mycat的使用端口,默认值为8066。就是客户端接入端口(应用接入,mysql客户端接入端口),MyCat的主要服务都是通过这个端口发出。 managerPort : 定义mycat的管理端口,默认值为9066。有很多监控命令


免费体验云安全(易盾)内容安全、验证码等服务

更多网易技术、产品、运营经验分享请点击。




相关文章:
【推荐】 接口文档神器Swagger(下篇)
【推荐】 云计算交互设计师的正确出装姿势
【推荐】 MongoDB的正确使用姿势

你可能感兴趣的:(数据库路由中间件MyCat - 使用篇(3)下篇)