Monday, January 28, 2008

Mirroring en SharePoint 2007

Excelente artículo de Bill Baer

SQL Server 2005 Database Mirroring has increased in popularity since its introduction and among the possible applications there is a growing demand to implement SQL Server 2005 Database mirroring for SharePoint Products and Technologies. This article outlines the considerations and implications of designing SQL Server 2005 Database Mirroring into your SharePoint Products and Technologies database architecture.

Understanding Basic Database Mirroring Concepts

SQL Server 2005 Database Mirroring provides high-availability and rapid failover by continuously sending a databases's transaction logs from an originating SQL server instance (principal) to a destination SQL server instance (mirror). Since the granularity of failover is at the database level unlike the server level failover in Microsoft Cluster Server, SQL Server 2005 Database Mirroring failover can provide an increase in failover performance and is more seamless and transparent to the application. A complete overview of Database Mirroring in SQL Server 2005 is available at http://www.microsoft.com/technet/prodtechnol/sql/2005/dbmirror.mspx.

Considerations and Implications

There are several important factors to consider before implementing SQL Server 2005 Database Mirroring in your SharePoint Products and Technologies infrastructure. Prior to implementing SQL Server 2005 Database Mirroring, you should understand what problems you are trying to solve whether they are performance, availability, or geographic replication related.

Determine the SQL Server 2005 Database Mirroring implementation mode - High Performance vs. High Availability vs. High Protection
High performance SQL Server 2005 Database Mirroring is also known as asynchronous mirroring where the transaction safety level is OFF. In high performance mirroring the transaction is committed as soon as the principal server writes the log record to the local log and sends the log record to the mirror. The principal does not wait for acknowledge and if needed queues the logs, a failover at this point may result in data loss.
High availability SQL Server 2005 Database Mirroring is also known as synchronous mirroring where the transaction safety level is FULL. Each transaction committed on the principal database is also committed on the mirror server synchronously. The principal server will only commit a transaction after receiving acknowledgement from the mirror server indicating the transaction log has been hardened. This process of acknowledgement and receipt results in slower performance versus asynchronous mirroring.
High protection SQL Server 2005 Database Mirroring is also known as synchronous mirroring where the transaction safety level is FULL and is similar to high availability with primary difference being that there is no implementation of a witness server which requires manual failover.
SQL Server 2005 Standard Edition allows only the FULL transaction safety level.
Understand and plan for database limitations
master, model, temp, or msdb cannot be mirrored.
SQL Server 2005 Database Mirroring requires that the databases use the FULL recovery model, the SIMPLE and BULK-logged recovery models cannot be used.
Transactions are played out on two servers, limiting the number of databases will reduce the performance cost.
Fewer databases will result in less overhead, by limiting the number of databases in a mirroring session you can maintain optimum performance levels. This may require the repartioning of smaller content databases to achieve fewer and larger content databases. Larger databases can leverage multiple data files spanning one or more drives to optimize performance and management.
Mirror databases that require redundancy and/or high value databases - content databases typically fall into this category.
Determine the appropriate hardware requirements - Can a single SQL server support your infrastructure?
Automatic failover requires a witness (polling) server. The witness server's role is to enable automatic failover - if the mirror server has confirmation from the witness, it can automatically take on the role of principal and make its database available.
SQL Server 2005 Database Mirroring requires two unique SQL server instances, one on the principal server and one on the mirror server.
Determine the deployment methodology
Decide on a localized or geographically disperse deployment. A geographically disperse deployment provides a disaster solution, but comes with performance implications as the result of network performance, latency, and type LAN vs. MAN vs. WAN.
Security
SQL Server 2005 Database Mirroring supports both Windows (NTLM/Kerberos) and Certificate based SQL authentication.
SQL Server Database Mirroring supports both AES and RC4 encryption algorithms for transmission encryption.
Decide on shared vs. dedicated storage
Storage is duplicated in mirroring 1TB of storage on the principal server requires 1TB of storage on the mirror server. Since each server in a mirroring partnership is a unique SQL server instance, the resources are not shared.
Plan for capacity
SQL Server 2005 Database Mirroring requires duplication of storage, before designing mirroring into your database architecture you should understand the capacity requirements of the current server farm and future scale. 1TB of storage on an MSCS cluster with shared storage requires 2TB of storage in mirroring, 1TB on the principal and 1TB on the mirror.
Change - understand the existing SharePoint Products and Technologies infrastructure's rate of change (churn). The performance of the principal server is affected by the transfer of log records to the mirror.
Long running and/or intensive transactions can impact performance and failover times and can include creating and/or rebuilding an index on a large table or bulk loading a large amount of data (Search).
Log bound workload performance under database mirroring is highly dependent on network performance and log I/O.
Handling role changes - understand the implications resulting of the loss of the principal or mirror server on SharePoint Products and Technologies.
Understand the manual failover steps to support SharePoint Products and Technologies.
Script an automatic failover mechanism to handle client-redirects.
Managing failover - SQL Server 2005 Database Mirroring works with a single database at a time. You need to take this into account when designing SQL Server 2005 Database Mirroring into your database architecture. *See Failover Handling
Planning and implementation
To provide the best initial performance when implementing SQL Server 2005 Database Mirroring, consider taking an online backup of the principal database(s), copy the database(s) to the mirror server and restore the database(s) with the option to apply further transaction logs. This will reduce the length of time associated with initial synchronization and minimize the performance implications of the initial synchronization.
Ensure the implication of mirroring role changes is understood and planned for and the technology has been thoroughly tested before designing into your database architecture.
A one to one mapping of principal to mirror server is recommended to maximize compatibility with SharePoint Products and Technologies.
In high availability SQL Server 2005 Database Mirroring the process of determining a failover is based on the network connection. If there is a problem with the network, mirroring will fail over or deny access to the database because of the quorum requirement. Understand the network implications on database mirroring.
As with any product or technology understand the support parameters, limitations of the product or technology, and ensure it has been thoroughly tested prior to a production implementation.
Failover Handling

