干货 | 阿里云数据库RDS MySQL数据安全预防与恢复

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS SQL Server,独享型 2核4GB
简介: 作者:凌洛,阿里云数据库运维专家
作者:凌洛,阿里云数据库运维专家

背景

前一段时间“删库跑路”引起大家对数据库安全的关注,都在担心如果误删的数据能不能恢复?如何恢复?阿里云数据库RDS MySQL的数据安全机制怎么样呢?怎么才能做到事前预防、事后恢复呢?阿里云数据库全方位保护您的数据安全,多角度恢复数据,这篇文章我们就来聊聊这个话题。

事前预防

事前预防可以从以下几方面看:

  • 权限隔离
  • 环境隔离
  • 库表备份设置
  • 数据库管理DMS
  • 备份服务DBS

RDS MySQL从产品上做了以下完善:

image.png

权限隔离

image.png
image.png

环境隔离

曾经有一个开发误把生产当测试环境,误修改很多数据,我们要尽量的把测试、预发、生产环境隔开,降低因为环境识别错误导致的数据安全事件。

image.png

内核回收站

适用版本

MySQL 8.0

回收机制

执行DROP TABLE/DATABASE语句时,只保留相关的表对象,并移动到专门的recycle bin目录中。其它对象的删除策略如下:

如果是与表无关的对象,根据操作语句决定是否保留,不做回收。

如果是表的附属对象,可能会修改表数据的,做删除处理,例如Trigger和Foreign key。 但Column statistics不做清理,随表进入回收站。

清理机制

回收站会启动一个后台线程,来异步清理超过recycle_bin_retention时间的表对象。在清理回收站表的时候,如果遇到大表,会再启动一个后台线程异步删除大表。

设置实例备份规则

RDS MySQL默认选择整实例备份,但从去年开始我们支持了可以按库表备份,为了尽快的恢复数据,可以指定库表备份。

image.png

数据库管理DMS

DMS是一款强大的数据库管理和设计工具,直观的GUI开发环境让用户简单管理多达23种数据库,包括表结构设计、数据操作、数据开发及性能诊断优化等操作。

DMS通过研发规范、权限控制、操作拦截、数据脱敏、安全审计及变更回滚等功能有效保障数据安全。

image.png

可以将权限细分,识别出数据安全风险,从原来的审计变成拦截:

image.png

设置安全规则

建议您在刚开始就设置执行DDL、DML的规则

image.png

全流程把控

DMS从代码变更、数据变更、代码发布一条龙服务,特别是企业版融合了阿里十年的经验,审批、审计、定时执行等功能。

image.png

DBS

为数据库提供连续数据保护、低成本的备份服务。它可以为多种环境的数据提供强有力的保护,包括企业数据中心、其他云厂商、混合云及公共云。

产品功能

  • 可恢复任1秒数据

实例、单库、多表、单表,备份及恢复粒度自由选择,RTO大幅降低,备份有效性实时验证

  • 安全加密

无论传输,还是存储使用最严苛的加密技术,保护用户数据安全

  • 低成本,免运维

低成本异地备份,让企业快速满足三级等保要求,无需为灾备提供前期成本,配置到运行只需几分钟

  • 多环境支持

支持自建IDC、云上自建数据库、其他云环境的数据库备份

和RDS自带备份的区别

针对RDS数据库,DBS提供转储备份和逻辑备份,满足RDS客户的异地备份和灵活备份诉求。

针对RDS数据库,RDS提供物理备份,满足RDS客户的本地备份和快速恢复诉求。

此外,DBS还可以查询和数据分析,而RDS自带的备份是不行的。

image.png

DBS的入口

DBS控制台/官网入口
DMS侧入口

image.png

事中谨慎

DDL使用回收站

MySQL 8.0

mysql> SET SESSION RECYCLE_BIN=ON;---------------------------------------打开会话级回收站
mysql> CALL DBMS_RECYCLE.SHOW_TABLES();-------------------------------看回收站里的表
mysql> DROP TABLE tablename;--------------------------------------------------删除表
mysql> CALL DBMS_RECYCLE.PURGE_TABLE (‘<TABLE>’);-------------------清理回收站里的表
mysql> call dbms_recycle.show_tables(); 
+------------------+-----------------+---------------------+------------------+------------------------+------------------------+ 
|       SCHEMA     |         TABLE     | ORIGIN_SCHEMA  | ORIGIN_TABLE |    RECYCLED_TIME   |       PURGE_TIME      | 
+------------------+-----------------+---------------------+------------------+------------------------+------------------------+ 
| __recycle_bin__ | __innodb_1063 |     product_db      |             t1         | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | 
| __recycle_bin__ | __innodb_1064 |     product_db      |             t2         | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | 
| __recycle_bin__ | __innodb_1065 |     product_db      |         parent      | 2019-08-08 11:01:46  | 2019-08-15 11:01:46 | 
| __recycle_bin__ | __innodb_1066 |     product_db      |        child          | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | 
+------------------+------------------+--------------------+------------------+------------------------+-------------------------+

