首页 > 数据库 >公司某产品MySql分布式架构总结

公司某产品MySql分布式架构总结

时间:2023-09-14 14:38:14浏览次数:45  
标签:架构 MySql A0 Amoeba master mysql slave accountId 分布式


这个是目前公司某产品Server端MySql分布式架构总结(内容总结自wiki),该产品同时使用了Mysql和MongoDB。


本篇Blog只做Mysql分布式架构的介绍。


----------------------------------------------------


一、共4台Linux服务器A\B\C\D


A master with slave B


C master with slave D


每台机器都启动8个mysql实例,由mysqld_multi管理(每台机器使用端口3301-3308)。


注:单机启动多个mysql的好处是(引用网上其它资料)


1、充分利用单机的计算能力。


2、可以有效的分配不同的逻辑到不同的mysql提高数据库并行处理能力。


3、单机也可以方便的实现主从备份。


二、部署Amoeba


故障切换).但Amoeba本身不会检查另一个amoeba的生存状态。


2、Amoeba占用8066端口,应用可以把Amoeba当作虚拟mysql访问。


部分表的访问,会根据userId进行水平分区,并根据是读是写做读写分离。


账号设备表永远访问A0实例(即A机3301端口的实例)。


同时,不支持shard的命令会分发到default数据库,目前设置为A0。


3、Amoeba支持配置自动加载,但是加载顺序等有一定问题,建议重启amoeba。


4、目前读请求是分发到虚拟读节点,将会2/3的概率分到对应的slave,1/3分到master。Amoeba支持虚拟节点中的真实节点的failover和故障检测。


5、在对shard表(水平分区)进行操作时,使用mysql console可以像使用正常mysql一样进行普通读写操作,但是对于一些特殊操作可能会有问题。如:


(1)select … where accountId in()会出错;


(2)select count * 如果where子句中没有对accountId指定唯一值,会返回多个列;


(3)update,delete指令没有指定唯一accountId,会返回多列的结果等;


(4)另外所有transaction(事务)命令都不予支持,会转发到default数据库上去。


6、用户账号系统的数据库直接放在了A0上(垂直扩展?)。


不断更新中...

标签:架构,MySql,A0,Amoeba,master,mysql,slave,accountId,分布式
From: https://blog.51cto.com/u_6978506/7470087

相关文章

  • MySQL性能优化之 - 单表查询+代码层拼接 VS 表连接查询
    单表查询+代码端拼接的优势记得当初单位派我去阿里交流学习时,人家就说,在阿里,95%以上的查询都是单表查询,虽然我们都知道单表查询更加符合MySql底层的算法逻辑,但是单表查询+代码端拼接的优势究竟是什么,它为什么互联网企业都会使用单表查询呢?归纳而言大体分以下几点:1.激活代码端和......
  • Mysql主从复制原理
     本文总结自网上关于Mysql复制原理的一些文章。----------------------------------------------------------1、Mysql复制是一个异步的复制,从masterinstance到slaveinstance,实现整个复制操作主要使用3个进程完成。其中2个进程是Slave的Sql进程和IO进......
  • Myspace数据库架构经验学习
    50万账户两台Web服务器和一个数据库服务器。第二代架构:运行在3个SQLServer数据库服务器,一主二从,读写分离。1-2百万账户垂直分割:不同的数据库服务于站点的不同功能,如登录、用户资料和博客。账户到达2百万后,数据库服务器开始受制于I/O容量,用高带宽、专门设计的网络将大量磁盘存储设......
  • MYSQL单列索引和组合索引的对比分析
    单列索引:即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引:即一个索包含多个列。怎么选择:如果查询where条件只有一个,完全可以用单列索引,这样的查询速度较快,索引也比较瘦身。如果业务场景是需要经常查询多个组合列,不要试图分别基于单个列建立多个单......
  • 互联网架构学习相关资料
    最近看到很多不错的互联网架构方面的学习资料和个人blog。原来都是整理放在Mybase中,现在搬到Blog上,一是方便查看及更新,二是希望对看到的人也有所帮助。 整理如下(排序不分先后):1.架构设计与架构思想2.高性能MYSQL的构架与相关软件介绍3.http://wenku.baidu.com/view/e8b2e23343323......
  • MySQL篇:第三章_详解DQL语言
    DQL语言的学习基础查询一、语法:SELECT要查询的东西【FROM表名】;类似于Java中:System.out.println(要打印的东西);特点:①通过select查询完的结果,是一个虚拟的表格,不是真实存在②要查询的东西可以是常量值、可以是表达式、可以是字段、可以是函数二、特点1、查询......
  • 埃森哲企业数字化规划架构框架
    本人在四大咨询机构从事咨询工作多年,二十年一线数字化规划咨询经验,提供制造业数智化转型规划服务,顶层规划/企业架构/数据治理/数据安全解决方案资料干货.一、埃森哲企业架构框架   企业数字化/信息化规划是一项层次多、跨度大的复杂工程。为此,埃森哲信息战略规划体系,定义了......
  • mysql事务回滚
    前几天发现程序有个Bug:使用JPA已经设置了回滚,但抛出异常后,提交的事务并没有回滚。刚开始以为是JPA使用问题,debug了近2个多小时竟然找不到原因。后来上网查了一下,才发现不是程序问题(坑爹啊,看来自己对mysql还是不熟),是数据库表问题(JPA自动建表)。原因如下:mysql建表时如果指定ENG......
  • MySQL篇:bug2_ Navicate无法添加或更新子行-外键约束失败
    问题产生原因Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构。解决办法解决方法是在Mysql中取消外键约束:SETFOREIGN_KEY_CHECKS=0;再添加值,然后再设置外键约束:SETFOREIGN_KEY_CHECKS=1;查看当前FOREIGN_KEY_CHECKS的值可用如下命令:SELECT@@FOR......
  • N天爆肝数据库——MySQL(2)
    (N天爆肝数据库——MySQL(2))链接:link这是csdn专栏链接,大家可以看一看,提提意见本篇文章,主要对DMLDQL进行知识总结和学习。期待和大家一起学习进步。DML-介绍DML(数据库操作语言),用来对数据库中表的数据记录进行增删改操作。添加数据(INSERT)修改数据(UPDATE)删除数据(DELET......