刚接触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 user01@'%' 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.出于同步链路自身稳定性的需要,灾备实例仅支持创建只读权限的帐号不支持备份设置、备份恢复、数据迁移、数据库管理、申请外网访问地址、修改连接地址功能