The introduction of a witness server in your SQL Server 2005 Database Mirroring architecture provides a mechanism for automatic failover; however, since mirroring granularity is at the database level, it is important to consider how to handle both single, multiple database and/or server failure. Since the principal and mirror server SQL server instances are unique, SharePoint Products and Technologies will need to be made aware of the database server hosting its content. The following sections details the STSADM operations that can be run to create this awareness in Windows SharePoint Services 3.0/Microsoft Office SharePoint Server 2007.

If an individual database fails you can set the database server using the SharePoint 3.0 Central Administration user interface or STSADM.

Content Database Failover

To change the principal server for a content database using STSADM run:

stsadm -o deletecontentdb -url "" -databasename "" -databaseserver ""
stsadm -o addcontentdb -url "" -databasename " " -databaseserver ""
To change the principal server for a content database using the SharePoint 3.0 Central Administration user interface:

In SharePoint 3.0 Central Administration select Application Management, then click Content Databases.
From the Manage Content Databases page, select Remove content database for the failed content database.
From the Manage Content Databases page, select Add a content database to reinstate the content database on the new principal server.
Configuration Database and Administration Content Database Failover

The configuration and administration content database must reside on the same SQL database server, in the event that either of these databases fails, both must be failed over to the new database server. To failover the configuration and administration content database, run the following STSADM from a web front-end computer:

stsadm.exe -o renameserver -oldservername -newservername
Restart Internet Information Services to commit the change.

Search Database Failover

The following STSADM operation should be run from one web front-end computer for each failed search database.

stsadm –o editssp –title –ssplogin –ssppassword -searchdatabaseserver
Shared Services Database Failover

The following STSADM operation should be run from one web front-end computer for each failed SSP database.

stsadm –o editssp –title –ssplogin –ssppassword -sspdatabaseserver

The information provided above details the steps necessary to instantiate a manual failover of the various components of a SharePoint Products and Technologies server farm, for additional information on scripting automatic client-side redirect in the event of failover see Alerting on Database Mirroring Events and Database Mirroring in SQL Server 2005 under Resources and Recommended Reading. While it is possible to mirror the configuration and other databases associated with a SharePoint Products and Technologies server farm through the proper implementation of STSADM operations; support of SQL Server 2005 Database Mirroring for SharePoint Products and Technologies is limited to the content databases.

Basic SQL Server 2005 Database Mirroring Implementation for SharePoint Products and Technologies

