设为首页 加入收藏

TOP

Mycat(5):聊天消息表数据库按月分表实践,平滑扩展
2015-11-21 01:41:58 来源: 作者: 【 】 浏览:0
Tags:Mycat 聊天 消息 数据库 实践 平滑 扩展

1,业务需求

比如一个社交软件,比如像腾讯的qq。可以进行群聊天(gid),也可以单人聊天。
数据量按月增加需要按月进行数据库拆分。
比如按照2015年进行12个月拆分,同时可以配合gid进行水平拆分,也可以利用mysql分区。
mycat官方也推荐这样使用,这样可以增加单机单数据库的数据量,因为文件分开了。

关于mycat分区参考:
【 数据库垂直拆分,水平拆分利器,cobar升级版mycat】
http://blog.csdn.net/freewebsys/article/details/44046365

2,按月分表方案

首先将消息表拆分成12个月表,同时每一个月表可以拆分成100个分区表,mysql分区执行起来灵活,按月分表可以随时间一直分下去,一次创建好一年的分表。基本上不需要数据迁移。相比数据库的分区最大的好处就是可以跨多个数据库进行分区。可以做到吞吐量是单机的N倍。扩展性好,数据库可以是一个实体机器,也可以一个实体机器多个数据库,配置灵活,完全在mycat配置不需要客户端修改。

\

mysql数据库创建语句:

CREATE TABLE `msg` (
  `id` bigint(20) NOT NULL,
  `gid` bigint(20) DEFAULT NULL COMMENT '群id,mysql分区字段',
  `content` varchar(4000),
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `create_date` int(8) DEFAULT NULL COMMENT '按月分表字段,不能为空。',
  PRIMARY KEY (`id`,`gid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
PARTITION BY KEY(`gid`) 
PARTITIONS 100;

其中规则xml的配置如下:按照自然月进行分区,分区字段是create_date




    

     
        create_date
        sharding-by-month 
    
    
        yyyyMMdd 
        20150101
    

schema.xml配置:





        
                
            
select 1
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇UI19数据库的练习 下一篇从HelloWorld启航――数据库连接..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: