阿里云RDS上的一些概念性记录

Posted 熊出陌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云RDS上的一些概念性记录相关的知识,希望对你有一定的参考价值。

刚接触RDS,只能对RDS上的一些特性做一些笔记,方便记忆,以下为RDS上的内容摘录,取自官方文档

1 数据备份

可使用命令行或图形界面进行逻辑数据备份。仅限通过 RDS 管理控制台 或 OPEN API 进行物理备份。

2 数据还原

可使用命令行或图形界面进行逻辑数据还原。仅限通过 RDS 管理控制台 或 OPEN API 进行物理还原。

3 数据迁入

可以使用命令行或图形界面进行逻辑导入。可以使用 mysqldump、数据传输进行数据迁入。

4 存储引擎

支持MyISAM,InnoDB,TokuDB,不支持Memory引擎,如果创建,会自动转换成InnoDB存储引擎

5 数据库复制

MySQL自动搭建了主备复制,不需要手动搭建,但无法直接访问

6 RDS的连接模式

如果应用在ECS上,不需要申请外网,如果在阿里云之外的,需要申请外网地址,用于应用对接

7 RDS的两种连接方式

内网地址、外网地址,在访问模式下,高安全模式下才能同时使用内网地址和外网地址。RDS会针对外网地址流量有一定的费用

8 高安全模式的特性

高安全模式下具有90%的连接闪断和SQL拦截的能力(基于SQL语义分析来实现防御SQL注入攻击),但会增加20%的响应时间

9 RDS对外提供服务的端口

取值范围为3200~3999

10 创建数据库和账号

在使用数据库之前,需要在 RDS 实例中创建数据库和帐号;在数据库迁移之前,需要在 RDS 实例中创建和本地数据库一致的数据库,并在 RDS 实例和本地数据库中创建一致的帐号

11 迁移RDS

迁移本地数据库到 RDS,请在 RDS 数据库和本地数据库中一致的迁移帐号和数据库

12 RDS上的实例数据库数

同一实例下的数据库共享该实例下的所有资源,MySQL 版实例最多可以创建 500 个数据库,500 个帐号

13 高级账号

阿里云数据库 My SQL 版支持创建高权限帐号,且仅支持 MySQL5.5 和 MySQL5.6 版本,只针对有需要的用户开放,需要提交工单申请开放

  支持用户在实例内直接执行 create、drop、grant 等命令,实现更便捷的管理操作。

14 高级账号模式的变化

1.不支持通过 RDS 控制台或者 API 来管理数据库和帐号,用户可在实例内直接执行相应的命令进行管理。 控制台上的帐号管理和数据库管理页面将会消失,
如果您在应用程序里调用了 API 创建数据库和帐号的接口,请及时修改应用程序。 2.MySQL 的单库备份功能使用方式会改变,需要您手动输入需要备份的数据库。 3.可以通过 show grants for xxx 来查看已经创建的帐号。 4.不能直接访问 mysql.user 和 mysql.db 表,可以通过 mysql.user_view 和 mysql.db_view 视图来查看现有帐号及权限。 5.不能更改全局变量,如 set global xxx = on。 6.在创建其他帐号时,可以通过类似 grant select on test. to [email protected]‘%‘ identified by‘user01password‘ 方式赋权,
当需要更改权限或密码时,需要 Drop user user01; 后重新 grant。 7.控制台和 API 支持重置高权限帐号的权限和密码。实例中已经创建的其他帐号不受影响。 8.创建高权限帐号过程中会有一次实例重启,将造成30秒内的网络闪断1次,请确保在合适的时间选择创建,同时确保应用程序支持数据库重连。

15 权限列表

权限 是否支持
alter 支持
Alter_routine 支持
create 支持
Create_routine 支持
Create_tem_table 支持
Create_user 支持
Create view 支持
delete 支持
drop 支持
ececute 支持
event 支持
grant 部分支持
index 支持
insert 支持
Lock_tables 支持
process 支持
reload 部分支持
Repl_client 支持
Repl_slave 支持
Select 支持
trigger 支持
update 支持

 

16 迁移数据

使用DTS迁移数据,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。

17 DTS支持的功能

结构迁移、全量迁移和增量迁移
1.结构迁移
DTS 会将本地数据库的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数
2.全量迁移
DTS 会将本地数据库迁移对象的数据全部迁移到目标实例。如果用户还选择了增量迁移,那么全量迁移过程中,为了保证数据一致性,无主键的非事务表会被锁定,
锁定期间这些表无法写入,锁定时长依赖于这些表的数据量大小,在这些无主键非事务表迁移完成后,锁才会释放。 3.增量迁移 增量迁移会将迁移过程进行数据变更同步到目标实例,如果迁移期间进行了DDL 操作,那么这些结构变更不会迁移到目标实例。

18 DTS迁移的限制 

1.迁移过程中不支持DDL操作
2.结构迁移不支持EVENT迁移
3.如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败
4.当增量迁移时,本地MySQL实例需要开启binlog,且本地库的binlog_format要为ROW,如果是5.6版本,binlog_row_image还要设置为full

19 本地数据库迁移到RDS上的过程

迁移类型    结构迁移    全量迁移    增量迁移
本地数据库    select   select     select replication slave/replication client
RDS         实例读写   权限读写    权限读写权限

20 具体过程

1.本地数据库创建迁移账号
CREATE USER ‘username‘@‘host‘ IDENTIFIED BY ‘password‘;
2.授权
GRANT privileges ON databasename.tablename TO ‘username‘@‘host‘ WITH GRANT OPTION;(授权该帐号能使用GRANT命令,该参数为可选)
3.开启本地数据库的binlog,查询
show global variables like "log_bin";
开启方法
log_bin=mysql_bin
binlog_format=row
server_id=大于 1 的整数
binlog_row_image=full //当本地 MySQL 版本大于 5.6 时,则需设置该项
4.修改完成,重启MySQL进程
5.RDS管理控制台操作-略,看官方文档

21 迁移注意事项

1.数据迁移只会将本地数据库的数据(结构)复制一份到目标数据库,并不会对本地数据库数据(结构)造成影响
2.数据迁移过程中,不支持 DDL 操作,如进行 DDL 操作可能导致迁移失败
3.DTS 增量迁移的时间最长支持 15 天,如果超过 15 天不停止任务,系统资源可能被回收

22 迁移完毕

因迁移帐号拥有读写权限,为了保证本地数据库安全,请在数据迁移完成后,删除本地数据库和 RDS 实例中的迁移帐号

23 使用mysqldump迁移数据

使用 mysqldump 工具的优点是简单易用、容易上手,缺点是停机时间较长,因此它适用于数据量不大,或者允许停机的时间较长的情况

24 迁移过程

1.关闭MySQL进程
mysql_dir/bin/mysqladmin -u root -p shutdown
2.使用 mysqldump 的数据导出工具,将本地数据库数据导出为数据文件
mysqldump -h localIp -u userName -p --opt --default-character-set=utf8 --hex-blob dbName --skiptriggers> /tmp/dbName.sql
3.使用 mysqldump 导出存储过程、触发器和函数
mysqldump -h localIp -u userName -p --opt --default-character-set=utf8 --hex-blob dbName -R | sed -e ‘s/DEFINER[ ]*=[ ]*[^*]*\*/\*/‘ > /tmp/triggerProcedure.sql
4.参见ECS产品文档,将数据文件和存储文件上传到ECS
5.登录ECS
mysql -h intranet4example.mysql.rds.aliyuncs.com -u userName -p dbName < /tmp/dbName.sql
mysql -h intranet4example.mysql.rds.aliyuncs.com -u userName -p dbName </tmp/triggerProcedure.sql

25 压缩数据

MySQL 5.6 版支持通过 TokuDB 存储引擎压缩数据。经过大量测试表明,数据表从 InnoDB 存储引擎转到 TokuDB 存储引擎后,数据量可以减少 80% 到 90%,
即 2T 的数据量能压缩到 400G 甚至更低。除了数据压缩外,TokuDB 存储引擎还支持事务和在线 DDL 操作,可以很好兼容运行于 MyISAM 或 InnoDB存储引擎上的应用。

26 使用TokuDB的限制

1.TokuDB 存储引擎无法支持外键 Foreign Key
2.TokuDB 存储引擎不适用于频繁大量读取的场景

27 创建RDS只读实例的要求

要创建只读实例,主实例要求 MySQL5.6 及以上版本

28 只读实例的功能限制

1.1 个主实例做多可以创建 5 个只读实例
2.备份设置:不支持备份设置以及临时备份
3.数据迁移:不支持数据迁移至只读实例
4.数据库管理:不支持创建和删除数据库
5.帐号管理:不支持创建和删除帐号,不支持为帐号授权以及修改帐号密码功能
6.实例恢复:不支持通过备份文件或任意时间点创建临时实例,不支持通过备份集覆盖实例
7.创建只读实例后,主实例将不支持通过备份集直接覆盖实例来恢复数据

29 RDS灾备

1.提供独立的数据库连接地址,由用户应用端自助控制连接
2.使用主备高可用架构
3.支持按小时计费,即开即用,即停即止
4.提供独立的白名单配置,帐号管理

30 RDS灾备的前提

1.当前灾备实例只支持数据库类型为 MySQL 的 RDS 实例
2.要创建灾备实例,主实例要求 MySQL 5.6 及以上版本。在升级主实例版本前,请做好兼容性测试;或者新建一个 MySQL 5.6 的实例,将数据从主实例复制到新建实例,
然后在新建实例上创建灾备实例 3.创建灾备实例的主实例必须要有内网地址

31 RDS上灾备的功能限制

1.暂仅支持在国内五大地域:华东 1(杭州)、华东 2(上海)、华南 1(深圳)、华北 1(青岛)、华北 2(北京)
2.暂不支持创建在 VPC 内(主实例可创建在 VPC 内)
3.出于同步链路自身稳定性的需要,灾备实例仅支持创建只读权限的帐号不支持备份设置、备份恢复、数据迁移、数据库管理、申请外网访问地址、修改连接地址功能

 

以上是关于阿里云RDS上的一些概念性记录的主要内容,如果未能解决你的问题,请参考以下文章

阿里云上的RDS数据的本地同步

阿里云RDS与ECS自建库搭建主从复制

阿里云RDS-Mysql物理备份数据库文件,在本地windows下数据库恢复过程

云数据库RDS

阿里云rds实例恢复到本地

从阿里云RDS MySQL在线迁移数据到本地MySQL