操作注意事项

  • 前台业务和后台运维/数据分析隔离
  • 带WHERE条件
  • 注意读写分离,数据统计分析类/定时任务类/大批量操作类
  • 尽量避免业务高峰
  • 如果有后台非程序批量修改语句,需要多人REVIEW,或走正规流程
    image.png
  • 操作前备份
  • 每次执行DML/DDL之前,导出执行前的SQL,作为回滚脚本
  • DMS上备份

事务控制

默认不开启为“否”,逐条提交,遇到失败则终止但不回滚;

开启则遇到失败则全部回滚(仅限DML,DDL不在范围内)

备份数据

默认开启为“是”,针对update、delete进行将要影响数据的全记录行insert脚本生成附件

image.png

事后恢复

DMS工单操作历史

适用场景

MySQL 5.5/5.6/5.7/8.0
DELETE/UPDATE/INSERT
开通了企业版的DMS

恢复方法

对于变更执行后出现异常不符合诉求需要回滚的,可直接工单页面内右侧-工单操作历史-查看备份,找到备份文件
下载备份脚本下载,做相应处理
重新提交变更工单

DMS数据追踪

适用场景

MySQL 5.5/5.6/5.7/8.0
少量DELETE/UPDATE/INSERT

功能特点

在线搜索日志内容,无需手工下载Binlog
支持数据的插入/更新/删除日志搜索,无需手工解析Binlog
支持逐条数据恢复,无需手工生成回滚语句
OSS Binlog(RDS会定时将Binlog备份到OSS上)
本地热Binlog(数据库服务器上Binlog)
支持非通过DMS操作的DML

image.png
image.png

内核回收站

适用场景

MySQL 8.0
DROP TABLE/SCHEMA
其它对象的删除策略是:
与表无关的对象,比如 procedure,根据操作语句决定是否保留,不做回收。
表的附属对象,比如 trigger,Foreign key,column statistics等,只要存在可能修改表数据的,做删除,比如 trigger,Foreign key。 但columns statistics不做清理,随表进入回收站。

找回方法

查看回收站表

mysql> CALL DBMS_RECYCLE.SHOW_TABLES();----------------------------------------------- 看回收站里的表
mysql>CREATE TABLE SRC_SCHEMA.SRC_TABLE LIKE SCHEMA.TABLE;-------------------- 橙色是要替换的内容
mysql>INSERT INTO SRC_SCHEMA.SRC_TABLE SELECT * FROM SCHEMA.TABLE; -------- 橙色是要替换的内容
mysql> call dbms_recycle.show_tables(); 
+------------------+------------------+---------------------+------------------+-----------------------+------------------------+ 
|       SCHEMA     |          TABLE     | ORIGIN_SCHEMA  | ORIGIN_TABLE |   RECYCLED_TIME   |       PURGE_TIME      | 
+------------------+------------------+---------------------+------------------+-----------------------+-------------------------+ 
| __recycle_bin__ | __innodb_1063 |       product_db      |           t1          | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | 
| __recycle_bin__ | __innodb_1064 |       product_db      |           t2          | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | 
| __recycle_bin__ | __innodb_1065 |       product_db      |           parent    | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | 
| __recycle_bin__ | __innodb_1066 |       product_db      |           child       | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | 
+------------------+------------------+----------------------+------------------+---------------------+---------------------+ 
4 rows in set (0.00 sec)
mysql>create table product_db.t1 like __recycle_bin__. __innodb_1063;
mysql>insert into product_db.t1 select * from __recycle_bin__. __innodb_1063;

RDS克隆实例

适用场景

MySQL 所有版本
通过备份克隆出整个实例
所有误操作(DDL/DML)

指定方式

指定时间点
指定备份集

操作步骤

恢复到一个新实例
验证数据准确性
将数据迁回原实例
image.png

RDS库/表恢复

适用场景

MySQL所有版本
通过备份指定恢复误删的数据库或表
所有误操作(DDL/DML)
打开了库表备份的实例

