Upload
aleafs
View
1.861
Download
2
Embed Size (px)
DESCRIPTION
淘宝数据产品的分布式MySQL集群的扩容原理,怎么让40台mysql互联互通,进行数据的随时迁移。
Citation preview
扩容与数据迁移
朋春
@我是aleafs
MyFOX技术第二讲
回顾
关于MyFOX
□ 分布式MySQL集群中间层
□ 数据离线批量写入
□ 透明的数据查询代理
□ 集群管理
节点结构
MyFOX
12热节点(MySQL)
15k SAS盘,300G * 12,raid10
内存:24G
成本:4.5W / T
8冷节点(MySQL)
7.2k SATA盘,1T * 12,raid10
内存:24G
成本:1.6W / T
路由表
30天无访问的冷数据
新增
热数
据
节点2
dbname.t_2
路由表
KEY: thedate=20110811,cid=1
node path modtime hittime …
…,cid=2
…
节点1
dbname.t_1dbname.t_2
装完数据
UPDATE ... SET modtime = NOW() WHERE ...
modtime:
每条路由对应的分片的数据更新时间
路由访问
SELECT node, path, modtime FROM ... WHERE ...
modtime:
if (force_load ||!cache || modtime > cache.savetime) {
// load data from mysql
}
同时…
if (rand(1,100) <= 10) {
}
UPDATE ... SET hittime = NOW() WHERE ...
Why we use “rand” here
NOT ONLY...
BUT ALSO...
决策
SELECT node, path FROM ...
WHERE hittime < ’30天前 ’
AND isarchive = 0
@letonlife:
“…搬运工伤不起”
工作队列
SELECT ... FROM task_queque
WHERE task_flag = FLAG_WAIT AND trytimes < 3
ORDER BY priority ASC,
trytimes ASC,
ABS(task_position – AGENT_POSITION) ASC,
autokid ASC
MySQL MySQL
scp (*.MYI, *.MYD)
MySQL MySQLAPP
SELECT LOAD
MySQL MySQL
APP
A.
B.
C.
脚本部署在DB上,有安全隐患
两次落地,两次网络传输
实施
Federated
“The FEDERATED storage engine is available
beginning with MySQL 5.0.3. It is a storage
engine that accesses data in tables of remote
databases rather than in local tables.”
http://dev.mysql.com/doc/refman/5.0/en/federated-storage-engine.html
172.1.1.1 172.1.1.2
dbname.t_2
dbname.t_2
dbname.t_2_fed
CREATE TABLE dbname.t_2_fed (
...
) ENGINE = FEDERATED \
CONNECTION=‘mysql://user:[email protected]/dbname/t_2’
INSERT INTO dbname.t_2 SELECT * FROM dbname.t_2_fed
真相总是在背后
dbname.t_2dbname.t_2
如何选择一台“最优”的机器作为源表来复制
呢?
例如:
var task = {
“path” : “dim_category_arch_0.t_92d_1”,
“from” : “1,2,3,4,5,6,7,8”,
“save” : “17,18,19,20”,
}
节点 机器列表
1 172.001.001.001 172.002.001.001
2 172.001.003.002 172.002.021.002
17 172.001.003.017 172.002.003.017
172.001.003.017 fed
□ 172.001.001.001
□ 172.002.001.001
□ 172.001.003.002
□ 172.002.021.002
就近原则
□ 同机房
□ 同机柜
□ 同交换机
□ 快速
□ 低碳
□ 稳定
□ 安全
IP “ ”
一致性检查
□ COUNT
□ XOR
修改“指针”
序号 路由KEY 路由值
1
thedate=20110811,cid=1
node=1,path=dbname.t_1
2
node=2,path=dbname.t_2
3 thedate=20110811,cid=2
node=9,path=dbname.t_2
node=2,path=dbname.t_2
卸磨杀驴
/* */
DROP TABLE IF EXISTS dbname.t_2 /* ON NODE 2 */
Why NOT “right now”
小结
从16到40
□ Federated
□ 就近原则
2000台机器的时候
...
MyFOX
route route route route...
MySQL MySQL
chunk server chunk server
MySQL MySQL
干掉“节点”
□ Mysql承担chunk server
□ 每个chunk跨机房三份冗余
□ 如果宕机,立即复制
□ …
预告
第三讲:数据压缩