views:

124

answers:

5

I'm not a DBA so this may be a stupid question but I'll ask it anyway. We're upgrading our SQL Servers from 2000 to 2005 and we will probably use either database replication or database mirroring. Our DBA would like to "multipurpose" the standby server meaning that he'd like to increase our capabilities and capacity by running other database applications on the standby server since "it's just going to be sitting there anyway" (his words, not mine). Is this such a good idea? Right now, our main application server uses only one instance that contains 50+ databases. As I understand it, what we're doing now and what our DBA is proposing for a failover server is a bad idea because all of these databases are sharing memory, CPUs, and working areas. If one applications starts behaving badly, the other DBs could be affected.

Any thoughts?

A: 

Will you depend on these extra applications? Where do they run in the failover case?

kbyrd
+1  A: 

It's really a business question that needs to be answered?? is a slow app better then no app if you can't afford the expense of extra hardware?

Standby and mirrored db's can be used for reporting. Using it as the failover db can work if you have enough headroom (i.e. both databases will comfortably run on the server)

Nick Kavadias
A: 

You really need to understand your failure modes.

If you look at it as basic resource math, that doesn't often make sense unless the resources you have running in the failure scenarios can handle the entire expected load. Sometimes this is the case, but not always. In this case, to handle the actual load you may need yet another server to come in (like RAID - perhaps your load needs a minimum of 5 servers, but you have a farm of 6, then you need 1 standby server for ever server to fail above 1). Sometimes a farm can run degraded, but sometimes they just puke and die.

And in the case of out of normal operation, you often have accident cascading where a legitimate incident causes a cascade of issues - e.g. your backup tape is busy restoring a server from a backup (to a test environment, even - there are no real "failures"), now your sql server or exhcange server (or both) is not backed up and your log gets full.

Cade Roux
A: 

Database Mirroring would not be the way to go here in my opinion as it provides redundancy at the database level only. So you would need to configure database mirroring for up to 50 databases based on the information you provided. The chances are that if one DB where to fail all, 50 would probably follow, as failures typically occur at the hardware level rather than a specific database.

It sounds to me like you should be using SQL Server Clustering technology. You could create an Active/Active cluster to support your requirements.

What is an Active/Active Cluster?

An Active/Active SQL Server cluster means that SQL Server is running on both nodes of a two-way cluster. Each copy of SQL Server acts independently, and users see two different SQL Servers. If one of the SQL Servers in the cluster should fail, then the failed instance of SQL Server will failover to the remaining server. This means that then both instances of SQL Server will be running on one physical server, instead of two.

Applying this to your scenario

You could then split the databases between two instances of SQL server, one active instance on each node. Should one node fail, the other node will pick up the slack and vice versa.

Further Reading

An introduction to SQL Server Clustering

I suspect that you will find the following MSDN thread useful reading also

John Sansom
That's a good solution IF one server can handle the load if the other were to fail. If it's not able to handle the entire load, then it might put you in a worse situation.
Cade Roux
Absolutely it depends on your environment. As an example, we currently run an Active/Active cluster that supports a High Throughput OLTP platform on one node pair and a Datawarehouse on the other. This is an excellent combination because it offloads reporting/non-critical operations from the production server and in the event of failover, reporting can be suspended scaled down if necessary. The SQL Server instances resources are deliberately capped in our case, as a precautionary measure. Make sense?
John Sansom
A: 

"it's just going to be sitting there anyway"

It will be sitting there applying transactions...

Take note of John Sansom's recommendation. Keep in mind that a Active/Active cluster requires two sql server licenses and a failover cluster/mirror only needs one.

Setting up mirroring for a large number of db's could turn into a big pain. You need any jobs/maintenance to move over as well - which can be achieved with alerts on WMI failover events. There's probably more to think about that could complicate things.

Sam