




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Sina App Engine的MySQL服务分析孙长明()一、 功能分析核心目标:为托管在Sina App Engine平台上的应用提供关系数据库访问服务。与Amazon RDS的共同点:1. 都是只支持MySQL。2. MySQL的版本都是5.1。我观察的时候其中sina是5.1.47(2010年5月发布) ,Amazon是5.1.38(2009年9月发布)。(根据版本号能确定它们肯定不会使用哪些新技术) 3. 兼容性很好。现有的程序不需要做什么改动,配置好hostname、端口号、用户名、密码即可用。 4. 不提供MySQL root账号。 与Amazon RDS的不同点:1. Sina的是多个用户共享一个Mysqld进程(否则没必要提出” 并发执行时间和” 这个概念),而我猜Amazon RDS 应该是每个用户一个进程。2. Sina的MySQL Server不对公网IP开放,只允许SAE内部的服务器访问。而Amazon RDS可让用户自行设置防火墙限制来源IP范围,从而支持用标准的mysql client直接连。3. Sina不允许用户自行添加MySQL帐户,所有的帐户名密码都是由平台生的,用户不能修改密码。而Amazon允许用户自行创建新的Mysql用户,并赋予一定的权限。支持的存储引擎:MRG_MYISAM、BLACKHOLE、CSV、MEMORY、ARCHIVE、MyISAM(默认)。目前肯定不支持的:1、 半同步2、 与Sina以外的Mysql建立主从复制关系3、 NDB与InnoDB4、 存储过程5、 ssl (因为都在内网,没有必要)Sina可能用到的关键产品及技术:Mysql 5.1 社区版Linux HeartBeatDRBDBind 或者其它某个轻量级的DNS Server。二、 部署结构此图来自SAE开发经理丛磊在baidu的PPT三、 连接参数应用预设的环境变量在这里可以查到/?m=phpinfo&app_id=snnn。其中把app_id=snnn换成你的appid规则如下:$db_port=$_SERVERHTTP_MYSQLPORT; /从刚才的页面可以看到$db_host=m$db_;/* * 如果连从库,则: * $db_host=s$db_; */$db_name=app_.$_SERVERHTTP_APPNAME; 例如:app_snnnMysql用户名:应用的access key密码:应用的secret key四、 远程访问SAE RDS1、 安装Navicat下载地址:/html/1846.html2、 从环境变量计算连接参数:3、 把navicat目录下的ntunnel_mysql.php用SAE 部署工具放上去。4、 在navicat中新建一个连接,选上HTTP通道,然后把通道的地址(也就是ntunnel_mysql.php的填进去),例如/m.php。五、 分析 由前面的结构图可以看出, 存在多个Master Mysql Server,且Master和Master之间没有什么关系。RDC Proxy根据身份验证过程中的uesrname(也就是应用的access key)判断将请求转给哪个MySQL server。不采用database name的原因是这个参数在身份认证的过程中未必会提供。经测试,在未提供database name 的情况下连接MySQL,然后用show status,已经能看到后端的Mysql Server的hostname。按照MySQL的协议,在MySQL客户端和MySQL服务器建立起TCP连接之后,服务器必须主动给客户端发Challenge包,而此时RDC Proxy尚未拿到username信息,所以就不知道该找哪个MySQL Server索要Challenge包。所以只能自己生成一个先发过去,等拿到客户端发来的username之后,再做下面的处理。这种做法与官方的MySQL Proxy有很大不同。官方的MySQL Proxy在TCP连接建立后 立即找后端的Server要Challenge包。我猜负载均衡主要是靠DNS来实现的。SAE现在大约有8000-10000注册用户。每个Mysqld进程大约服务于1000-3000个database,每个进程大约30个线程用于处理用户的SQL查询。所以一共大概有5-8个左右Mysql进程。一台机器肯定会跑多个Mysqld。经我测试,所有的MySQL Proxy以及MySQL Server都在10.x.x.x这样的内网里。MySQL server所在机器的机器名:yq加数字。如yq70、yq71。MySQL serverid:所在机器的机器名 + 端口号Replication方式:语句。Proxy到Mysqld 之间是长连接还是短连接? 这个完全是由用户控制的吗? 不清楚。六、安全主要从这几个方面考虑1 进行某个特别耗时的操作单个表记录数太多单条(Delete/Update/Select)语句操作的记录太多。在一个过大的表上创建索引SQL导致高时间复杂度的外排序在一个过大的表上改变表结构2. 并发执行时间和RDC提出了“并发执行时间和”这个概念,来取代传统MySQL的并发连接数限制,原因主要是因为传统的连接数限制较为粗鲁,不能区分用户,换句话说,无论是SQL优化的好的用户还是SQL销量从低下的用户都一刀切。而并发执行时间和很好的解决了这个问题,它突出一个思想:“对于SQL效率高的用户支持更大的并发,而SQL执行效率低的用户则可能不会获得大的并发”,以鼓励用户优化自己的SQL,提高SQL的执行效率,减少对系统的消耗。举个例子,如果SQL并发执行时间和为10000ms: A. A用户的平均每条SQL消耗100ms,那么A获得的最大并发为100 B. B用户的平均每条SQL消耗1000ms,那么B获得最大并发仅为10超过SQL并发执行时间和3. 慢查询太多4. 表的总数太多针对以上问题,目前主要做的限制如下: 限制数值单表最大行数10 000 000 行库最大表数量512个不支持存储引擎类型memory temporary最大外排序行数65536 行最大无索引操作行数100 000 行查询最大操作行数1 000 000 行更新最大操作行数1 000 000 行删除最大操作行数1 000 000 行创建索引表最大行数500 000 行修改表结构最大行数500 000 行SQL并发执行时间和(读库)500 000 毫秒SQL并发执行时间和(写库)200 000 毫秒警报阈值百分比80%表主键及聚簇索引奖励系数1024 倍另外还有一个重要的风险因素来自于MySQL自身。MySQL自己的BUG很多,通过运行一些精心制造的SQL语句,普通权限的用户也会造成mysqld core dump,从而以Deny of Service的方式对其它用户造成影响。Poc代码: prepare(explain select 1 from t1 where(select(select 1 from t1 group by a)$statement-execute(); echo OK; else echo F;?另外一段代码:(CVE-2010-3833) 我没实测过。如果不行,请回信告诉我。CREATE TABLE t1(a INT) ENGINE=myisam;INSERT INTO t1 VALUES (0);SET SQL_MODE=STRICT_ALL_TABLES;CREATE TABLE t2 SELECT LEAST(SELECT FROM t1),NOW() FROM t1;DROP TABLE t1; SET
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 压力安全阀校验员培训课件
- 古县2025山西临汾市古县招聘事业单位人员31人笔试历年参考题库附带答案详解
- 南京市2025南京医科大学卫生分析检测中心招聘56人笔试历年参考题库附带答案详解
- 商品收纳师培训课件
- 2025长三角(宣城)产业投资有限公司招聘4人(安徽)笔试参考题库附带答案详解
- 卸车安全培训课件
- 2025河北唐山政务服务外包有限公司为服务项目招聘66人笔试参考题库附带答案详解
- 2025昆明渝润水务有限公司招聘15人笔试参考题库附带答案详解
- 2025年数字安徽有限责任公司所属企业社会招聘13人笔试参考题库附带答案详解
- 2025山东济南二机床集团(平阴)产业园有限公司招聘9人笔试参考题库附带答案详解
- 人工造林项目投标方案(技术方案)
- 自动扶梯维护培训课件
- 铁丝镀锌工操作规程培训
- 严防管制刀具 对自己和他人负责-校园安全教育主题班会课件
- 医院培训课件:《护患沟通技巧》
- 公路技术状况检测与评定-公路技术状况评定
- 正式员工正规劳动合同范本
- 人工搬运风险与控制培训课件
- 新能源材料与器件PPT完整全套教学课件
- 肺癌中医护理常规(整理)
- 住宅专项维修资金管理系统方案
评论
0/150
提交评论