服务概要
SAE平台为每个App支持几乎所有MySQL的特性。目前支持MyISAM引擎,暂不支持InnoDB。需要注意的是SAE的数据库需要显式开启或者禁用。您还可以通过phpmyadmin来创建数据库和数据表。SAE的PHP环境提供了标准的MYSQL,MYSQLI和PDO模块(基于MySQLnd),您可以直接使用这三个模块来操作您的数据库, 您可以使用预定义常量来连接数据库,我们不排除未来可能调整数据库端口,使用预定义常量能够避免这样的问题。当然SAE也提供了SaeMysql类,我们也推荐您使用这个类来操作MySQL资源。
使用指南
SAE上的MySQL服务和普通MySQL服务几乎一样,所以如果你已经熟悉了MySQL的常规使用的话,会感到很简单。对于mysql/mysqli模块的用法,您可以参考PHP官方手册。
SAE也提供了基于MySQL模块的SaeMysql类
Sae Mysql Class
示例:
<?php
$mysql = new SaeMysql();
$sql = "SELECT * FROM `user` LIMIT 10";
$data = $mysql->getData( $sql );
$name = strip_tags( $_REQUEST['name'] );
$age = intval( $_REQUEST['age'] );
$sql = "INSERT INTO `user` ( `name` , `age` , `regtime` ) VALUES ( '" . $mysql->escape( $name ) . "' , '" . intval( $age ) . "' , NOW() ) ";
$mysql->runSql( $sql );
if( $mysql->errno() != 0 )
{
$mysql = new SaeMysql();
$sql = "SELECT * FROM `user` LIMIT 10";
$data = $mysql->getData( $sql );
$name = strip_tags( $_REQUEST['name'] );
$age = intval( $_REQUEST['age'] );
$sql = "INSERT INTO `user` ( `name` , `age` , `regtime` ) VALUES ( '" . $mysql->escape( $name ) . "' , '" . intval( $age ) . "' , NOW() ) ";
$mysql->runSql( $sql );
if( $mysql->errno() != 0 )
{
die( "Error:" . $mysql->errmsg() );
}
$mysql->closeDb();
?>
}
$mysql->closeDb();
?>
SAE的PHP Runtime环境提供了标准的MySQL,MySQLI和PDO模块,三个模块都由MYSQLND驱动,支持所有MYSQL的特性,您可以使用您习惯的方式来操作数据库.
如果您没有使用SaeMysql类操作数据库,可以使用以下预定义常量进行连接:
用户名 : SAE_MYSQL_USER
密 码 : SAE_MYSQL_PASS
主库域名 : SAE_MYSQL_HOST_M
从库域名 : SAE_MYSQL_HOST_S
端 口 : SAE_MYSQL_PORT
数据库名 : SAE_MYSQL_DB
使用方法,以mysql模块为例:
/* 连主库 */
$link=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
/* 连从库 */
/*
$link=mysql_connect(SAE_MYSQL_HOST_S.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
$link=mysql_connect(SAE_MYSQL_HOST_S.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
*/
if($link)
{
mysql_select_db(SAE_MYSQL_DB,$link);
//your code goes here
}
数据管理
SAE上的数据属于用户,所以我们允许用户自由导入导出数据。
数据导入、导出
SAE支持两种方式数据导入、导出:
A. 对于4M以内的小数据,用户可以通过PhpAdmin在线同步的导入、导出
B. 对于4M以上的数据,我们不推荐用户使用PhpAdmin同步的执行(实际因为php等限制用户也无法执行该操作),而是强烈建议使用DefferedJob来完成MySQL数据的导入、导出。其中,导出是用户通过DefferedJob将MySQL中的数据生成sql源文件并存放在用户的Storage存储中;而导入,用户需要使用大文件上传的客户端(如SDK),将用户的sql文件上传至Storage存储中,然后通过在线管理平台,将该sql导入到MySQL中。
具体参考:DeferredJob
数据备份
SAE提供MySQL服务的高可靠性,根据SLA需求不同,一个一主一从到一主N从的数据库HA,用户如果出于可靠性的考虑,SAE不推荐用户自行做数据备份。当然用户也可以使用数据导出功能自行备份。
服务限制与配额
SAE设置服务限制和配额的目的是为了防止个别用户攻击和滥用,从而在公有云计算平台上保证绝大多数开发者的正常使用。
1. 服务限制和配额设定是在门户网站新浪自身长期运维的基础上经过严格计算得出的,所以正常使用一般不会出现问题。经过SAE实际统计,99%的应用不会受到任何影响
2. 当您发现您的某项服务超过限制或者超配时,请先阅读相关文档确认限制和配额的具体数值,再检查自己的程序是否存在使用不当的情况,如果仍然解决不了,可以和SAE官方联系,saeadmin@sina
MySQL保护
SAE通过RDC对MySQL进行保护,保护的基本原则是通过预判机制屏蔽对MySQL的不正确使用和恶意滥用,保证用户数据库之间的隔离性。具体保护规则,请参考,sae.sina/?m=devcenter&catId=38#anchor_d337b458051e63f545eaceaee3cea379
MySQL慢查询配额
SQL执行时间超过1秒,即为慢查询,其分钟配额为
条目数 | 10 |
累计执行时间 | 30秒 |
扫描行 | 1,000,000 |
mysql下载app |
注意,触发慢查询分钟配额禁用,MySQL服务将禁用5分钟
MySQL对用户开放的操作
select, insert, update, delete
create table
alter table
drop table
create table
alter table
drop table
index
分钟配额
运行在SAE上的应用(App)将会消耗平台资源,为保证各App不互相影响,我们引入了*分钟配额*的概念,即:在每分钟内每个应用的各个服务所消耗 的 资源的速度。比如,当平台中的某个应用的MySQL服务一分钟内累计请求数达到20万,或者流出宽带超过600M,我们将会立即禁掉该应用的MySQL 服务,禁用五分钟后,恢复会自动恢复,避免影响到SAE平台的稳定性。服务因为超过“分钟配额”而被禁用时,会在“服务状态”看到该服务被禁用的原因是:OverMinuteQuota
服务 | 请求数 | cpu时间 | 流入带宽 | 流出带宽 |
MySQL | 200,000 | 400s=>600s | 300MB=>600M | 600MB=>1200M |
容量配额
容量配额是针对MySQL\Storage\MemCache设置的,是指用户能够使用的磁盘或内存的
最大限制(见下表),其中Memcache的最大容量配额是用户自己在初始化Memcache时设置的,可设置的范围是1M~256M。
服务 | 配额 |
MySQL | 5G |
Storage | 10G* |
注意,每个App允许建立5个Storage domain,每个domain为2G
MySQL常见问题
常见MySQL的FAQ
什么是RDC?
RDC是Relational DB Cluster(关系型数据库集)的简称,是一种分布式的关系型数据库集,主要用在支撑公有云计算平台的数据库集,可以支持百万级的数据库后端。
RDC 对终端用户完全透明,用户在使用RDC时,不会感觉到和使用传统的MySQL数据库有任何差异.用户可以使用所有MySQL标准客户端(MySQL5以 上)操作RDC,如mysql_query、mysql_connect等,错误处理也和标准MySQL客户端处理模式一样。
RDC为用户提供了更加稳定可靠的服务:
1.通过其强隔绝性为用户提供了更高的安全性,保障用户的数据安全。
2.当后端DB发生故障和延迟时,RDC能够自动切换,保证服务更加稳定可靠。
3.能通过对SQL的智能预处理降低用户触发分钟配额的可能。
4.由于RDC自身性能消耗更低,整体数据库集性能也有所提升。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论