练习 - 通过还原 Azure SQL 数据库来恢复数据
试还原是任何灾难恢复策略的重要组成部分。
需要熟悉将备份数据库还原到特定时间点的步骤,以便必要时执行。 还需要调查还原操作所需的时间。 这样,可以在你的组织指南中对此进行规划。
让我们从自动的 Azure SQL 数据库备份执行还原。
确认备份处于可用状态
第一次成功备份可能需要 15 分钟才能完成。 在继续练习之前,我们需要确保备份正在运行。
在 Azure Cloud Shell 中,运行以下 PowerShell 命令,将变量设置为 SQL Server 实例的值:
$sqlserver=Get-AzSqlServer
使用以下命令验证连续备份是否正常运行:
Get-AzSqlDatabaseRestorePoint ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -DatabaseName sql-erp-db ` -ServerName $sqlserver.ServerName
如果备份正在运行,应出现类似于以下代码的输出。 如果命令不返回值,则备份尚未启动。 几分钟后重新运行此命令。
ResourceGroupName : <rgn>[sandbox resource group name]</rgn> ServerName : erpserver-53903 DatabaseName : sql-erp-db Location : East US RestorePointType : CONTINUOUS RestorePointCreationDate : EarliestRestoreDate : 9/24/19 4:21:21 PM RestorePointLabel :
RestorePointType
是CONTINUOUS
,表示备份正在自动进行。EarliestRestoreDate
表示第一次备份的时间戳。 准备好备份后,我们继续练习。
从数据库中删除表
首先,我们来模拟错误的数据库修改。
在 Azure 门户菜单上或在“主页”中,依次选择“所有资源”、“erpserver-NNNN”、“SQL 数据库”,然后选择“sql-erp-db”数据库。
选择“查询编辑器(预览)”,然后使用“dbadmin”用户和为此帐户指定的密码登录。
删除我们之前创建的“人员”表。 在新的查询窗口中,运行此命令。
DROP TABLE Person
要查看数据库中的表,请选择“新查询”。 然后在“查询 2”窗口中运行此命令来列出数据库中的所有表:
SELECT schema_name(t.schema_id) as schema_name, t.name as table_name FROM sys.tables t ORDER BY schema_name, table_name;
应该看到返回“无结果”,因为我们删除了“人员”表。
运行时间点还原
“人员”表已被误删。 现在,我们来将数据库还原到以前的状态。
在 Azure 门户菜单上或在门户主页中,选择“所有资源”,然后选择“sql-erp-db”数据库。
在“概述”页的顶部,选择“还原”。
使用这些值填写“还原数据库”页面上的“基本”选项卡,然后选择“查看 + 创建”。
设置 值 选择源 时间点 数据库名称 sql-erp-db-xxxxx 还原点 在删除“人员”表之前,请选择 10 分钟前的时间 服务器 erpserver-xxxxx 是否要使用 SQL 弹性池? 否 计算 + 存储 默认值 备份存储冗余 本地冗余备份存储 选择“创建”。 数据库还原需要几分钟才能完成。
查看还原的数据库
还原的数据库应包含“人员”表。 可在门户中查看该表。
在 Azure 门户菜单上或在门户主页中,选择“所有资源”,然后选择“sql-erp-db-restored”数据库。
选择“查询编辑器(预览)”,然后使用“dbadmin”用户和为此帐户指定的密码登录。
若要检查数据库中的表,请在“查询 1”窗口中运行此命令:
SELECT schema_name(t.schema_id) as schema_name, t.name as table_name FROM sys.tables t ORDER BY schema_name, table_name;
此时应显示“人员”表。
通过运行此命令,确认数据在表中:
SELECT * FROM Person
应该会看到先前输入的数据。
现在,你已经了解了如何在数据发生意外的情况下还原数据库。 并已熟悉了还原过程。 现在即可确保你的组织正确定义了备份和还原过程。