已经正式运行很久的web项目怎么进行mysql分库

leiboo 发布于 2016/04/01 17:14
阅读 1K+
收藏 2

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

我们的web项目已经运行了2年了,由于当初用户少,没有考虑周全,只有一个mysql数据库,现在用户越来越多,mysql明显已经快扛不住了,老大让想办法进行分库。

各位大牛有什么好的方案么,跪求!

ps: 项目是用spring+spring MVC+mybatis架构

加载中
0
Spirit_wolf
Spirit_wolf
按用户名首字母A-Z把用户表分出来
0
行业协汇袁斌
行业协汇袁斌

你们的用户有多少啊,

数据量有多大?

mysql都顶不住了...


eechen
eechen
回复 @IT老太爷 : 有得有失吧.SQLite库(文件)级别的锁粒度,以及不支持C/S网络访问,都是SQLite的不足,但换来的是零配置,复制即备份等等好处,用来驱动个人博客程序其实是完全没有问题的.
行业协汇袁斌
行业协汇袁斌
回复 @eechen : sqlite对付不了大并发写的情况.只适合特定的场景.不是万能灵药.
eechen
eechen
SQLite零配置很爽的,要备份就是直接复制文件,把SQLite放到/dev/shm,就是内存级别的读写性能,
eechen
eechen
用SQLite吧,一个文件一个数据库,要分库还不简单,用户ID分成几个区间,分别映射到不同SQLite文件.
0
Sel8616
Sel8616
直接换成Mysql-cluster,应用层代码不用改
0
求是科技
求是科技
数据库集群嘛 说白了就是增加数据库
leiboo
leiboo
mysql已经是做了主从备份,读写分离了,现在的问题是数据库存储压力太大了,需要把不同的用户分到不同的数据库中去
0
精通吹水
精通吹水

首先,可以考虑读写分离,因为这个成本最低。

不行的话,把最热的库提取出来,放单独的机器。

还不行的话,需要合理的进行分表了。

精通吹水
精通吹水
回复 @Rabon丶Dai : 可以考虑把用户信息存放到REDIS/MEM做缓存,或者分表。做完最好在测试环境模拟一下是否有效。
leiboo
leiboo
读写分离已经做了的。现在是存储压力大,需要把不同的用户分到不同的数据库上去
0
一号男嘉宾
一号男嘉宾
你确定是MYSQL扛不住,而不是你们的WEB扛不住了?
leiboo
leiboo
是的,mysql存储压力太大。
0
Eric_林
Eric_林

按某一种特征,比如按用户的的省份、用户名拼音首字母、手机号码段,这跟你们的具体业务有关系,看看哪个特征分表最有利(比较均匀,没有哪张分表特别大,哪个特别小,这样没意义)

PS:MySQL抗不住也有几种原因,并发量、数据量、IO等,要分析清楚

0
leiboo
leiboo
各位,我在考虑使用mysql-router来处理,但是mysql-router貌似不能指定数据库,各位大神还知道其他好的方案么
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部