设为首页 收藏本站
查看: 462|回复: 0

[经验分享] Ubuntu10下MySQL搭建Amoeba_分片升级版

[复制链接]

尚未签到

发表于 2015-6-19 09:42:04 | 显示全部楼层 |阅读模式
  一、背景知识
  Amoeba的简单进行分片,比如对int类型的ID字段进行取模分片,实例可以参考:Ubuntu10下MySQL搭建Amoeba_分片,但是如果ID字段是UUID类型的呢?这个时候我们应该如何分片呢?
  这篇文章将会为你解决这个问题。
  
  二、搭建过程
  (一) 测试环境
  Amoeba for MySQL:192.168.1.147
  server1:192.168.1.25
  server2:192.168.1.30
  server3:192.168.1.35
  数据库为:DBA_DB,帐号密码统一为:test/123456
  
  (二) 前期准备
  1.      验证Amoeba是否安装成功的命令(如下图):/usr/local/amoeba/bin/amoeba
DSC0000.jpg

(图1:安装成功)

  2.      启动amoeba:/usr/local/amoeba/bin/amoeba start
DSC0001.jpg

(图2:启动成功)

  
  (三) 分片配置
  1.      修改amoeba.xml,设置登陆amoeba的帐号密码。
  testuser
  password
  2.      测试使用上面帐号是否正常登陆,如果出现上面的图2界面说明设置的帐号密码成功。
  #mysql -u testuser -p -h 192.168.1.147 -P 8066
  3.      修改dbServers.xml,设置数据库、登陆MySQL的帐号和密码。
  DBA_DB
  test
  123456
  4.      修改dbServers.xml,设置数据库服务器的IP地址和服务器别名。
    
       
           192.168.1.25
       
     
    
        
            192.168.1.30
        
    
    
        
  192.168.1.35
        
     
  5.      修改rule.xml,设置分片规则,设置需要分片的表、数据库名、分片的服务器、分片规则:对ID取hash再 mod 3,分别分片到server1、server2、server3。
    
     
         ID
        
         server1
     
     
          ID
          
          server2
     
     
          ID
          
          server3
     
  
  6.      重新启动amoeba,如果出现上面的图2界面说明设置成功。
  7.      如果你已经使用终端登陆了amoeba(#mysql -u testuser -p -h 192.168.1.147 -P 8066),那么你需要重启打开终端;如果你使用SQLyog的工具登陆了amoeba,那么你需要关闭链接,再重新链接amoeba;
  
  (四) 验证sharding
  1.      登陆到amoeba(147),插入下面的测试数据
  INSERT INTO DBA_DB.blog(ID,Content,Site,AddOn)
  VALUES ('13dd9e58-6507-11e1-ad6c-003018a3e4c6','中国人',1,NOW());
  INSERT INTO DBA_DB.blog(ID,Content,Site,AddOn)
  VALUES ('f69733f4-6506-11e1-ad6c-003018a3e4c6','中国人',1,NOW());
  INSERT INTO DBA_DB.blog(ID,Content,Site,AddOn)
  VALUES ('e4c84838-6502-11e1-ad6c-003018a3e4c6','中国人',1,NOW());
  INSERT INTO DBA_DB.blog(ID,Content,Site,AddOn)
  VALUES ('05218fdc-6507-11e1-ad6c-003018a3e4c6','中国人',1,NOW());
  2.      登陆server1、server2、server3、amoeba分别验证数据的分布。
DSC0002.jpg

(server1:192.168.1.25)

DSC0003.jpg

(server2:192.168.1.30)

DSC0004.jpg

(server3:192.168.1.35)

DSC0005.jpg

(amoeba:192.168.1.147)

  
  三、注意事项
  1.      验证Amoeba是否安装成功的命令:/usr/local/amoeba/bin/amoeba 要全部输入,如果是进入到bin执行amoeba是不行的。
  2.      #mysql -u root -p -h 127.0.0.1 -P 8066其中root和密码表示的是在amoeba.xml中配置的帐号密码。
  3.      当tableRule中没有任何规则能命中该表,将操作tableRule配置的writePools(若没有配置则使用defaultPools)属性中的数据库节点;
  4.      当某个表在任何tableRules都没有被路由到,将操作queryRouter配置的writePools(若没有配置则使用defaultPools)属性中的数据库节点。
  5.      Amoeba的垂直切分的意思是对表进行切分的意思。基于Amoeba的数据垂直切分
  
  四、错误与疑问
  1.      amoeba start之后,再用终端连接上mysql,出现了下面的错误:
   DSC0006.jpg

  这个错误是dbServers.xml中配置的mysql的连接存在问题,可以先使用里面的帐号测试登陆,进一步排除问题。
  2.      下面两个图是启动amoeba的不同界面,为什么会有区别呢?用于调试:
   DSC0007.jpg

(图:有及时信息输出)

   DSC0008.jpg

(图:回到命令行了)

  3.      MySQL的表分区是怎么搭建的?它存在哪些优缺点?
  4.      在实际应用的分片策略,例如,博主ID:使用AuthorID作为分片依据列;分类ID:使用ClassId作为分片依据列。这些ID都是UUID值,先对这个ID进行hash取key,再对key取模,再进行分片,Amoeba for MySQL能支持到这样的嘛?
  5.      MySQL能不能返回HASH值?执行select hash('mypass');有错。
  6.      Amoeba对联表查询支持?性能如何?
  7.      在做分片的时候出现了一个低级错误,那就是在Insert的时候使用UUID();在Amoeba分片规则中使用了3个ID规则,导致每个数据库都进数据了,因为规则无法判断到这个ID是什么,只能到了数据库执行之后才知道,这跟调用存储过程是一样的道理。
  8.      官网关于hash分片的说明配置是有错误的:第一个, DSC0009.jpg 中的id小写是错误的;第二个,中的mod是不能识别的;基于Amoeba的数据水平切分


  
  五、参考文献
  基于Amoeba的数据水平切分
  通过Amoeba对数据进行简单的分片
  Amoeba使用指南
  通过Amoeba对一个数据库实例进行操作
  Amoeba 高级特性
  Amoeba切分规则配置详解
  Amoeba for mysql 0.31发布(读写分离、负载均衡、Failover、数据切分)
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-78766-1-1.html 上篇帖子: mysql的使用方法 下篇帖子: Mysql使用大全-从基础到存储过程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表