{"id":1069,"date":"2008-03-13T21:14:46","date_gmt":"2008-03-13T21:14:46","guid":{"rendered":"\/blogs\/paul\/post\/HA-Where-do-you-start-when-choosing-a-high-availability-solution.aspx"},"modified":"2008-03-13T21:14:46","modified_gmt":"2008-03-13T21:14:46","slug":"ha-where-do-you-start-when-choosing-a-high-availability-solution","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/","title":{"rendered":"HA: Where do you start when choosing a high-availability solution?"},"content":{"rendered":"<p><FONT face=Verdana size=2><br \/>\n<P>It seems that today is going to be one of those days where I get lost in forums and blogging &#8211; I can live with that :-)<\/P><br \/>\n<P>One of the questions that came up on a forum today was about choosing an HA solution &#8211; based solely on the hardware that was running the database! Given that single piece of info, it&#8217;s impossible to come up with any kind of sensible answer. The other thing I see a lot is someone saying <EM>&#8216;just use a cluster&#8217;<\/EM> &#8211; well, if you&#8217;re trying to protect against damage to the <EM>data<\/EM>, just using a cluster won&#8217;t do it because of the single-point-of-failure in a failover cluster &#8211; the shared disks.<\/P><br \/>\n<P>So where do you start? The key to choosing an HA solution is to work out your requirements first and then choose a <FONT color=#000000>technology that allows you to meet as many of them as you can, within your available budget. Here are some of the questions I like to ask (not an exhaustive list):<\/FONT><\/P><br \/>\n<UL><br \/>\n<LI><EM>What is the maximum application downtime SLA (service-level agreement)?<\/EM> In other words, if a disaster happens, how long can the application be off-line while failover occurs or the disaster is fixed?<br \/>\n<LI><EM>What is the maximum acceptable data-loss SLA?<\/EM> If a disaster happens, how much can you afford to lose in terms of data or work? You might require up-to-the minute recovery for instance, or you might be able to cope with losing the last day&#8217;s worth of transactions.<br \/>\n<LI><EM>What are you trying to protect?<\/EM> Site, server, instance, database, filegroup, partition, table, group of tables?<br \/>\n<LI><EM>What is the transaction log generation rate of your workload?<\/EM> If it&#8217;s very high, that means you&#8217;re going to have problems with backup up the log and with getting transaction log over to your redundant server\/site.<br \/>\n<LI><EM>What recovery model are you running your database(s) in?<\/EM> If you&#8217;re in SIMPLE, then you can&#8217;t get point-in-time recovery and so you&#8217;re looking at losing all the work since your last full backup, and it also means you can&#8217;t use any of the HA technologies which rely on the transaction log.<br \/>\n<LI><EM>What\u2019s your current backup strategy?<\/EM> If the answer is <EM>&#8216;what backup strategy?&#8217;<\/EM> then you&#8217;ve got bigger problems than just getting an HA solution in place&#8230;<br \/>\n<LI><EM>Are you trying to achieve site-level redundancy?<\/EM>&nbsp;If so, do you have a second site? Where is it? Does it have the same protection as the main site (in terms of security, HVAC, power, etc)<br \/>\n<LI><EM>What\u2019s the network bandwidth and latency to the second site?<\/EM> If your transction log generation rate is MBs\/second, but your second site is 2000 miles away through a 720KB\/second link, you&#8217;re not going to be doing any kind of HA solution involving the second site that comes close to your downtime and data-loss requirements&#8230;<br \/>\n<LI>What\u2019s the hardware at the second site?<br \/>\n<LI><EM>Can you alter the application at all?<\/EM> If you can&#8217;t alter the application then you may have a hard time getting it to gracefully failover to a redundant server. You also won&#8217;t be able to use <EM>explicit redirection<\/EM> with database mirroring.<br \/>\n<LI><EM>What&#8217;s the application eco-system?<\/EM> In other words, what all has to failover so the application can run properly.<\/LI><\/UL><br \/>\n<P>All of these figure into the choice of HA solution. Work these out, prioritize them, and then evaluate HA technologies (or combinations of technologies) to see which requirements you can meet. Don&#8217;t just jump at failover clustering first!<\/P><br \/>\n<P>Over the next few months I&#8217;ll be posting more on designing for high-availability &#8211; <A href=\"mailto:paul@sqlskills.com?Subject=HA blog post suggestion\">let me know<\/A> if there&#8217;s anything in particular you want to see.<\/P><\/FONT><\/p>\n","protected":false},"excerpt":{"rendered":"<p>It seems that today is going to be one of those days where I get lost in forums and blogging &#8211; I can live with that :-) One of the questions that came up on a forum today was about choosing an HA solution &#8211; based solely on the hardware that was running the database! [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35,46],"tags":[],"class_list":["post-1069","post","type-post","status-publish","format-standard","hentry","category-disaster-recovery","category-high-availability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>HA: Where do you start when choosing a high-availability solution? - Paul S. Randal<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HA: Where do you start when choosing a high-availability solution? - Paul S. Randal\" \/>\n<meta property=\"og:description\" content=\"It seems that today is going to be one of those days where I get lost in forums and blogging &#8211; I can live with that :-) One of the questions that came up on a forum today was about choosing an HA solution &#8211; based solely on the hardware that was running the database! [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/\" \/>\n<meta property=\"og:site_name\" content=\"Paul S. Randal\" \/>\n<meta property=\"article:published_time\" content=\"2008-03-13T21:14:46+00:00\" \/>\n<meta name=\"author\" content=\"Paul Randal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Paul Randal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/\",\"name\":\"HA: Where do you start when choosing a high-availability solution? - Paul S. Randal\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\"},\"datePublished\":\"2008-03-13T21:14:46+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"HA: Where do you start when choosing a high-availability solution?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\",\"name\":\"Paul S. Randal\",\"description\":\"In Recovery...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\",\"name\":\"Paul Randal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g\",\"caption\":\"Paul Randal\"},\"sameAs\":[\"http:\/\/3.209.169.194\/blogs\/paul\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/author\/paul\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HA: Where do you start when choosing a high-availability solution? - Paul S. Randal","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/","og_locale":"en_US","og_type":"article","og_title":"HA: Where do you start when choosing a high-availability solution? - Paul S. Randal","og_description":"It seems that today is going to be one of those days where I get lost in forums and blogging &#8211; I can live with that :-) One of the questions that came up on a forum today was about choosing an HA solution &#8211; based solely on the hardware that was running the database! [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/","og_site_name":"Paul S. Randal","article_published_time":"2008-03-13T21:14:46+00:00","author":"Paul Randal","twitter_misc":{"Written by":"Paul Randal","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/","name":"HA: Where do you start when choosing a high-availability solution? - Paul S. Randal","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website"},"datePublished":"2008-03-13T21:14:46+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/ha-where-do-you-start-when-choosing-a-high-availability-solution\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/paul\/"},{"@type":"ListItem","position":2,"name":"HA: Where do you start when choosing a high-availability solution?"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/","name":"Paul S. Randal","description":"In Recovery...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/paul\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce","name":"Paul Randal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g","caption":"Paul Randal"},"sameAs":["http:\/\/3.209.169.194\/blogs\/paul"],"url":"https:\/\/www.sqlskills.com\/blogs\/paul\/author\/paul\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/1069","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/comments?post=1069"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/1069\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/media?parent=1069"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/categories?post=1069"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/tags?post=1069"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}