Mysql企业实战

==========================业务垂直分割:
1》介绍说明:

    随着公司的业务规模扩展,DBA需要根据企业数据业务进行切割,垂直切割又称为纵向切割,垂直数据切割是根据企业网站业务、产品进行切分,比如:用户数        据、博客文章数据、照片数据、标签数据类型、群组数等等,每个业务都独立的分库分表进行切割. 如果一个应用只针对单纯的业务功能模块,那么可以直接连接相应       的被垂直切分的数据库,但是有些复杂的应用需要利用到相当多的业务数据,甚至牵扯到所有业务数据那么垂直切割将给应用带来一定的复杂度,而且对研发人员也会    有一定的影响,导致整个应用复杂度提升,那么Amoeba在其中充当了门面功能,疏通应用于多个数据库的通讯如果垂直切分功能:假如有有3个数据库:userdb blogdb      otherdb

2》DB架构图

          

                

================================业务水平分割 

1》介绍说明

      上次我们讲到垂值切割。那么如果垂值切割不能满足企业需求怎么办??那么我们对架构进行进一步优化,让水平切割来解决这一问题,水平切割根User_ID范      围值划分,然后再进去取模 % 2 ,那么最终得到的值只有0 和1定义到每台DB Server 上去。此范围适合用于中小DB架构扩展,我们将在下一章将讲到360度环形库     的扩展,将用于大型DB架构设计;


  需求说明:
    总用户数量500万
    User_DB 存储用户基本信息<如、登录认证、个人信息>
    Blog_DB 存储用户博客文章
    Other_DB 存储其它业务
    经过垂直分割将3个DB分割到不同的服务器上面,然后进行水平切割将DB用户量分割开来,
    User_DB1 承载250万用户的基本信息 User_ID范围值<500万 User_ID取模 % 2 取值0的读此服务器
    User_DB2 承载250万用户的基本信息 User_ID范围值<500万 User_ID取模 % 2 取值1的读此服务器

    Blog_DB1 承载250万用户的博客文章 User_ID范围值<500万 User_ID取模 % 2 取值0的读此服务器
    Blog_DB2 承载250万用户的博客文章 User_ID范围值<500万User_ID取模 % 2 取值1的读此服务器

    Other_DB1 承载250万用户的其它信息 User_ID范围值<500万User_ID取模 % 2 取值0的读此服务器
    Other_DB2 承载250万用户的其它信息 User_ID范围值<500万User_ID取模 % 2 取值1的读此服务器
    相当于2台机器针对500万用户。各承载了。2分之1,此范围可以根据ID范围值,无限扩展下去。

2》DB架构图

          

3》环境案例实战

   因为我们上面已经讲过了读写分离,这个实战案例主要讲水平分割,通过Amoeba实现分割,判断ID范围值与取模
  1>Amoeba_Server(Linux) 10.0.0.203 实现水平切割
  2>User_DBA_Server1(Linux) 10.0.0.201 承载250万用户基本信息User_ID范围值<500万 User_ID取模 % 2 取值0的读此服务器
  3>User_DBA_Server2(Linux) 10.0.0.202 承载250万用户基本信息User_ID范围值<500 User_ID取模 % 2 取值1的读此服务器
  相当于2台机器针对500万用三户。各承载了。2分之1,此范围可以根据ID范围值,无限扩展下去。注意这2台机器。并没有做主             从,是单独的两台单机MYSQL

4》设置DB_server1 DB_server2 设置Amoeba远程访问授权

  mysql-->grant all privileges on *.* to [email protected]‘%‘ identified by ‘123456‘;

  mysql-->flush privileges;

5》创建测试表

  在DB_server1 和DB_server2 上,两边的表结构以及表名是一样的。注意。
  创建t_user表
  create table zyalvin (
    user_id integer unsigned not null,
    user_name varchar(45),
    user_address varchar(100),
    primary key (user_id)
      )engine=innodb;
  Query OK, 0 rows affected (0.01 sec      

6》配置Amoeba IP 与用户

  vim /usr/local/amoeba/conf/amoeba.xml

         

7》配置Server1和Server2

  配置Server1:

           

           配置Server2

              

                   

8》配置水平分割规则

  # vim /usr/local/amoeba/conf/rule.xml
  tableRule name=”zyalvin,t_user”可以多个表,

         

          启动服务
     #:nohup bash -x amoeba &   

9》插入测试数据

  在Amoeba Server登录:
  # mysql -uroot -p123456 -h 192.168.100.214 -P 9006
    mysql->use zytest;
   mysql->insert into zyalvin(user_id,user_name,user_address)values(‘1‘,‘user1‘,‘China‘);
   mysql->insert into zyalvin (user_id,user_name,user_address)values(‘2‘,‘user1‘,‘China‘);
   mysql->insert into zyalvin (user_id,user_name,user_address)values(‘3‘,‘user1‘,‘China‘);
   mysql->insert into zyalvin (user_id,user_name,user_address)values(‘4‘,‘user1‘,‘China‘);
   mysql->insert into zyalvin (user_id,user_name,user_address)values(‘5‘,‘user1‘,‘China‘);
   mysql->insert into zyalvin (user_id,user_name,user_address)values(‘6‘,‘user1‘,‘China‘);
   mysql->insert into zyalvin (user_id,user_name,user_address)values(‘7‘,‘user1‘,‘China‘);
   mysql->insert into zyalvin user_id,user_name,user_address)values(‘8‘,‘user1‘,‘China‘);
   mysql->insert into zyalvin (user_id,user_name,user_address)values(‘9‘,‘user1‘,‘China‘);
   mysql->insert into zyalvin (user_id,user_name,user_address)values(‘10‘,‘user1‘,‘China‘);
   DB_server1查看,偶数全部写入了server1

          

          DB_server2 查看,奇数全部写入了server2

            

