{"id":2253,"date":"2012-02-05T04:32:10","date_gmt":"2012-02-05T09:32:10","guid":{"rendered":"http:\/\/www.bytebot.net\/blog\/?p=2253"},"modified":"2012-02-05T06:31:18","modified_gmt":"2012-02-05T11:31:18","slug":"mysql-ha-reloaded-by-ivan-zoratti","status":"publish","type":"post","link":"https:\/\/www.bytebot.net\/blog\/archives\/2012\/02\/05\/mysql-ha-reloaded-by-ivan-zoratti","title":{"rendered":"MySQL HA reloaded by Ivan Zoratti"},"content":{"rendered":"<p>MySQL HA reloaded &#8211; old tricks and cool new tools to guarantee high availability to your MySQL Servers by <a href=\"http:\/\/mysql4all.wordpress.com\/\">Ivan Zoratti<\/a> of <a href=\"http:\/\/www.skysql.com\/\">SkySQL<\/a>. This talk is a little longer, so check out: <a href=\"http:\/\/mysql4all.wordpress.com\/2012\/01\/18\/ha-reloaded\/\">HA Reloaded &#8211; many ways to provide High Availability<\/a>. The slides are already online.<\/p>\n<p>Questions to ask: which level of high availability do I need? Do I require no loss of data? Do I need failover or is switchover enough? Can I provide a reasonable service when a component is down? Remember, five nine&#8217;s high availability also means a lot of infrastructure costs.<\/p>\n<p>Other things to clarify: availability vs scalability. HA costs. HA for your entire architecture, not just for your database servers. Review your SLAs.<\/p>\n<p>The best high availability solution today is combined solutions.<\/p>\n<p>MySQL replication &#8211; asynchronous &amp; semi-synchronous (lots of people use MySQL 5.5, about 4 people in room were on Percona Server &#8211; question asked due to semi-sync replication only being available in 5.5 &amp; greater), there are pros &amp; cons of row based replication vs statement based replication.<\/p>\n<p>MySQL Replication via Multi-Master replication Manager (MMM). Features such as monitoring, automatic failover, data backup &amp; resync. Unfortunately, it has some problems with the stability &amp; automatic failover. The project is not improved anymore, so there are other solutions that you should consider today.<\/p>\n<p>MySQL Replication with <a href=\"http:\/\/code.google.com\/p\/mysql-master-ha\/\">MHA<\/a> is a preferred solution. Something to consider: &#8211;read-only=1 and log-bin on slaves. Master IP failover. FIltering rules. Multi-tier replication.<\/p>\n<p>Tungsten Replicator &#8211; open source, heterogenous replication. Truly multi-master and fan-in with Global ID. Per-schema multi-thread. You can also use it to replicate to Postgresql, Oracle and other databases. There is also Tungsten Enterprise.<\/p>\n<p>Synchronous replication with DRBD is typical for active\/standby environments. People don&#8217;t really like this because they feel that there is a server doing nothing. You can always do it active\/passive. It works with InnoDB only.<\/p>\n<p>Synchronous replication with Galera works for InnoDB. Its multi-master with no SPOF. Its new\/young technology so you may find some issues with it. Application failover must be managed, but the conflict resolution is quite tricky (when you commit a transaction you might be fine, but you may have transactions that are removed due to conflicts).<\/p>\n<p>There is a commercial SchoonerSQL that provides synchronous master-slave replication for InnoDB. Its defined explicitly as a master-slave solution.<\/p>\n<p>Active\/Passive clusters using Shared Storage. Points to consider are the fact that redundancy &amp; replication must be guaranteed by the shared storage. InnoDB only. What about filesystems?<\/p>\n<p>Virtualized environments &#8211; data storage, high availability &amp; load balancing are provided and managed by the virtualized software. The faults are handled by the software, not the database.<\/p>\n<p>There is also geographical replication for disaster recovery, having a master-master asynchronous replication is used to update the backup data centre. There is also storage snapshots for disaster recovery (not-specific to MySQL, its storage systems based, use only InnoDB).<\/p>\n<p>There is also MySQL Cluster but there is another presentation about this later at FOSDEM. Very nice closing slide, &#8220;The absolutely necessary comparison chart&#8221; which some may disagree, but Ivan thinks is the best way forward.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MySQL HA reloaded &#8211; old tricks and cool new tools to guarantee high availability to your MySQL Servers by Ivan Zoratti of SkySQL. This talk is a little longer, so check out: HA Reloaded &#8211; many ways to provide High Availability. The slides are already online. Questions to ask: which level of high availability do [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[23],"tags":[1332,1337,1775,1338],"class_list":["post-2253","post","type-post","status-publish","format-standard","hentry","category-mysql","tag-fosdem","tag-ivan-zoratti","tag-mysql","tag-mysql-ha"],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/p4vJD-Al","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/posts\/2253","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/comments?post=2253"}],"version-history":[{"count":4,"href":"https:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/posts\/2253\/revisions"}],"predecessor-version":[{"id":2277,"href":"https:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/posts\/2253\/revisions\/2277"}],"wp:attachment":[{"href":"https:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/media?parent=2253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/categories?post=2253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/tags?post=2253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}