在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:myhub开源软件地址:https://gitee.com/sgoby/myhub开源软件介绍:MyHub简介MyHub是一个由Go开发高性能MySQL代理中间件项目,MyHub在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作。MyHub和其它数据库中间件相比最大特点是做到最大限度的仿真MySql,用管理工具连接到Myhub就如同连接接Mysql一样。MyHub能自动停用故障节点数据库,在故障节点数据库恢重启后,Myhub能自动发现并启用节点。请从release页面获取最新版的RPM安装包 基础功能
分片功能
安装RPM安装
编译安装
MyHub配置入门配本配置:启动参数--cnf 配置文件存放配置文件, 默认'conf/myhub.xml'如:myhub.exe --cnf conf/myhub.xml <serveListen>0.0.0.0:8520</serveListen> MyHub 监听的host和端口,默认端口:8520 <workerProcesses>0</workerProcesses> 工作进程数,默认是0,表示取当前主机的CPU核心数 <maxConnections>2048</maxConnections> 最大连接数,默认是2048 日志(log)配置:<logPath>logs</logPath> 配置路径,默认是Myhub当前目录下的logs目录 <logLevel>warn</logLevel> 日志级别:[debug|info|warn|error] 默认error <logSql>on</logSql> 是否开启sql语句输出[on|off] 默认off <slowLogTime>100</slowLogTime> 开启慢日志(时间单位:毫秒),默认是0不开启 用户(user)配置:<users> <!-- db1,db2,ip1,ip2 * means any database or ip --> <user name="root" passwrod="123456" charset="utf-8" db="db1" ip="*"/></users> 参数说明:
节点(node)配置:添加两个节点主机:host_1,host_2 <node> <hosts> <!-- write only(master) 写库(主库) ---> <host type="write" name="host_1" address="127.0.0.1:3306" user="root" password="123456"> <!-- read only(slave) 只读库(从库) ---> <!-- <host type="read" name="host_1_1" address = "192.168.31.231:3306" user = "root" password = "123456" weight="1"/> --> </host> <host type="write" name="host_2" address="192.168.31.231:3306" user="root" password="123456"/> </hosts> <dataBases> <dataBase name="test" host="host_1" maxOpenConns="16" maxIdleConns="4" maxIdleTime="30"/> <dataBase name="shard_01" host="host_1" maxOpenConns="16" maxIdleConns="4" maxIdleTime="30"/> <dataBase name="shard_02" host="host_1" maxOpenConns="16" maxIdleConns="4" maxIdleTime="30"/> <dataBase name="lb_ss" host="host_1" maxOpenConns="16" maxIdleConns="4" maxIdleTime="30"/> <dataBase name="lb_livegame" host="host_2" maxOpenConns="16" maxIdleConns="4" maxIdleTime="30"/> </dataBases></node> 参数说明:
逻辑库(schema)配置:添加两个逻辑数库:db1,test_1;其中db1中添加了三个逻辑表:dealer_info,cash_record,api_log; <schema> <dataBase name="db1" proxyDataBase="lb_ss" blacklistSql="blacklist/db1.sql"> <!-- rule: hash | range | date_month | date_day --> <table name="dealer_info" ruleKey="id" rule="rang_1" createSql="dealer_info.sql"/> <table name="cash_record" ruleKey="add_time" rule="rang_2" createSql="cash_record.sql"/> <table name="api_log" ruleKey="id" rule="hash_1" createSql="api_log.sql"/> </dataBase> <!-- 直接代理 --> <dataBase name="test_1" proxyDataBase="test"/></schema> 参数说明:
分片规则(rule)配置:Myhub 目前支持三种分片规则:
此规则根据rowLimit参数求模运算,可以把相邻的数据分到同一分片,减少插入事务控制难度。如果分片字段(ruleKey)的类型是数字类型,则直接求模;如果是字符类型,先计hashCode再求模。
此规则适用于,提前规划好分片字段某个范围属于哪个分片,start <= range < end。
此规则可以按(年、月、日)分片,支持多个日期周期,如: 可以把每7天(rowLimit="7d")作为的一个分片,其它同理,start <= date < end。 <rules> <rule name="rang_1" ruleType="range" format="%04d"> <!-- tableRowLimit : 2d,m,y,h--> <shard nodeDataBase="test" rowLimit="10000" between="1-8" /> <shard nodeDataBase="shard_01" rowLimit="10000" between="8-10" /> </rule> <rule name="rang_2" ruleType="date" format="ym"> <!-- tableRowLimit : 2d,m,y,h--> <shard nodeDataBase="test" rowLimit="1m" between="201801-201901" /> </rule> <!-- 'maxLen' represents the count of hash shard total, default 1024 --> <rule name="hash_1" ruleType="hash" format="%04d" maxLen = "12"> <!-- 'rowLimit' represents every shard table continuous rows count split by 'ruleKey', default 1; 'between' represents the hash mod value range. ex:'between="0-3",ruleKey's value is 10, and 'maxlen'= 10, 10%3 = 1,it menas in the between 0-3 --> <shard nodeDataBase="test" rowLimit="2" between="0-6" /> <shard nodeDataBase="shard_01" rowLimit="2" between="6-12" /> </rule></rules> 参数说明:
|
请发表评论