1.什么是RDS数据库?
RDS数据库是在一个实例下创建的逻辑单元,一个实例可以创建多个数据库,在实例内数据库命名唯一,所有数据库都会共享该实例下的资源。
2.RDS for MySQL有哪些限制?
1、不支持在命令行创建数据库和数据库账号。只支持在RDS管理控制台操作。
2、不支持Memory和Federated引擎, RDS默认将创建的Memory引擎表转换为InnoDB引擎表。
3、不支持memcached插件。
4、没有File权限,不能使用load data infile装载数据(但可使用load data local infile语法从本地装载数据)。
5、用户不可访问RDS实例中MySQL库中如下表格:user、tables_priv、host、db 、columns_priv、procs_priv。
3. 自建数据库迁移至RDS操作。
1、MySQL数据库的系统库将不允许迁移至RDS,不允许迁移的数据库为:mysql,information_schema,perfermance_schema。这些数据库将不会显示在迁移列表中。
2、在全量迁移过程中,会短暂的给自建数据库加全局表锁。
3、全量+增量迁移模式,请确认自建数据库中的所有库表全部是正常的。通过命令show create table tbl_name确认无错误结果输出。
4、迁移过程中源数据库不允许执行DDL语句(DDL是数据定义语句,用于定义SQL模式、基本表、视图和索引的创建和撤消操作)。
5、RDS for mysql必须设置参数autocommit=1(注:RDS for mysql 默认参数autocommit即为1)。
6、不支持的库名和表名:
(1)库名中含有单个反斜杠
(2)表名中含有单个反斜杠
(3)库名中含有“.” 号
(4)库名以减号 “-” 开始
(5)表名以减号“-”开始
(6)库名中包含路径符“/”
4. RDS使用注意事项
1、RDS实例升级需要注意的事项RDS在进行实例升级的过程中会出现最长30秒左右的连接闪断,需要您提前做好准备,并设置好程序跟RDS的自动重连,避免因为升级的闪断导致您的服务不可用。
2、RDS切换内外网存在的风险RDS在切换内外网的过程中会出现服务器跟RDS的连接断开,切换完成以后请及时更新程序中的连接地址,同时切换内外网会导致IP地址变更。
3、RDS回滚风险须知目前RDS支持数据回滚,回滚是针对整个实例的,不支持单表单库,在回滚之前备份好重要数据,以免回滚完成以后导致数据丢失。如果只是部分表格或者部分数据需要回滚,我们建议您通过创建临时实例来恢复数据,临时实例创建成功后从临时实例中把需要的数据导回到生产库。
4、RDS锁定策略须知 RDS具有锁定机制,如果您的实例存储空间满了,系统就会将您的实例锁定,实例被锁定以后会变成只读,建议定期检查存储空间使用情况,同时也可以在RDS控制台中设置空间占用短信提醒。
5、RDS故障切换RDS采用一主一备的高可用模式,当主库出现故障时,RDS会在30秒钟之内切换到备库。切换过程中有(小于等于)30秒钟的不可访问,需要您设置好程序跟RDS的自动重连,避免因为切换导致您的服务不可用。
6、RDS for MySQL数据同步模式须知RDS for MySQL 5.1主备之间的数据同步采用的是异步的模式,异步模式下性能高,但是缺点是有一定的概率会出现主备之间数据不一致。RDS for MySQL 5.5主备之间数据同步采用的是半同步的模式,该模式下写性能会有下降,但是优点是主备数据不一致的概率极大的降低了。如果您对数据可靠性要求非常高(比如金融系统),则建议您购买5.5以上(含)版本的RDS for MySQL。RDS for MySQL 5.6主备之间数据同步采用的是MySQL 5.6的新特性GTID,该特性即能保证性能,又能保证主备数据一致。
7、购买RDS后,您还需要做什么?
购买RDS实例后,您不需要做数据库的基础运维(比如高可用、备份、安全补丁等),但是您还需要重点关注以下事情:
1)您RDS实例的CPU、IOPS、空间、连接数是否足够,如果不够需要优化或者升级。
2)您RDS实例是否存在性能问题,是否有大量的慢SQL,SQL语句是否需要优化,是否有多余的索引或者缺失的索引等。
3)您RDS实例是否存在SQL注入警告,若存在,则说明您的数据库有可能被黑客SQL注入攻击,需要修改您的应用程序来避免SQL注入攻击。
5. 自建数据库导出成适用于 RDS 的sql文件。
1)导出数据表结构和数据。
mysqldump -u xxx -p xxx --opt --hex-blob --skip-triggers > 0.1.0-alirds-data.sql
2)导出触发器。
mysqldump -u xxx -p xxx --skip-opt --triggers -d -t > 0.1.0-alirds-trgs.sql
-
导出函数
mysqldump -u xxx -p xxx --skip-opt -d -t --skip-triggers -R > 0.1.0-alirds-func.sql
6. 本地还原数据库的执行顺序。
mysql -u xxx -p xxx -D xxx < 0.1.0-alirds-data.sql
mysql -u xxx -p xxx -D xxx < 0.1.0-alirds-trgs.sql
mysql -u xxx -p xxx -D xxx < 0.1.0-alirds-func.sql
如果发现执行报错可使用以下方法重建数据库然后再次导入,此方法只适用本地开发环境,请谨慎操作,先备份好必要数据。
mysql -u xxx -p xxx;
drop database if exists `xxx`;
CREATE DATABASE if not exists `xxx` DEFAULT CHARACTER SET utf8;
阿里云RDS 数据库帮助中心:http://help.aliyun.com/knowledge_list.htm?categoryId=8314899