Mycat和Atlas分库分表安装、配置指南
来源:互联网 发布:玩客云京东抢购软件 编辑:程序博客网 时间:2024/05/15 08:32
背景
数据库中间件选型思考
官网上安装、配置信息零散,需要使用者收集整理信息,在理解基础上正确配置,才能保证运行成功。这个工作比较耗时,希望读者看到此博客能快速run起来。
网络博客上也有很多人写Mycat和Atlas,绝大多数是针对Mycat和Atlas读写分离场景配置的。对Atlas,奇虎360在GitHub上开源了2个版本,一个版本为纯代理版,支持分表功能,另一个为Sharding版本。本次配置分库分表场景。
环境准备
部署架构
部署环境
MySQL:申请4个节点配置相同(虚拟机或物理机都可以),每个节点创建一个数据库,名称相同都为dbproxy,接着每个库创建一个相同表sbtest1
Mycat:下载Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
Atlas:下载Atlas-sharding_1.0.1-el6.x86_64.rpm
创建一个表:sbtest1
sbtest1表结构为:
CREATE TABLE `sbtest1` ( `id` int(10) unsigned NOT NULL, `k` int(10) unsigned NOT NULL DEFAULT '0', `c` char(120) NOT NULL DEFAULT '', `pad` char(60) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `k_1` (`k`)) ENGINE=InnoDB DEFAULT CHARSET=utf8
sbtest1表结构为使用sysbench工具创建生成的,去掉了自增主键设置,后续就可以直接使用扩展版sysbench测试
中间件安装配置
Mycat安装配置
Mycat服务有2种配置方式,其一为在zookeeper上配置,启动后也会把内容写到*.xml几个文件中,其二是直接到*.xml修改配置,本次采用第二种方式简单方便。
安装
tar xzvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
配置
server.xml账号和资源配置
<!DOCTYPE mycat:server SYSTEM "server.dtd"><mycat:server xmlns:mycat="http://io.mycat/"> <system> <property name="useSqlStat">0</property> <!-- 1为开启实时统计、0为关闭 --> <property name="useGlobleTableCheck">0</property> <!-- 1为开启全加班一致性检测、0为关闭 --> <property name="sequnceHandlerType">2</property> <property name="processorBufferPoolType">0</property> <property name="serverPort">8066</property> <property name="managerPort">9066</property> <property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property> <property name="processorExecutor">32</property> <property name="handleDistributedTransactions">0</property> <property name="useOffHeapForMerge">1</property> <property name="memoryPageSize">1m</property> <property name="spillsFileBufferSize">1k</property> <property name="useStreamOutput">0</property> <property name="systemReserveMemorySize">384m</property> <property name="useZKSwitch">true</property> </system> <user name="root"> <property name="password">123456</property> <property name="schemas">testdb</property> </user> <user name="user"> <property name="password">123456</property> <property name="schemas">testdb</property> <property name="readOnly">true</property> </user></mycat:server>
Mycat会对数据库访问资源进行管理,有2种类型账号,分为管理员、普通用户;管理员负责中间件各种资源管理(后端数据库访问)、查看、分配等,普通用户只能对数据库进行DDL和DML操作。每个用户配置了访问具体数据库资源,由schemas参数决定,未配置则无法访问。
schema.xml逻辑库配置
<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="testdb" checkSQLschema="false" sqlMaxLimit="10000" > <table name="sbtest1" primaryKey="id" dataNode="dn01,dn02,dn03,dn04" rule="mod-long" /> </schema> <dataNode name="dn01" dataHost="dbp1" database="dbproxy" /> <dataNode name="dn02" dataHost="dbp2" database="dbproxy" /> <dataNode name="dn03" dataHost="dbp3" database="dbproxy" /> <dataNode name="dn04" dataHost="dbp4" database="dbproxy" /> <dataHost name="dbp1" maxCon="2000" minCon="1000" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="dbpHostM1" url="ip01:3306" user="zhitao" password="iyw_=EseXx94"> </writeHost> </dataHost> <dataHost name="dbp2" maxCon="2000" minCon="1000" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="dbpHostM2" url="ip02:3306" user="zhitao" password="iyw_=EseXx94"> </writeHost> </dataHost> <dataHost name="dbp3" maxCon="2000" minCon="1000" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="dbpHostM3" url="ip03:3306" user="zhitao" password="iyw_=EseXx94"> </writeHost> </dataHost> <dataHost name="dbp4" maxCon="2000" minCon="1000" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="dbpHostM4" url="ip04:3306" user="zhitao" password="iyw_=EseXx94"> </writeHost> </dataHost></mycat:schema>
以上配置了4个逻辑库,只有主库没配从库,如有需要读者可以加上,一个表sbtest1数据切分到4个逻辑库上。其中’rule=”mod-long”‘表示选择取模算法,对应下面的配置
rule.xml分片规则配置
...... <function name="mod-long" class="io.mycat.route.function.PartitionByMod"> <!-- how many data nodes --> <property name="count">4</property> </function>......
表示id % 4 = 路由到对应逻辑库上(dbp1|dbp2|dbp3|dbp4)
成功执行一条SQL语句:
Atlas安装配置
Atlas配置相对较简单,配置项和文件都比Mycat要少
安装
1.执行如下命令
sudo rpm –i Atlas-XX.el6.x86_64.rpm
默认安装目录:/usr/local/mysql-proxy
2.配置test.cnf
进入conf目录
[mysql-proxy]admin-username = useradmin-password = 123456#配置代理或读写分离主库配置admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua#Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔#proxy-backend-addresses = ip01:3306,ip02:3306#Atlas后端连接的MySQL从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔#proxy-read-only-backend-addresses = readonlyIP01:3306,readonlyIP02:3306#示例,配置代理主库配置proxy-backend-addresses = ipxxx:3306daemon = truekeepalive = false#libevent线程数配置event-threads = 32log-level = error#日志路径log-path = /usr/local/mysql-proxy/logsql-log = OFF#代理端口配置,用于操作数据库proxy-address = 0.0.0.0:1234#管理端口配置,用于管理资源,监控,系统信息操作、查看等admin-address = 0.0.0.0:2345charset = UTF8wait-timeout = 3600#Atlas密码需要加密,安装Atlas进入bin目录,执行:./encrypt mysql数据库密码;生成加密串拷贝上去pwds = zhitao:If2Il8Bd7YgWZ+vzsw3ZlQ==[shardrule-0]table = dbproxy.sbtest1# sharding类型:range或hash,本次type = hash # 分片字段名shard-key = id# 0:0-999,1:1000-1999 #分片的group,如果是range类型的sharding,则groups的格式是:group_id:id范围。如果是hash类型的sharding,则groups的格式是:group_id。例如groups = 0, 1groups = 0,1,2,3[group-0]# masterproxy-backend-addresses=ip01:3306[group-1]proxy-backend-addresses=ip02:3306[group-2]proxy-backend-addresses=ip03:3306[group-3]proxy-backend-addresses=ip04:3306
登录Atlas:
执行SQL Atlas:
注意:配置分库分表时,只有指定的分表才会执行shardrule流程,其他表走正常请求流程,所以要配置proxy-backend-addresses,从库配置视部署情况可选
- Mycat和Atlas分库分表安装、配置指南
- ATLAS安装配置指南
- Mycat 安装和配置
- Mysql代理中间件 Atlas 安装和配置
- Linux下Mycat安装配置和使用
- Ambari Atlas安装配置
- mycat配置文件详解 安装指南
- mycat的安装配置
- mycat安装&配置 学习
- 测试国内开源数据库中间件Mycat和Atlas体会
- Linux下MyCat和MyCat_web的安装和配置
- Mycat安装和测试
- Atlas的安装及配置
- Atlas-sharding_1.0.1安装配置
- windows下安装配置mycat
- Docker中安装配置mycat
- AspectJ安装和配置指南
- AspectJ安装和配置指南
- 主进程杀不死
- L2-009. 抢红包
- 项目进度(三)
- JS一些基础算法题解析
- Android 5.0新增控件的总结
- Mycat和Atlas分库分表安装、配置指南
- 在vs code中使用ftp-sync插件实现客户端与服务器端代码的同步
- 深入理解Java注解类型(@Annotation)
- c++获取剪切板的内容
- python变量笔记
- 管道的四种读写情况
- 【C++】优先级队列的模拟实现
- 错误:在自己制作的dll库时,出现错误"*100ud.dll"丢失
- 数据库TPCC benchmark测试工具对比