DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance...

34
DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP – SCENARIO 1 https://jbswiki.com/2017/08/03/disaster-recovery-using-alwayson-availability-group-scenario-1/ Environment: -> Disaster Recovery scenario is as below, PRIMARY DATA CENTRE goes down. The databases on Server JBSERVER2 should be made online and have the application connect to Database Server JBSERVER2. Failback Availability group back to JBSERVER1 when PRIMARY DATA CENTRE comes online. The changes made by the Application on JBSERVER2\IN2014 should be relayed to JBSERVER1\IN2014 -> Checking the current AlwaysON setup in SQL Server Management Studio,

Transcript of DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance...

Page 1: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP – SCENARIO 1

https://jbswiki.com/2017/08/03/disaster-recovery-using-alwayson-availability-group-scenario-1/

Environment:

-> Disaster Recovery scenario is as below,

• PRIMARY DATA CENTRE goes down.

• The databases on Server JBSERVER2 should be made online and have the application connect to

Database Server JBSERVER2.

• Failback Availability group back to JBSERVER1 when PRIMARY DATA CENTRE comes online.

• The changes made by the Application on JBSERVER2\IN2014 should be relayed to JBSERVER1\IN2014

-> Checking the current AlwaysON setup in SQL Server Management Studio,

Page 2: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> The Database JB_DB contains a table named Table5, which we will use for testing.

USE [JB_DB]

GO

CREATE TABLE [dbo].[Table5](

[sno] [int] IDENTITY(1,1) NOT NULL,

[sname] [char](2000) NULL,

[sname1] [char](2000) NULL,

[sname2] [char](2000) NULL,

PRIMARY KEY CLUSTERED

(

[sno] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =

ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Set nocount on

insert into Table5 values (‘a’,’b’,’c’)

go 10002

-> Checking the row count for object Table5,

Page 3: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> The PRIMARY DATA CENTRE goes down. 2 votes are lost as Database Server JBSERVER1 and file share witness is down. Now that 2 votes out of 3 votes are lost, the cluster goes down. -> Checking the SQL Server instance and Eventlogs on JBSERVER2 when the Primary Data Centre is down.

-> Implementing Force Quorum on JBSERVER2.

-> Checking the SQL Server Instance after Force Quorum,

Page 4: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> I will suspend the data movement now,

Page 5: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,
Page 6: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> Right-click the availability group to be failed over, and select Failover.

Page 7: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,
Page 8: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> Checking the SQL Server Instance after the failover with data loss.

Page 9: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> The application can now connect to SQL Server Instance JBSERVER2\IN2014 using the Listener and use it. Let us insert a single row to the table for testing and make sure if it can be seen later after the failback.

insert into Table5 values (‘a’,’b’,’c’)

go

-> The PRIMARY DATA CENTRE comes online. Database Server JBSERVER1 and File witness are online now.

-> Connecting to JBSERVER1\IN2014 and Suspending the data movement,

Page 10: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,
Page 11: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement.

Page 12: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> On SQL Server Instance JBSERVER1\IN2014, we will resume the data movement.

Page 13: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> Checking the SQL Server Instance now,

Page 14: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> We will failback the Alwayson Availability group to JBSERVER1\IN2014,

Page 15: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,
Page 16: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,
Page 17: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> Checking the row count for object Table5 on JBSERVER1\IN2014 after failback,

Thank You, Vivek Janakiraman

https://jbswiki.com/2017/08/03/disaster-recovery-using-alwayson-availability-group-scenario-1/

Page 18: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP –

SCENARIO 2 https://jbswiki.com/2017/08/03/disaster-recovery-using-alwayson-availability-group-scenario-2/

Environment

-> Disaster Recovery scenario is as below,

• PRIMARY DATA CENTRE goes down.

• The databases on Server JBSERVER2 should be made online and have the application connect to

Database Server JBSERVER2.

• Failback Availability group back to JBSERVER1 when PRIMARY DATA CENTRE comes online.

• The changes made by the Application on JBSERVER2\IN2014 should be discarded.

-> Checking the current AlwaysON setup in SQL Server Management Studio,

Page 19: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> The Database JB_DB contains a table named Table5, which we will use for testing.

USE [JB_DB]

GO

CREATE TABLE [dbo].[Table5](

[sno] [int] IDENTITY(1,1) NOT NULL,

[sname] [char](2000) NULL,

[sname1] [char](2000) NULL,

[sname2] [char](2000) NULL,

PRIMARY KEY CLUSTERED

(

[sno] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =

ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Set nocount on

insert into Table5 values (‘a’,’b’,’c’)

go 10002

-> Checking the row count for object Table5,

Page 20: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> The PRIMARY DATA CENTRE goes down. 2 votes are lost as Database Server JBSERVER1 and file share witness is down. Now that 2 votes out of 3 votes are lost, the cluster goes down. -> Checking the SQL Server instance and Eventlogs on JBSERVER2 when the Primary Data Centre is down.

-> Implementing Force Quorum on JBSERVER2.

-> Checking the SQL Server Instance after Force Quorum,

Page 21: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> I will suspend the data movement now,

Page 22: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> Right-click the availability group to be failed over, and select Failover.

Page 23: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,
Page 24: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,
Page 25: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> Checking the SQL Server Instance after the failover with data loss.

-> The application can now connect to SQL Server Instance JBSERVER2\IN2014 using the Listener and use it. Let us insert a single row to the table for testing and make sure if it can be seen later after the failback.

insert into Table5 values (‘a’,’b’,’c’)

go

Page 26: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> The PRIMARY DATA CENTRE comes online. Database Server JBSERVER1 and File witness are online now. -> Connecting to JBSERVER1\IN2014 and Suspending the data movement,

Page 27: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> We will failback the Alwayson Availability group to JBSERVER1\IN2014,

Page 28: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,
Page 29: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,
Page 30: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,
Page 31: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> On SQL Server Instance JBSERVER1\IN2014, we will resume the data movement.

Page 32: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement.

Page 33: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> Checking the SQL Server Instance now,

Page 34: DISASTER RECOVERY USING ALWAYSON AVAILABILITY GROUP SCENARIO 1 · -> On SQL Server Instance JBSERVER2\IN2014, we will resume the data movement. -> On SQL Server Instance JBSERVER1\IN2014,

-> Checking the row count for object Table5 on JBSERVER1\IN2014 after failback,