{"id":4027,"date":"2018-10-19T16:30:13","date_gmt":"2018-10-19T16:30:13","guid":{"rendered":"https:\/\/dbtut.com\/?p=4027"},"modified":"2018-12-06T08:40:18","modified_gmt":"2018-12-06T08:40:18","slug":"high-availability-part-i","status":"publish","type":"post","link":"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/","title":{"rendered":"High Availability Part I"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>Unplanned outages are very expensive, and the cost of downtime is rising as almost all mission critical systems are fully automated. Industries like banking and finance, telecommunication systems, Transportation systems, airline reservation systems etc. have fully automated their end-to-end processes. The stakes are high in building robust applications to run these industries.<\/p>\n<p>To ensure high availability of these systems, these applications should be design and implemented with high availability needs from the start.<\/p>\n<p>If you are building a new application, you need to take into account the proper high availability solution by integrating various high availability considerations into your current development methodology.<\/p>\n<p>The first part of this article defines many high availability terms.<\/p>\n<p>Today you can take advantage of on-premises options, cloud options, and various hybrid options.<\/p>\n<p>Many other combinations of cloud and hosted options are being used these days. This includes using Infrastructure as a service (IaaS), fully hosted infrastructure (hardware you rent), and colocation (rented servers in someone else\u2019s racks). These solutions are still not fool proof as component within these stack may fail and renders the application unavailable.<\/p>\n<p>Example, an application will be available in the cloud but if the application cannot be accessed by a user via the network, it is essentially \u201cdown.\u201d<\/p>\n<p>With a move toward more cloud based or hybrid application solutions, the emphasis of your high availability focus may also be refocused. And, to top things off, there is a human error aspect running through all these components as well. If you reduce or eliminate human errors (bringing a database (DB) offline accidentally, deleting a table\u2019s data in error, and so on), you increase your system\u2019s availability greatly. Continuous application availability (or high availability) involves three major variables:<\/p>\n<p><strong>Uptime<\/strong>\u2014the time during which your application is up, running, and available to the end users.<\/p>\n<p><strong>Planned downtime<\/strong>\u2014the time during which IT makes one or more of the system stacks unavailable for planned maintenance, upgrades, etc.<\/p>\n<p><strong>Unplanned downtime<\/strong>\u2014the time during which the system is unavailable due to failure\u2014human error, hardware failure, software failure, or natural disaster (earthquake, tornado, and so on).<\/p>\n<p>As you may already know from your own personal experience, the planned downtime contributes the biggest share of unavailability on most systems. It involves things such as hardware upgrades; OS upgrades and application of service packs to the DB, OS, or applications. However, there is a steady trend to adopt hardware and software platforms that allow for this element to be minimized (and, often, completely eliminated). For instance, many vendors offer systems whose hardware components, such as CPUs, disk drives, and even memory, are \u201chot swappable.\u201d (Engineered systems, a typical example is Oracle Exadata Machine and Oracle Database Appliance) But the price of these systems tends to be high.<\/p>\n<p>Any downtime, planned or unplanned, is factored into your overall requirements of what you need for a high availability system. You can \u201cdesign in\u201d uptime to your overall system stack and application architectures by using basic distributed data techniques, basic backup and recovery practices, and basic application clustering techniques, as well as by leveraging hardware solutions that are almost completely resilient to failures.<\/p>\n<p>Unplanned downtime usually takes the form of memory failures, disk drive failures, database corruptions (both logical and physical), data integrity breakdowns, virus breakouts, application errors, OS failures, network failures, natural disasters, and plain and simple human errors. There are basically two types of unplanned downtime:<\/p>\n<p><strong>Downtime that is \u201crecoverable\u201d by normal recovery mechanisms<\/strong>\u2014this includes downtime caused by things like swapping in a new hard drive to replace a failed one and then bringing the system back up.<\/p>\n<p><strong>Downtime that is \u201cnot recoverable\u201d and that makes your system completely unavailable and unable to be recovered locally<\/strong>\u2014this includes things such as a natural disaster or any other unplanned downtime that affects hardware.<\/p>\n<p>In addition, a good disaster recovery plan is paramount to any company\u2019s critical application implementation and should be part of your high availability planning.<\/p>\n<p>If you simply apply a standard high availability technique to all your applications, you will probably sacrifice something that may turn out to be equally important (such as performance or recovery time). So, be very cautious with a blanket approach to high availability.<\/p>\n<p>You can read the second article of the series, <a href=\"https:\/\/dbtut.com\/index.php\/2018\/11\/14\/high-availability-part-ii\/\" target=\"_blank\" rel=\"noopener\">High Availability Part II<\/a>.<\/p>\n\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_4027\" class=\"pvc_stats all  \" data-element-id=\"4027\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dbtut.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Unplanned outages are very expensive, and the cost of downtime is rising as almost all mission critical systems are fully automated. Industries like banking and finance, telecommunication systems, Transportation systems, airline reservation systems etc. have fully automated their end-to-end processes. The stakes are high in building robust applications to run these industries. To ensure &hellip;<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_4027\" class=\"pvc_stats all  \" data-element-id=\"4027\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dbtut.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":425,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-4027","post","type-post","status-publish","format-standard","","category-general"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>High Availability Part I - Database Tutorials<\/title>\n<meta name=\"description\" content=\"High Availability Part I\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"High Availability Part I - Database Tutorials\" \/>\n<meta property=\"og:description\" content=\"High Availability Part I\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/\" \/>\n<meta property=\"og:site_name\" content=\"Database Tutorials\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-19T16:30:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-12-06T08:40:18+00:00\" \/>\n<meta name=\"author\" content=\"Isaac Nyame Oppong\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Isaac Nyame Oppong\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/\"},\"author\":{\"name\":\"Isaac Nyame Oppong\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/cceb96e58564528f40509f72351cdd36\"},\"headline\":\"High Availability Part I\",\"datePublished\":\"2018-10-19T16:30:13+00:00\",\"dateModified\":\"2018-12-06T08:40:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/\"},\"wordCount\":725,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/dbtut.com\/#organization\"},\"articleSection\":[\"General\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/\",\"url\":\"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/\",\"name\":\"High Availability Part I - Database Tutorials\",\"isPartOf\":{\"@id\":\"https:\/\/dbtut.com\/#website\"},\"datePublished\":\"2018-10-19T16:30:13+00:00\",\"dateModified\":\"2018-12-06T08:40:18+00:00\",\"description\":\"High Availability Part I\",\"breadcrumb\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/dbtut.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"High Availability Part I\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dbtut.com\/#website\",\"url\":\"https:\/\/dbtut.com\/\",\"name\":\"Database Tutorials\",\"description\":\"MSSQL, Oracle, PostgreSQL, MySQL, MariaDB, DB2, Sybase, Teradata, Big Data, NOSQL, MongoDB, Couchbase, Cassandra, Windows, Linux\",\"publisher\":{\"@id\":\"https:\/\/dbtut.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dbtut.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/dbtut.com\/#organization\",\"name\":\"dbtut\",\"url\":\"https:\/\/dbtut.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg\",\"contentUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg\",\"width\":223,\"height\":36,\"caption\":\"dbtut\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/cceb96e58564528f40509f72351cdd36\",\"name\":\"Isaac Nyame Oppong\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/298616cc2c738765d3640a4099b936c2fe18e6dfcbed19902c683ea55bb2f293?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/298616cc2c738765d3640a4099b936c2fe18e6dfcbed19902c683ea55bb2f293?s=96&d=mm&r=g\",\"caption\":\"Isaac Nyame Oppong\"},\"url\":\"https:\/\/dbtut.com\/index.php\/author\/isaacnyameoppong\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"High Availability Part I - Database Tutorials","description":"High Availability Part I","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:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/","og_locale":"en_US","og_type":"article","og_title":"High Availability Part I - Database Tutorials","og_description":"High Availability Part I","og_url":"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/","og_site_name":"Database Tutorials","article_published_time":"2018-10-19T16:30:13+00:00","article_modified_time":"2018-12-06T08:40:18+00:00","author":"Isaac Nyame Oppong","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Isaac Nyame Oppong","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/#article","isPartOf":{"@id":"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/"},"author":{"name":"Isaac Nyame Oppong","@id":"https:\/\/dbtut.com\/#\/schema\/person\/cceb96e58564528f40509f72351cdd36"},"headline":"High Availability Part I","datePublished":"2018-10-19T16:30:13+00:00","dateModified":"2018-12-06T08:40:18+00:00","mainEntityOfPage":{"@id":"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/"},"wordCount":725,"commentCount":0,"publisher":{"@id":"https:\/\/dbtut.com\/#organization"},"articleSection":["General"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/","url":"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/","name":"High Availability Part I - Database Tutorials","isPartOf":{"@id":"https:\/\/dbtut.com\/#website"},"datePublished":"2018-10-19T16:30:13+00:00","dateModified":"2018-12-06T08:40:18+00:00","description":"High Availability Part I","breadcrumb":{"@id":"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dbtut.com\/index.php\/2018\/10\/19\/high-availability-part-i\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dbtut.com\/"},{"@type":"ListItem","position":2,"name":"High Availability Part I"}]},{"@type":"WebSite","@id":"https:\/\/dbtut.com\/#website","url":"https:\/\/dbtut.com\/","name":"Database Tutorials","description":"MSSQL, Oracle, PostgreSQL, MySQL, MariaDB, DB2, Sybase, Teradata, Big Data, NOSQL, MongoDB, Couchbase, Cassandra, Windows, Linux","publisher":{"@id":"https:\/\/dbtut.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dbtut.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/dbtut.com\/#organization","name":"dbtut","url":"https:\/\/dbtut.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/#\/schema\/logo\/image\/","url":"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg","contentUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg","width":223,"height":36,"caption":"dbtut"},"image":{"@id":"https:\/\/dbtut.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dbtut.com\/#\/schema\/person\/cceb96e58564528f40509f72351cdd36","name":"Isaac Nyame Oppong","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/298616cc2c738765d3640a4099b936c2fe18e6dfcbed19902c683ea55bb2f293?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/298616cc2c738765d3640a4099b936c2fe18e6dfcbed19902c683ea55bb2f293?s=96&d=mm&r=g","caption":"Isaac Nyame Oppong"},"url":"https:\/\/dbtut.com\/index.php\/author\/isaacnyameoppong\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/4027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/users\/425"}],"replies":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/comments?post=4027"}],"version-history":[{"count":0,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/4027\/revisions"}],"wp:attachment":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/media?parent=4027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/categories?post=4027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/tags?post=4027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}