总结:
    (1)amoeba 是根据 sql 解析来进行水平切分的,需要把切分的关键字段(这里是user_id),加入到insert sql语句中,否则切分规              则无效。无效后,会在 server1, server2 均都插入数据。
    (2)amoeba插入数据的时候必须先use dbname(比如要先use test库名,或者查询带上库名和表名,test.t_user) 否则插入数据会默         认插到server1上面
    (3)在rule.xml 指定的ID范围,在插入数据user_id的时候,不能超过这个范围,否则分片无效,比如定义的ID范围为:1-500000号
    insert into zyalvin(user_id,user_name,user_address)values(‘5000001‘,‘user1‘,‘China‘);如果插入ID超过5000000,变成了                   5000001的话那么这个数据将同时写到server1和server2 导致分片无效。

打开以.xml结尾的文件出现乱码时,用以下方法处理:

         

时间: 2024-11-05 11:01:02

Mysql企业实战的相关文章

18道Shell高级编程企业实战题及参考答案(一)

Shell高级编程企业实战题参考解答 ########################################################################### 让我们一起感谢,本文内容答案完全来自老男孩教育的学生-张耀课前上机考试解答! ########################################################################### 目录: 1.监控MySQL主从同步... 1 2.批量创建文件及改名... 3

shell高级编程企业实战题编程---是骡子是马 牵出来溜溜!

企业合格的linux运维必会编程题,能独立完成的同学就业工资不会低于10K 这是老男孩linux运维班要求学生必会的题目,完不成的不能合格毕业,每个完成的都奖励价值500-1000元的等值礼物(以当天考试成绩宣布为准),要进要退自己抉择,伙伴们走起! 实战考试时间就在2015年4月15日上机实战,禁止大面积抄袭学习课堂笔记否则无奖励!共18道考试题,面授上课几乎全部讲解过类似的案例,考试题略微变更而已. 企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件

JMeter 深入进阶性能测试体系 各领域企业实战

详情请交流  QQ  709639943 00.JMeter 深入进阶性能测试体系 各领域企业实战 00.30天搞定大数据爬虫项目 00.零基础实战机器学学习 00.企业级实战 Spark离线和实时电影推荐系统 00.三大项目掌握Storm流计算 00.道路交通实时流量监控预测系统 00.基于Spark2.x新闻网大数据实时分析可视化系统 00.小码哥Java大神班五期 任小龙SSM Spring5 Mybatis SpringMVC 00.Python玩转人工智能框架 TensorFlow 0

Citrix Provisioning Services 7.13企业实战

基于本人多年的项目经验,加上近期长达半年呕心沥血的总结.历经2周终于完 成了一期视频教程,总共20课,旨在帮助广大IT技术爱好者掌握使用的技术. 总体来说我个人感觉这套视频还是挺不错的,可能我自己的风格不是很合大家胃口,但是我讲的东西都是实实在在的,你只要认真看,一定能学到很多实用的东西.我不会反复跟你讲太多理论,20集视频里面你能学到的东西可能比看人家100集视频还要多. 全 网 首 发Citrix Provisioning Services 7.13企业实战.  PVS 7.13有很多新功能

mysql颠覆实战笔记(七)--白话理解事务

今天我们学习web开发级mysql颠覆实战课程第9课没MYSQL事务(一):白话理解事务.前面有两节课第7讲:商品系统设计(四):商品属性设计之自定义属性,第8讲:商品系统设计(五):一维属性的商品价格表设计的笔记本人省略,没有原因,个人爱好. 所谓事务,用老师白话理解就是: 1.不止要执行一个步骤.2.这些步骤每一步都按照既定想法去执行,错一步那么整个过程都反悔.3.事务进行时,外界干扰无法影响. 这算是老师的一个基础讲解,首先我们来建一张用户余额表,这个表我们采用的是Innodb模式,在这个

大数据内功修炼到企业实战

情人节没啥送的,充气娃娃太俗,女朋友送不起,就送全套吧!!! 2.14日 晚8:00,Q群不见不散!!! <大数据内功修炼到企业实战2.0>全新完整版!!! 无加密,免费送!!! 牢记接头暗号: 大数据培训哪家强?老司机推荐十八掌! 神回复:老子推荐十八掌!!!

大数据内功修炼到企业实战2.0》全新完整版!!!&#160; 无加密,免费送!!!

                                           <大数据内功修炼到企业实战2.0>全新完整版!!!  无加密,免费送!!!  还有送:项目实战视频.机器学习等持续更新课程 牢记接头暗号:    大数据培训哪家强?老司机推荐十八掌!    神回复:老子推荐十八掌!!!

mysql颠覆实战笔记(六)--商品系统设计(三):商品属性设计之固定属性

今天我们来讲一下商品属性 我们知道,不同类别的商品属性是不同的. 我们先建一个表prod_class_attr: 给这个表填入一些数据: 接下来,我们再建一个商品属性对应表 prod_attr 好了,下面我们把新增商品的流程撸一遍: 第一步,往商品主表插入数据 我们来新建一个存储过程 sp_new_prod: BEGIN INSERT INTO prod_main(prod_name,prod_classid) VALUES (_prod_name,_class_id); END 参数:IN _

mysql颠覆实战笔记(四)--商品系统设计(一):商品主表设计

版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸老师署名以及课程来源地址. 这几节课沈老师先带我们说道一下商品表. 固定商品:譬如我们只是卖鞋,那么整个商品的属性基本都是一致的,列如鞋的颜色.尺寸.款式.品牌.价格.这时候我们涉及到的表往往是平面的. 这种涉及方法的特点: 1.纯定制化. 2.开发快,仅仅只要针对某些元素开发. 3.但是扩展性差,一旦我们新