The most common implementation of SQL Server 2005 Database Mirroring includes all databases being installed on a single mirror partnership and the implementation of a witness (polling) server that provides automatic database failover between the principal and mirror servers when necessary. A witness server additionally provides quorum capabilities for a mirroring partnership; as a result in the event a principal server is lost, the witness will bring the mirror server online.

The witness server does not serve as a content host nor perform intensive operations and as a result can be safely implemented on an application server in a SharePoint server farm in most circumstances.

After installing and configuring SQL Server 2005 you should test the communication channels between each server machine by confirming DNS name resolution and ensuring the latency between each node is within an acceptable parameter.

Database Selection and Preparation

To begin a database mirroring session you should identify the databases that will be mirrored. To maximize availability and reduce any potential issues during failover, it is recommended to mirror each database within a SharePoint Products and Technologies deployment. In a database mirroring partnership SQL Server allocates memory to each database mirroring connection, to avoid potential performance implications you should consider a database capacity that can support your environment and additionally host content in a minimum count of content databases. See Database Management Concepts for Large and Growing Content Databases for more information on capacity planning and design for content databases.

Set the Database Recovery Model to FULL on all Databases

On the SQL Server 2005 Principal server, click Start, All Programs, Microsoft SQL Server 2005, and then click SQL Server Management Studio.

Expand the Databases and System Databases node.

Right-click master and select New Query from the menu.

In the rightmost panel, enter the following SQL statement:

ALTER Database
SET RECOVERY FULL;

Select Query, and then click Execute from the SQL Server Management Studio toolbar.

The results of the operation will be displayed in the rightmost Results panel.

Backup SharePoint Products and Technologies Databases

On the SQL Server 2005 Principal server, click Start, All Programs, Microsoft SQL Server 2005, and then click SQL Server Management Studio.

Expand the Databases and System Databases node.

Right-click master and select New Query from the menu.

In the rightmost panel, enter the following SQL statement:

BACKUP Database
TO DISK = <'backuppath'>
WITH Format
Go

Select Query, and then click Execute from the SQL Server Management Studio toolbar.

The results of the operation will be displayed in the rightmost Results panel.

Restore the SharePoint Products and Technologies Databases to the Mirror Server

On the SQL Server 2005 Mirror server, click Start, All Programs, Microsoft SQL Server 2005, and then click SQL Server Management Studio.

Expand the Databases and System Databases node.

Right-click master and select New Query from the menu.

In the rightmost panel, enter the following SQL statement:

RESTORE Database
FROM DISK = <'restorepath'>
WITH NORECOVERY
Go

Select Query, and then click Execute from the SQL Server Management Studio toolbar.

The results of the operation will be displayed in the rightmost Results panel.

Backup Transaction Logs on the Principal Server

On the SQL Server 2005 Principal server, click Start, All Programs, Microsoft SQL Server 2005, and then click SQL Server Management Studio.

Expand the Databases and System Databases node.

Right-click master and select New Query from the menu.

In the rightmost panel, enter the following SQL statement:

BACKUP LOG
TO DISK = <'backuppath'>
WITH Format
Go

Select Query, and then click Execute from the SQL Server Management Studio toolbar.

The results of the operation will be displayed in the rightmost Results panel.

Restore Transaction Logs to Mirror Server

On the SQL Server 2005 Mirror server, click Start, All Programs, Microsoft SQL Server 2005, and then click SQL Server Management Studio.

Expand the Databases and System Databases node.

Right-click master and select New Query from the menu.

In the rightmost panel, enter the following SQL statement:

RESTORE LOG
FROM DISK = <'restorepath'>
WITH FILE=1, NORECOVERY
Go

Select Query, and then click Execute from the SQL Server Management Studio toolbar.

The results of the operation will be displayed in the rightmost Results panel.

Configure Database Mirroring Connections