image.png

注意事项

必须打开库/表级别备份
每次最多选择50个库/表
运行中且没有被锁定
如果要按时间点进行恢复,需要确保日志备份已开启
若要按备份集恢复,则原实例必须至少有一个备份集
image.png

DBS恢复

适用场景
支持整个实例、多个数据库、单个数据库、多张表或一张表恢复
支持秒级任意时间点恢复,并且用户可以灵活选择恢复对象

image.png

目录
相关文章
|
3天前
|
存储 人工智能 Cloud Native
阿里云瑶池数据库训练营权益:《玩转Lindorm》学习资料开放下载!
阿里云瑶池数据库训练营权益:《玩转Lindorm》学习资料开放下载!
|
1天前
|
弹性计算 关系型数据库 MySQL
史上最大力度!阿里云瑶池数据库最高直降40%
2月29日,阿里云全线下调云产品官网售价,这是阿里云史上最大力度的一次降价! 本次降价采用官网直降的形式,对在官网采购的新老客户均适用。 其中,云数据库RDS最高降40%、云服务器ECS最高降36%、对象存储OSS最高降55%。 无论是大客户还是中小客户,新客户还是老客户,都可以在阿里云官网上直接按照新的价格在线下单。 如此大幅度的优惠,你还等什么!快来官网下单吧!
|
1天前
|
存储 关系型数据库 数据库
|
1天前
|
关系型数据库 分布式数据库 数据库
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
近日,阿里云旗下的自研云原生数据库PolarDB在2024年中国数据库流行度排行榜中夺冠,并刷新了榜单总分纪录,这一成就引起了技术圈的广泛关注。这一成就源于PolarDB在数据库技术上的突破与创新,以及对开发者和用户的实际需求的深入了解体会。那么本文就来分享一下关于数据库流行度排行榜的影响力以及对数据库选型的影响,讨论PolarDB登顶的关键因素,以及PolarDB“三层分离”新版本对开发者使用数据库的影响。
12 3
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
|
1天前
|
SQL 关系型数据库 MySQL
MySQL数据库学习(小白一文掌握Mysql)
MySQL数据库学习(小白一文掌握Mysql)
20 0
|
1天前
|
弹性计算
2024年阿里云幻兽帕鲁服务器多少钱一年,详细介绍
2024年阿里云幻兽帕鲁服务器的价格因配置不同而有所差异。一种常见的配置是4核16G10M的服务器,适合4~8人联机畅玩。这种配置的服务器的月租费为26元。如果选择按年支付,那么一年的费用就是26元/月 × 12个月 = 312元。
10 1
|
1天前
|
弹性计算
阿里云幻兽帕鲁/Palworld专用服务器2024年价格配置清单来了!
随着《幻兽帕鲁》的持续热度,越来越多的玩家选择搭建专属游戏服务器,与好友共同探索这个充满奇幻色彩的世界。今天,就为大家带来阿里云幻兽帕鲁Palworld游戏服务器的优惠价格配置清单,让您轻松选购,畅快游戏!
|
1天前
|
弹性计算 Ubuntu Windows
2024年部署幻兽帕鲁/Palworld服务器多少钱?阿里云帕鲁主机优惠价格解析
对于热爱《幻兽帕鲁》的玩家们来说,一个稳定、高效的游戏服务器是畅享游戏乐趣的关键。那么,搭建一个这样的服务器需要多少钱呢?别担心,阿里云已经为大家准备了超值的幻兽帕鲁Palworld游戏服务器!
|
1天前
|
弹性计算 Ubuntu 固态存储
2024年阿里云幻兽帕鲁服务器租用多少钱:阿里云Palworld/幻兽帕鲁主机优惠价格表整理
对于热爱幻兽帕鲁Palworld的玩家们来说,拥有一个稳定且性能出众的游戏服务器至关重要。阿里云,作为国内领先的云服务提供商,为广大玩家带来了极具性价比的幻兽帕鲁游戏服务器租用方案。
|
1天前
|
弹性计算
2024年阿里云开一个Palworld/幻兽帕鲁服务器花多少钱?
在帕鲁的世界里,与神奇的生物「帕鲁」共度时光,是许多玩家的梦想。但你知道吗?现在,这个梦想的成本可以低得令人难以置信!阿里云推出的幻兽帕鲁Palworld游戏服务器,为你提供了极致的游戏体验,而价格却出人意料的亲民。

相关产品

  • 云数据库 RDS MySQL 版