首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用AlwaysOn将PROD数据库还原到QA

问用AlwaysOn将PROD数据库还原到QA
EN

Database Administration用户
提问于 2017-11-07 20:41:57
回答 2查看 1.1K关注 0票数 1

我希望创建一个脚本/作业,该脚本/作业每周运行一次,以备份我的PROD数据库,并将其还原到QA服务器,然后针对它运行一个自定义维护脚本来清理和准备要分析的数据。

问题是我的QA服务器正在运行AlwaysOn可用性组。我可以访问Powershell、"DBATools.io“脚本、Server代理和远程SQL服务器(如果可以的话)。都在SQL2016下面。

我今天还发现了一个叫做自动播种的SQL2016特性。我试过了,它允许我绕过复杂的“向AG添加数据库”的步骤。

因此,到目前为止,我可以简化以下步骤:

代码语言:javascript
复制
ALTER AVAILABILITY GROUP [SQLQA] REMOVE DATABASE [ProdData];

RESTORE DATABASE [ProdData]
        FROM DISK=N'\\nas\Backup\ProdData.bak'
        WITH FILE=1, NOUNLOAD, REPLACE, STATS=5, 
            MOVE N'ProdData' TO N'S:\Data\ProdData.mdf', 
            MOVE N'ProdData_log' TO N'T:\Log\ProdData_Log.LDF';

-- Missing a step here to physically remove the old database from the secondary server, at this point in "Recovery pending". If the old database is still there, the AUTOMATIC SEEDING will not work, nor the manual steps of adding a database to AlwaysOn for that matter.

ALTER AVAILABILITY GROUP [SQLQA] ADD DATABASE [ProdData];

-- Run custom maintenance/cleanup SQL code here

最大的问题是:我有什么选择来摆脱旧的二级目标数据库?

或者,任何人都有一种超级热门的方法,可以轻松、自动地将生产数据转移到QA或DEV环境中?

提前谢谢。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2017-11-07 22:11:03

我有什么选择来摆脱旧的二级目标数据库?

您可以创建链接服务器并使用Execute At LinkedServer。当我必须在PROD的Dev / QA中刷新AG env时,这就是我在当前脚本中所做的事情。

你可以使用powershell等等。但是Execute At LinkedServer对我的需求很好。

有谁有一种超级热门的方法可以轻松、自动地将生产数据下载到QA或DEV环境中?

针对下游环境的刷新脚本是特定于公司环境的,尤其是。后恢复过程,如脱敏或掩蔽数据等,所以,我要说,投入一些工程时间,使过程可重复,这将节省你的时间在未来。

票数 2
EN

Database Administration用户

发布于 2017-11-13 21:12:04

按照金的建议,这是(半)最终结果。如果有人加入它,使它更加模块化/参数化/健壮,我相信它会变得有用。

代码语言:javascript
复制
/* PREREQUISITES
1) Add Linked Server to the secondary with "RCP" and "RCP Out". Security account must have "DB Creator" rights
2) ALTER AVAILABILITY GROUP [SQLQA] MODIFY REPLICA ON 'SQLQA2'  WITH (SEEDING_MODE = AUTOMATIC)
3) ALTER AVAILABILITY GROUP [SQLQA] MODIFY REPLICA ON 'SQLQA1'  WITH (SEEDING_MODE = AUTOMATIC)
4) ALTER AVAILABILITY GROUP [SQLQA] GRANT CREATE ANY DATABASE
*/

-- Remove from AG
ALTER AVAILABILITY GROUP SQLQA REMOVE DATABASE TestDB;

-- Delete database on Linked Server
EXEC [SQLQA2].tempdb.dbo.sp_executesql N'DROP DATABASE TestDB;';

-- Restore backup on primary instance
RESTORE DATABASE TestDB
        FROM DISK=N'\\nas\Backup\TestDB.bak'
        WITH FILE=1, NOUNLOAD, REPLACE, STATS=5, 
            MOVE N'TestDB' TO N'S:\Data\TestDB.mdf', 
            MOVE N'Test_log' TO N'T:\Log\TestDB_Log.LDF';

-- Add DB to AG
ALTER AVAILABILITY GROUP SQLQA ADD DATABASE TestDB;

-- Here you can monitor the progression of the SEEDING and results
SELECT start_time, completion_time, is_source,current_state,failure_state,failure_state_desc FROM sys.dm_hadr_automatic_seeding
SELECT * FROM sys.dm_hadr_physical_seeding_stats;
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/190350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档