On the Principal server click Start, All Programs, Microsoft SQL Server 2005, and then click SQL Server Management Studio.
Expand the Databases node.
Right-click the database to mirrored and select Properties from the menu.
On the Database Properties - dialog, select Mirroring under the Select a page panel, and then click Configure Security.
Click Next> on the Configure Database Mirroring Security Wizard or click Cancel to quit.
On the Include Witness Server dialog, if a witness server will be configured (recommended), click Yes otherwise click No, and then click Yes to continue or < Back to return to the previous screen.
On the Choose Servers to Configure dialog select Principal server instance, Mirror server instance, and Witness server instance, and then click Next > to continue.
On the Principal Server Instance dialog select the Principal server instance from the menu, configure the Listener port to 14999 and specify EndPoint_Mirroring in the Endpoint name field, select Encrypt data sent through this endpoint, and then click Next > to continue or < Back to return to the previous screen.
On the Mirror Server Instance dialog select the Mirror server instance from the menu and click Connect...
Configure the Listener port to 14999 and specify EndPoint_Mirroring in the Endpoint name field, select Encrypt data sent through this endpoint, and then click Next > to continue or < Back to return to the previous screen.
On the Service Accounts dialog review and confirm the settings, and then click Next > to continue or < Back to return to the previous screen.
Click Finish to close the Configure Database Mirroring Security Wizard.
On the Configuring Endpoints dialog ensure all actions are Successful; otherwise, return to the Configure Database Mirroring Security Wizard and resolve any conflicts or when all actions are Successful click Close.
Confirm High safety with automatic failover (synchronous) - Always commit changes at both the principal and mirror is selected under Operating mode and then select Start Mirroring to initialize database mirroring for the selected database.
Click Refresh and confirm the Status is indicated as Synchronized: the databases are fully synchronized. If there are any conflicts the Status will be commonly indicated as This database has not been configured for mirroring.
Click OK to close the Configure Database Mirroring Security Wizard.
Repeat steps 1 - 16 for each database to be mirrored.

Post Implementation Review and Testing

To confirm the mirroring connection has been configured successfully confirm the principal server database(s) is indicated as Principal, Synchronized, and the mirror server database(s) is indicated as Mirror, Synchronized / Restoring.
To test failover restart the MSSQLSERVER service.
Database mirroring is increasing in popularity and becoming an integral part of high availability and disaster recovery solutions within the SharePoint Products and Technologies arena. I've spent much of the last few months building labs, testing scenarios, impacts on platforms whether it be WSS or MOSS. This post is the third and final on my series [SQL Server 2005 Database Mirroring and Windows SharePoint Services/Microsoft Office SharePoint Server 2007].

We know with asynchronous mirroring we can automatically manage SQL Server 2005 failover by introducing the witness role in our server farms, the most challenging question to answer is how to manage web front-end failover. In this post I will outline several possible solutions for managing SharePoint Products and Technologies failover in a mirrored database architecture.

Solution # 1 Network Load Balancing

In a high-availability environment, you can create a NLB cluster to easily route client requests from the original principal server to a promoted mirror server without having to update each client directly. NLB setup and configuration are fairly painless; however, it comes with the requirement that each server be on the same subnet and the active mirror remain in a suspended state in the load balancing rotation. With this in mind you should carefully consider the limitations when using native NLB, for example you will not be able to geo-cluster in most circumstances.

Solution # 2 Manual Failover

Manual failover requires the least in respect to infrastructure and configuration; however, has the highest operational costs and without proper management and monitoring can present the largest client impact in the event the of a failover. The steps required to instantiate a manual failover of SharePoint Products and Technologies are described in the first part of this series.

Solution #3 Custom Solutions (Example)

Custom solutions can be implemented monitoring the state of the principal and mirror servers redirecting the application calling the original principal server to the new principal server - typically implemented through a Windows service.

For example, using an aliasing scheme where SharePoint Products and Technologies accesses the SQL database server through an alternate name; SharePoint Products and Technologies accessing the alternate name is redirected to the proper physical name of the principal server. Since SharePoint Products and Technologies is only aware of the alternate name and never accesses the physical name of either node it does not need to be failover aware.

From a logical perspective in the example solution proposed SharePoint Products and Technologies would make the request to the SQL alias, for example contoso, requests for contoso are intercepted and modified to reference the active principal node referenced in the web front-end server Registry as contoso1. In a failover scenario, the Windows service would detect the principal role is on the new principal server, previously the mirror server, and replace the web front-end server Registry entry for contoso1 with the new principal physical server contoso2.

No comments:

SQL Server 2016 Stretch Databases

El SQL Server Stretch Database permite que los datos históricos o de bitácoras puedan ser movidos hacia Azure, específicamente permite mover...