{"id":5433,"date":"2020-08-18T15:58:23","date_gmt":"2020-08-18T07:58:23","guid":{"rendered":"http:\/\/39.97.231.10\/?p=5433"},"modified":"2020-08-18T15:58:23","modified_gmt":"2020-08-18T07:58:23","slug":"mha%e9%ab%98%e5%8f%af%e7%94%a8%e6%9e%b6%e6%9e%84%e4%b8%8eatlas%e8%af%bb%e5%86%99%e5%88%86%e7%a6%bb","status":"publish","type":"post","link":"http:\/\/www.weijing.co\/?p=5433","title":{"rendered":"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb"},"content":{"rendered":"<header class=\\\"entry-header\\\"><\/header>\n<div class=\\\"entry-content\\\">\n<div class=\\\"begin-single-meta\\\"><span style=\\\"color: #1e73be; font-size: 1.38462rem;\\\">1.1 MHA\u7b80\u4ecb<\/span><\/div>\n<div class=\\\"single-content\\\">\n<h3><span id=\\\"111_MHA\\\">1.1.1 MHA\u8f6f\u4ef6\u4ecb\u7ecd<\/span><\/h3>\n<p>MHA\uff08Master High Availability\uff09\u76ee\u524d\u5728MySQL\u9ad8\u53ef\u7528\u65b9\u9762\u662f\u4e00\u4e2a\u76f8\u5bf9\u6210\u719f\u7684\u89e3\u51b3\u65b9\u6848\uff0c\u5b83\u7531\u65e5\u672cDeNA\u516c\u53f8youshimaton\uff08\u73b0\u5c31\u804c\u4e8eFacebook\u516c\u53f8\uff09\u5f00\u53d1\uff0c\u662f\u4e00\u5957\u4f18\u79c0\u7684\u4f5c\u4e3aMySQL\u9ad8\u53ef\u7528\u6027\u73af\u5883\u4e0b\u6545\u969c\u5207\u6362\u548c\u4e3b\u4ece\u63d0\u5347\u7684\u9ad8\u53ef\u7528\u8f6f\u4ef6\u3002\u5728MySQL\u6545\u969c\u5207\u6362\u8fc7\u7a0b\u4e2d\uff0c<strong>MHA\u80fd\u505a\u5230\u572810~30\u79d2\u4e4b\u5185\u81ea\u52a8\u5b8c\u6210\u6570\u636e\u5e93\u7684\u6545\u969c\u5207\u6362\u64cd\u4f5c<\/strong>\uff0c\u5e76\u4e14\u5728\u8fdb\u884c\u6545\u969c\u5207\u6362\u7684\u8fc7\u7a0b\u4e2d\uff0cMHA\u80fd\u5728\u6700\u5927\u7a0b\u5ea6\u4e0a\u4fdd\u8bc1\u6570\u636e\u7684\u4e00\u81f4\u6027\uff0c\u4ee5\u8fbe\u5230\u771f\u6b63\u610f\u4e49\u4e0a\u7684\u9ad8\u53ef\u7528\u3002<br \/>\nMHA\u80fd\u591f\u5728\u8f83\u77ed\u7684\u65f6\u95f4\u5185\u5b9e\u73b0\u81ea\u52a8\u6545\u969c\u68c0\u6d4b\u548c\u6545\u969c\u8f6c\u79fb\uff0c\u901a\u5e38\u572810-30\u79d2\u4ee5\u5185;\u5728\u590d\u5236 \u6846\u67b6\u4e2d\uff0cMHA\u80fd\u591f\u5f88\u597d\u5730\u89e3\u51b3\u590d\u5236\u8fc7\u7a0b\u4e2d\u7684\u6570\u636e\u4e00\u81f4\u6027\u95ee\u9898\uff0c\u7531\u4e8e\u4e0d\u9700\u8981\u5728\u73b0\u6709\u7684 replication\u4e2d\u6dfb\u52a0\u989d\u5916\u7684\u670d\u52a1\u5668\uff0c\u4ec5\u9700\u8981\u4e00\u4e2amanager\u8282\u70b9\uff0c\u800c\u4e00\u4e2aManager\u80fd\u7ba1\u7406\u591a\u5957\u590d\u5236\uff0c\u6240\u4ee5\u80fd\u5927\u5927\u5730\u8282\u7ea6\u670d\u52a1\u5668\u7684\u6570\u91cf;\u53e6\u5916\uff0c\u5b89\u88c5\u7b80\u5355\uff0c\u65e0\u6027\u80fd\u635f\u8017\uff0c\u4ee5\u53ca\u4e0d\u9700\u8981\u4fee\u6539\u73b0 \u6709\u7684\u590d\u5236\u90e8\u7f72\u4e5f\u662f\u5b83\u7684\u4f18\u52bf\u4e4b\u5904\u3002<br \/>\nMHA\u8fd8\u63d0\u4f9b\u5728\u7ebf\u4e3b\u5e93\u5207\u6362\u7684\u529f\u80fd\uff0c\u80fd\u591f\u5b89\u5168\u5730\u5207\u6362\u5f53\u524d\u8fd0\u884c\u7684\u4e3b\u5e93\u5230\u4e00\u4e2a\u65b0\u7684\u4e3b\u5e93\u4e2d (\u901a\u8fc7\u5c06\u4ece\u5e93\u63d0\u5347\u4e3a\u4e3b\u5e93)\uff0c\u5927\u6982<strong>0.5-2\u79d2<\/strong>\u5185\u5373\u53ef\u5b8c\u6210\u3002<br \/>\n\u8be5\u8f6f\u4ef6\u7531\u4e24\u90e8\u5206\u7ec4\u6210\uff1aMHA Manager\uff08\u7ba1\u7406\u8282\u70b9\uff09\u548cMHA Node\uff08\u6570\u636e\u8282\u70b9\uff09\u3002MHA Manager\u53ef\u4ee5\u5355\u72ec\u90e8\u7f72\u5728\u4e00\u53f0\u72ec\u7acb\u7684\u673a\u5668\u4e0a\u7ba1\u7406\u591a\u4e2amaster-slave\u96c6\u7fa4\uff0c\u4e5f\u53ef\u4ee5\u90e8\u7f72\u5728\u4e00\u53f0slave\u8282\u70b9\u4e0a\u3002MHA Node\u8fd0\u884c\u5728\u6bcf\u53f0MySQL\u670d\u52a1\u5668\u4e0a\uff0cMHA Manager\u4f1a\u5b9a\u65f6\u63a2\u6d4b\u96c6\u7fa4\u4e2d\u7684master\u8282\u70b9\uff0c<strong>\u5f53<\/strong><strong>master<\/strong><strong>\u51fa\u73b0\u6545\u969c\u65f6\uff0c\u5b83\u53ef\u4ee5\u81ea\u52a8\u5c06\u6700\u65b0\u6570\u636e\u7684slave<\/strong><strong>\u63d0\u5347\u4e3a\u65b0\u7684master<\/strong><strong>\uff0c\u7136\u540e\u5c06\u6240\u6709\u5176\u4ed6\u7684slave<\/strong><strong>\u91cd\u65b0\u6307\u5411\u65b0\u7684master<\/strong><strong>\u3002<\/strong>\u6574\u4e2a\u6545\u969c\u8f6c\u79fb\u8fc7\u7a0b\u5bf9\u5e94\u7528\u7a0b\u5e8f\u5b8c\u5168\u900f\u660e\u3002<\/p>\n<blockquote><p>\u3000\u3000\u5728MHA\u81ea\u52a8\u6545\u969c\u5207\u6362\u8fc7\u7a0b\u4e2d\uff0cMHA\u8bd5\u56fe\u4ece\u5b95\u673a\u7684\u4e3b\u670d\u52a1\u5668\u4e0a\u4fdd\u5b58\u4e8c\u8fdb\u5236\u65e5\u5fd7\uff0c\u6700\u5927\u7a0b\u5ea6\u7684\u4fdd\u8bc1\u6570\u636e\u7684\u4e0d\u4e22\u5931\uff0c\u4f46\u8fd9\u5e76\u4e0d\u603b\u662f\u53ef\u884c\u7684\u3002\u4f8b\u5982\uff0c\u5982\u679c\u4e3b\u670d\u52a1\u5668\u786c\u4ef6\u6545\u969c\u6216\u65e0\u6cd5\u901a\u8fc7ssh\u8bbf\u95ee\uff0cMHA\u6ca1\u6cd5\u4fdd\u5b58\u4e8c\u8fdb\u5236\u65e5\u5fd7\uff0c\u53ea\u8fdb\u884c\u6545\u969c\u8f6c\u79fb\u800c\u4e22\u5931\u4e86\u6700\u65b0\u7684\u6570\u636e\u3002\u4f7f\u7528MySQL 5.5\u7684\u534a\u540c\u6b65\u590d\u5236\uff0c\u53ef\u4ee5\u5927\u5927\u964d\u4f4e\u6570\u636e\u4e22\u5931\u7684\u98ce\u9669\u3002<br \/>\nMHA\u53ef\u4ee5\u4e0e\u534a\u540c\u6b65\u590d\u5236\u7ed3\u5408\u8d77\u6765\u3002\u5982\u679c\u53ea\u6709\u4e00\u4e2aslave\u5df2\u7ecf\u6536\u5230\u4e86\u6700\u65b0\u7684\u4e8c\u8fdb\u5236\u65e5\u5fd7\uff0cMHA\u53ef\u4ee5\u5c06\u6700\u65b0\u7684\u4e8c\u8fdb\u5236\u65e5\u5fd7\u5e94\u7528\u4e8e\u5176\u4ed6\u6240\u6709\u7684slave\u670d\u52a1\u5668\u4e0a\uff0c\u56e0\u6b64\u53ef\u4ee5\u4fdd\u8bc1\u6240\u6709\u8282\u70b9\u7684\u6570\u636e\u4e00\u81f4\u6027\u3002<br \/>\n\u76ee\u524dMHA\u4e3b\u8981\u652f\u6301\u4e00\u4e3b\u591a\u4ece\u7684\u67b6\u6784\uff0c\u8981\u642d\u5efaMHA,\u8981\u6c42\u4e00\u4e2a\u590d\u5236\u96c6\u7fa4\u4e2d\u5fc5\u987b\u6700\u5c11\u6709\u4e09\u53f0\u6570\u636e\u5e93\u670d\u52a1\u5668\uff0c\u4e00\u4e3b\u4e8c\u4ece\uff0c\u5373\u4e00\u53f0\u5145\u5f53master\uff0c\u4e00\u53f0\u5145\u5f53\u5907\u7528master\uff0c\u53e6\u5916\u4e00\u53f0\u5145\u5f53\u4ece\u5e93\uff0c\u56e0\u4e3a\u81f3\u5c11\u9700\u8981\u4e09\u53f0\u670d\u52a1\u5668\uff0c\u51fa\u4e8e\u673a\u5668\u6210\u672c\u7684\u8003\u8651\uff0c\u6dd8\u5b9d\u4e5f\u5728\u8be5\u57fa\u7840\u4e0a\u8fdb\u884c\u4e86\u6539\u9020\uff0c\u76ee\u524d\u6dd8\u5b9d<em>TMHA<\/em>\u5df2\u7ecf\u652f\u6301\u4e00\u4e3b\u4e00\u4ece\u3002<\/p><\/blockquote>\n<h3><span id=\\\"112_MHA\\\">1.1.2 MHA\u5de5\u4f5c\u539f\u7406<\/span><\/h3>\n<table border=\\\"0\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\n<tbody>\n<tr>\n<td width=\\\"16%\\\">\u00a0<img src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230183859163-214775564.png\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" data-original=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230183859163-214775564.png\\\" \/><\/td>\n<td width=\\\"83%\\\"><strong>\u5de5\u4f5c\u539f\u7406\u8bf4\u660e\uff1a<\/strong><\/p>\n<div>\n<blockquote>\n<p class=\\\"a\\\">\n<div>\n<p class=\\\"a\\\">\u00a0 \u00a01\u3001\u4fdd\u5b58master\u4e0a\u7684\u6240\u6709binlog\u4e8b\u4ef6<\/p>\n<p class=\\\"a\\\">\u00a0\u00a0\u00a0 2\u3001\u627e\u5230\u542b\u6709\u6700\u65b0binlog\u4f4d\u7f6e\u70b9\u7684slave<\/p>\n<p class=\\\"a\\\">\u00a0\u00a0\u00a0 3\u3001\u901a\u8fc7\u4e2d\u7ee7\u65e5\u5fd7\u5c06\u6570\u636e\u6062\u590d\u5230\u5176\u4ed6\u7684slave<\/p>\n<p class=\\\"a\\\">\u00a0\u00a0\u00a0 4\u3001\u5c06\u5305\u542b\u6700\u65b0binlog\u4f4d\u7f6e\u70b9\u7684slave\u63d0\u5347\u4e3amaster<\/p>\n<p class=\\\"a\\\">\u00a0\u00a0\u00a0 5\u3001\u5c06\u5176\u4ed6\u4ece\u5e93slave\u6307\u5411\u65b0\u7684master\u539fslave01 \u5e76\u5f00\u542f\u4e3b\u4ece\u590d\u5236<\/p>\n<p class=\\\"a\\\">\u00a0\u00a0\u00a0 6\u3001\u5c06\u4fdd\u5b58\u4e0b\u6765\u7684binlog\u6062\u590d\u5230\u65b0\u7684master\u4e0a<\/p>\n<\/div>\n<\/blockquote>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>1\u3001\u76d1\u63a7\u6240\u6709node\u8282\u70b9MHA\u529f\u80fd\u8bf4\u660e\uff1a<\/p>\n<div>\n<blockquote>\n<p class=\\\"a4\\\">2\u3001\u81ea\u52a8\u6545\u969c\u5207\u6362(failover)<\/p>\n<p class=\\\"a4\\\">\u00a0 \u00a0 \u00a0\u524d\u63d0\u662f\u5fc5\u987b\u6709\u4e09\u4e2a\u8282\u70b9\u5b58\u5728\uff0c\u5e76\u4e14\u6709\u4e24\u4e2a\u4ece\u5e93<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 \u3000\u3000(1)\u9009\u4e3b\u524d\u63d0\uff0c\u6309\u7167\u914d\u7f6e\u6587\u4ef6\u7684\u987a\u5e8f\u8fdb\u884c\uff0c\u4f46\u662f\u5982\u679c\u6b64\u8282\u70b9\u540e\u4e3b\u5e93100M\u4ee5\u4e0arelay-log \u5c31\u4e0d\u4f1a\u9009<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0\u3000\u3000 (2)\u5982\u679c\u4f60\u8bbe\u7f6e\u4e86\u6743\u91cd\uff0c\u603b\u4f1a\u5207\u6362\u5e26\u6b64\u8282\u70b9\uff1b\u4e00\u822c\u5728\u591a\u5730\u591a\u4e2d\u5fc3\u7684\u60c5\u51b5\u4e0b\uff0c\u4e00\u822c\u4f1a\u628a\u6743\u91cd\u8bbe\u7f6e\u5728\u672c\u5730\u8282\u70b9\u3002<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 \u3000\u3000(3)\u9009\u62e9s1\u4e3a\u65b0\u4e3b<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 \u3000\u3000(4)\u4fdd\u5b58\u4e3b\u5e93binlog\u65e5\u5fd7<\/p>\n<p class=\\\"a4\\\">3\u3001\u91cd\u65b0\u6784\u5efa\u4e3b\u4ece<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 \u3000\u3000(1)\u5c06\u6709\u95ee\u9898\u7684\u8282\u70b9\u5254\u9664MHA<\/p>\n<p class=\\\"a4\\\">\u00a0 \u00a0 \u00a0\u3000\u3000\u3000\u3000 \u8fdb\u884c\u7b2c\u4e00\u9636\u6bb5\u6570\u636e\u8865\u507f\uff0cS2\u7f3a\u5931\u90e8\u5206\u8865\u516890<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0\u3000\u3000 (2)s1\u5207\u6362\u89d2\u8272\u4e3a\u65b0\u4e3b\uff0c\u5c06s2\u6307\u5411\u65b0\u4e3bS1<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u3000\u3000\u3000\u3000\u00a0 s2\u00a0 change master to s1<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0\u3000\u3000 (3) \u7b2c\u4e8c\u9636\u6bb5\u6570\u636e\u8865\u507f<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0\u00a0\u3000\u3000\u3000\u3000\u00a0\u00a0\u00a0 \u5c06\u4fdd\u5b58\u8fc7\u6765\u7684\u65b0\u4e3b\u548c\u539f\u6709\u4e3b\u7f3a\u5931\u90e8\u5206\u7684binlog\uff0c\u5e94\u7528\u5230\u65b0\u4e3b\u3002<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 \u3000\u3000(4)\u865a\u62dfIP\u6f02\u79fb\u5230\u65b0\u4e3b\uff0c\u5bf9\u5e94\u7528\u900f\u660e\u65e0\u611f\u77e5<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u3000\u3000\u00a0 (5)\u901a\u77e5\u7ba1\u7406\u5458\u6545\u969c\u5207\u6362<\/p>\n<\/blockquote>\n<\/div>\n<h3><span id=\\\"113_MHA\\\">1.1.3 MHA\u9ad8\u53ef\u7528\u67b6\u6784\u56fe<\/span><\/h3>\n<p align=\\\"center\\\"><img src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230163330179-1146202670.png\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" data-original=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230163330179-1146202670.png\\\" \/><\/p>\n<h3><span id=\\\"114_MHA\\\">1.1.4 MHA\u5de5\u5177\u4ecb\u7ecd<\/span><\/h3>\n<p>MHA\u8f6f\u4ef6\u7531\u4e24\u90e8\u5206\u7ec4\u6210\uff0cManager\u5de5\u5177\u5305\u548cNode\u5de5\u5177\u5305\uff0c\u5177\u4f53\u7684\u8bf4\u660e\u5982\u4e0b:<br \/>\nManager\u5de5\u5177\u5305\u4e3b\u8981\u5305\u62ec\u4ee5\u4e0b\u51e0\u4e2a\u5de5\u5177\uff1a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>masterha_check_ssh             #\u68c0\u67fb MHA \u7684 ssh-key^\nmasterha_check_repl            #\u68c0\u67fb\u4e3b\u4ece\u590d\u5236\u60c5\u51b5\nmasterha_manger                #\u542f\u52a8MHA\nmasterha_check_status          #\u68c0\u6d4bMHA\u7684\u8fd0\u884c\u72b6\u6001^\nmasterha_mast er_monitor       #\u68c0\u6d4bmaster\u662f\u5426\u5b95\u673a\u4e00\nmasterha_mast er_switch        #\u624b\u52a8\u6545\u969c\u8f6c\u79fb\u2014\nmasterha_conf_host             #\u624b\u52a8\u6dfb\u52a0server\u500d\u606f\u4e00\nmasterha_secondary_check       #\u5efa\u7acbTCP\u8fde\u63a5\u4ece\u8fdc\u7a0b\u670d\u52a1\u5668v\nmasterha_stop                  #\u505c\u6b62MHA<\/pre>\n<\/div>\n<\/div>\n<p>Node\u5de5\u5177\u5305\u4e3b\u8981\u5305\u62ec\u4ee5\u4e0b\u51e0\u4e2a\u5de5\u5177\uff1a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>save_binary_1ogs       #\u4fdd\u5b58\u5b95\u673a\u7684master\u7684binlog\napply_diff_relay_logs   #\u8bc6\u522brelay log\u7684\u5dee\u5f02\nfilter_mysqlbinlog           #\u9632\u6b62\u56de\u6eda\u4e8b\u4ef6\u4e00MHA\u5df2\u4e0d\u518d\u4f7f\u7528\u8fd9\u4e2a\u5de5\u5177\npurge_relay_logs           #\u6e05\u9664\u4e2d\u7ee7\u66f0\u5fd7\u4e00\u4e0d\u4f1a\u963b\u585eSQL\u7ebf\u7a0b<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"115_MHA\\\">1.1.5 MHA\u7684\u4f18\u70b9<\/span><\/h3>\n<blockquote><p>1\u3001\u81ea\u52a8\u6545\u969c\u8f6c\u79fb<br \/>\n2\u3001\u4e3b\u5e93\u5d29\u6e83\u4e0d\u5b58\u5728\u6570\u636e\u4e0d\u4e00\u81f4\u7684\u60c5\u51b5<br \/>\n3\u3001\u4e0d\u9700\u8981\u5bf9\u5f53\u524d\u7684mysql\u73af\u5883\u505a\u91cd\u5927\u4fee\u6539<br \/>\n4\u3001\u4e0d\u9700\u8981\u6dfb\u52a0\u989d\u5916\u7684\u670d\u52a1\u5668<br \/>\n5\u3001\u6027\u80fd\u4f18\u79c0\uff0c\u53ef\u4ee5\u5de5\u4f5c\u518d\u534a\u540c\u6b65\u548c\u5f02\u6b65\u590d\u5236\u6846\u67b6<br \/>\n6\u3001\u53ea\u8981replication\u652f\u6301\u7684\u5b58\u50a8\u5f15\u64cemha\u90fd\u652f\u6301<\/p><\/blockquote>\n<h2><span id=\\\"12\\\">1.2 \u73af\u5883\u8bf4\u660e<\/span><\/h2>\n<p>\u5728\u672c\u6b21\u7684\u5b9e\u9a8c\u4e2d\uff0c\u5171\u9700\u8981\u7528\u5230\u4e09\u53f0\u4e3b\u673a\uff0c\u7cfb\u7edf\u3001\u8f6f\u4ef6\u8bf4\u660e\u5982\u4e0b\u3002<\/p>\n<h3><span id=\\\"121\\\">1.2.1 \u7cfb\u7edf\u73af\u5883\u8bf4\u660e<\/span><\/h3>\n<p>db01\u4e3b\u673a\uff08master\uff09<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db01 ~]# cat \/etc\/redhat-release\nCentOS release 6.9 (Final)\n[root@db01 ~]# uname -r\n2.6.32-696.el6.x86_64\n[root@db01 ~]# \/etc\/init.d\/iptables status\niptables: Firewall is not running.\n[root@db01 ~]# getenforce\nDisabled\n[root@db01 ~]# hostname -I\n10.0.0.51 172.16.1.51<\/pre>\n<\/div>\n<\/div>\n<p>db02\u4e3b\u673a\uff08slave1\uff09<\/p>\n<div class=\\\"cnblogs_code\\\"><img id=\\\"code_img_closed_806b5b64-590d-4295-80a9-3d194005bc43\\\" class=\\\"code_img_closed\\\" src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/ContractedBlock-4.gif\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" \/><\/p>\n<div id=\\\"cnblogs_code_open_806b5b64-590d-4295-80a9-3d194005bc43\\\" class=\\\"cnblogs_code_hide\\\">\n<pre> 1 [root@db02 ~]# cat \/etc\/redhat-release\n 2 CentOS release 6.9 (Final)\n 3 [root@db02 ~]# uname -r\n 4 2.6.32-696.el6.x86_64\n 5 [root@db02 ~]# \/etc\/init.d\/iptables status\n 6 iptables: Firewall is not running.\n 7 [root@db02 ~]# getenforce\n 8 Disabled\n 9 [root@db02 ~]# hostname -I\n10 10.0.0.52 172.16.1.52<\/pre>\n<\/div>\n<p><span class=\\\"cnblogs_code_collapse\\\">View Code\u00a0db02\u4e3b\u673a\u73af\u5883\u8bf4\u660e\u00a0<\/span>\n<\/div>\n<p>db03\u4e3b\u673a\uff08slave1\uff0cMHA Manages\u3001Atlas\u8282\u70b9\uff09<\/p>\n<div class=\\\"cnblogs_code\\\"><img id=\\\"code_img_closed_128d5d81-bb1c-4450-8822-1ca59acbfcb4\\\" class=\\\"code_img_closed\\\" src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/ContractedBlock-4.gif\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" \/><\/p>\n<div id=\\\"cnblogs_code_open_128d5d81-bb1c-4450-8822-1ca59acbfcb4\\\" class=\\\"cnblogs_code_hide\\\">\n<pre> 1 [root@db03 ~]# cat \/etc\/redhat-release\n 2 CentOS release 6.9 (Final)\n 3 [root@db03 ~]# uname -r\n 4 2.6.32-696.el6.x86_64\n 5 [root@db03 ~]# \/etc\/init.d\/iptables status\n 6 iptables: Firewall is not running.\n 7 [root@db03 ~]# getenforce\n 8 Disabled\n 9 [root@db03 ~]# hostname -I\n10 10.0.0.53 172.16.1.53<\/pre>\n<\/div>\n<p><span class=\\\"cnblogs_code_collapse\\\">View Code\u00a0\u00a0db03\u4e3b\u673a\u73af\u5883\u8bf4\u660e\u00a0<\/span>\n<\/div>\n<h3><span id=\\\"122_mysql\\\">1.2.2 mysql\u8f6f\u4ef6\u8bf4\u660e<\/span><\/h3>\n<p>\u4e09\u53f0\u670d\u52a1\u5668\u4e0a\u90fd\u5168\u65b0\u5b89\u88c5mysql 5.6.36 \uff1a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db01 ~]# mysql --version\nmysql  Ver 14.14 Distrib 5.6.36, for Linux (x86_64) using  EditLine wrapper<\/pre>\n<\/div>\n<p>\u5173\u4e8emysql\u6570\u636e\u5e93\u5177\u4f53\u7684\u5b89\u88c5\u65b9\u6cd5\u53c2\u8003\uff1a<a href=\\\"https:\/\/clsn.io\/wp-content\/themes\/clsn-003\/inc\/go.php?url=http:\/\/www.cnblogs.com\/clsn\/p\/8038964.html#_label3\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\">http:\/\/www.cnblogs.com\/clsn\/p\/8038964.html#_label3<i class=\\\"be be-anchor\\\"><\/i><\/a>\n<\/div>\n<h2><span id=\\\"13_GTID\\\">1.3 \u57fa\u4e8eGTID\u7684\u4e3b\u4ece\u590d\u5236\u914d\u7f6e<\/span><\/h2>\n<h3><span id=\\\"131\\\">1.3.1 \u5148\u51b3\u6761\u4ef6<\/span><\/h3>\n<p>? \u4e3b\u5e93\u548c\u4ece\u5e93\u90fd\u8981\u5f00\u542fbinlog<br \/>\n?\u00a0\u4e3b\u5e93\u548c\u4ece\u5e93server-id\u5fc5\u987b\u4e0d\u540c<br \/>\n?\u00a0\u8981\u6709\u4e3b\u4ece\u590d\u5236\u7528\u6237<\/p>\n<h3><span id=\\\"132\\\">1.3.2 \u914d\u7f6e\u4e3b\u4ece\u590d\u5236<\/span><\/h3>\n<p><strong>db01 my.cnf<\/strong><strong>\u6587\u4ef6<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db01 ~]# cat \/etc\/my.cnf\n[mysqld]\nbasedir=\/application\/mysql\ndatadir=\/application\/mysql\/data\nsocket=\/tmp\/mysql.sock\nlog-error=\/var\/log\/mysql.log\nlog-bin=\/data\/mysql\/mysql-bin\nbinlog_format=row\nsecure-file-priv=\/tmp\nserver-id=51\nskip-name-resolve  # \u8df3\u8fc7\u57df\u540d\u89e3\u6790\ngtid-mode=on    # \u542f\u7528gtid\u7c7b\u578b\uff0c\u5426\u5219\u5c31\u662f\u666e\u901a\u7684\u590d\u5236\u67b6\u6784\nenforce-gtid-consistency=true    #\u5f3a\u5236GTID\u7684\u4e00\u81f4\u6027\nlog-slave-updates=1     # slave\u66f4\u65b0\u662f\u5426\u8bb0\u5165\u65e5\u5fd7\uff085.6\u5fc5\u987b\u7684\uff09\nrelay_log_purge = 0\n[mysql]\nsocket=\/tmp\/mysql.sock<\/pre>\n<\/div>\n<\/div>\n<p><strong>db02 my.cnf<\/strong><strong>\u6587\u4ef6<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\"><img id=\\\"code_img_closed_c5a0cfe9-93a3-44b6-ab18-bdcd7a33e080\\\" class=\\\"code_img_closed\\\" src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/ContractedBlock-4.gif\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" \/><\/p>\n<div id=\\\"cnblogs_code_open_c5a0cfe9-93a3-44b6-ab18-bdcd7a33e080\\\" class=\\\"cnblogs_code_hide\\\">\n<pre> 1 [root@db02 ~]# cat \/etc\/my.cnf\n 2 [mysqld]\n 3 basedir=\/application\/mysql\n 4 datadir=\/application\/mysql\/data\n 5 socket=\/tmp\/mysql.sock\n 6 log-error=\/var\/log\/mysql.log\n 7 log-bin=\/data\/mysql\/mysql-bin\n 8 binlog_format=row\n 9 secure-file-priv=\/tmp\n10 server-id=52\n11 skip-name-resolve\n12 gtid-mode=on\n13 enforce-gtid-consistency=true\n14 log-slave-updates=1\n15 relay_log_purge = 0\n16 [mysql]\n17 socket=\/tmp\/mysql.sock<\/pre>\n<\/div>\n<p><span class=\\\"cnblogs_code_collapse\\\">View Code\u00a0<strong>db02 my.cnf<\/strong><strong>\u6587\u4ef6<\/strong>\u00a0<\/span>\n<\/div>\n<\/div>\n<p><strong>db03 my.cnf<\/strong><strong>\u6587\u4ef6<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\"><img id=\\\"code_img_closed_c4a71fe7-ce23-4df3-8dc3-c688a7def1b6\\\" class=\\\"code_img_closed\\\" src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/ContractedBlock-4.gif\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" \/><\/p>\n<div id=\\\"cnblogs_code_open_c4a71fe7-ce23-4df3-8dc3-c688a7def1b6\\\" class=\\\"cnblogs_code_hide\\\">\n<pre> 1 [root@db03 ~]# cat \/etc\/my.cnf\n 2 [mysqld]\n 3 basedir=\/application\/mysql\n 4 datadir=\/application\/mysql\/data\n 5 socket=\/tmp\/mysql.sock\n 6 log-error=\/var\/log\/mysql.log\n 7 log-bin=\/data\/mysql\/mysql-bin\n 8 binlog_format=row\n 9 secure-file-priv=\/tmp\n10 server-id=53\n11 skip-name-resolve\n12 gtid-mode=on\n13 enforce-gtid-consistency=true\n14 log-slave-updates=1\n15 relay_log_purge = 0\n16 skip-name-resolve\n17 [mysql]\n18 socket=\/tmp\/mysql.sock<\/pre>\n<\/div>\n<p><span class=\\\"cnblogs_code_collapse\\\">View Code db03 my.cnf\u6587\u4ef6<\/span>\n<\/div>\n<\/div>\n<p>\u521b\u5efa\u590d\u5236\u7528\u6237 (51\u4f5c\u4e3a\u4e3b\u8282\u70b9\uff0c52\u300153\u4e3a\u4ece)<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>GRANT REPLICATION SLAVE ON *.* TO repl@\\'10.0.0.%\\' IDENTIFIED BY \\'123\\';<\/pre>\n<\/div>\n<\/div>\n<p>\u4ece\u5e93\u5f00\u542f\u590d\u5236<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>change master to\n    master_host=\\'10.0.0.51\\',\n    master_user=\\'repl\\',\n    master_password=\\'123\\',\n    MASTER_AUTO_POSITION=1;<\/pre>\n<\/div>\n<\/div>\n<p>\u542f\u52a8\u4ece\u5e93\u590d\u5236<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>start slave;<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"133_GTID\\\">1.3.3 GTID\u590d\u5236\u6280\u672f\u8bf4\u660e<\/span><\/h3>\n<p><strong>MySQL GTID<\/strong><strong>\u7b80\u4ecb<\/strong><br \/>\nGTID\u7684\u5168\u79f0\u4e3a global transaction identifier \uff0c\u53ef\u4ee5\u7ffb\u8bd1\u4e3a\u5168\u5c40\u4e8b\u52a1\u6807\u793a\u7b26\uff0cGTID\u5728\u539f\u59cbmaster\u4e0a\u7684\u4e8b\u52a1\u63d0\u4ea4\u65f6\u88ab\u521b\u5efa\u3002GTID\u9700\u8981\u5728\u5168\u5c40\u7684\u4e3b-\u5907\u62d3\u6251\u7ed3\u6784\u4e2d\u4fdd\u6301\u552f\u4e00\u6027\uff0cGTID\u7531\u4e24\u90e8\u5206\u7ec4\u6210\uff1a<br \/>\n<span class=\\\"cnblogs_code\\\">GTID\u00a0=\u00a0source_id:transaction_id<\/span><br \/>\n<strong>source_id<\/strong>\u7528\u4e8e\u6807\u793a\u6e90\u670d\u52a1\u5668\uff0c\u7528server_uuid\u6765\u8868\u793a\uff0c\u8fd9\u4e2a\u503c\u5728\u7b2c\u4e00\u6b21\u542f\u52a8\u65f6\u751f\u6210\uff0c\u5e76\u5199\u5165\u5230\u914d\u7f6e\u6587\u4ef6data\/auto.cnf\u4e2d<br \/>\n<strong>transaction_id<\/strong>\u5219\u662f\u6839\u636e\u5728\u6e90\u670d\u52a1\u5668\u4e0a\u7b2c\u51e0\u4e2a\u63d0\u4ea4\u7684\u4e8b\u52a1\u6765\u786e\u5b9a\u3002<br \/>\n<em>GTID<\/em><em>\u4e8b\u4ef6\u7ed3\u6784<\/em><\/p>\n<p align=\\\"center\\\">\u00a0<img src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230164153273-855151708.png\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" data-original=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230164153273-855151708.png\\\" \/><\/p>\n<p><em>GTID<\/em><em>\u5728\u4e8c\u8fdb\u5236\u65e5\u5fd7\u4e2d\u7684\u7ed3\u6784<\/em><\/p>\n<p align=\\\"center\\\">\u00a0<img src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230164337492-336799988.png\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" data-original=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230164337492-336799988.png\\\" \/>4<\/p>\n<p><strong><em>\u4e00\u4e2aGTID<\/em><\/strong><strong><em>\u7684\u751f\u547d\u5468\u671f\u5305\u62ec\uff1a<\/em><\/strong><\/p>\n<div>\n<blockquote>\n<p class=\\\"a4\\\">1.\u4e8b\u52a1\u5728\u4e3b\u5e93\u4e0a\u6267\u884c\u5e76\u63d0\u4ea4\u7ed9\u4e8b\u52a1\u5206\u914d\u4e00\u4e2agtid\uff08\u7531\u4e3b\u5e93\u7684uuid\u548c\u8be5\u670d\u52a1\u5668\u4e0a\u672a\u4f7f\u7528\u7684\u6700\u5c0f\u4e8b\u52a1\u5e8f\u5217\u53f7\uff09\uff0c\u8be5GTID\u88ab\u5199\u5165\u5230binlog\u4e2d\u3002<\/p>\n<p class=\\\"a4\\\">2.\u5907\u5e93\u8bfb\u53d6relaylog\u4e2d\u7684gtid\uff0c\u5e76\u8bbe\u7f6esession\u7ea7\u522b\u7684gtid_next\u7684\u503c\uff0c\u4ee5\u544a\u8bc9\u5907\u5e93\u4e0b\u4e00\u4e2a\u4e8b\u52a1\u5fc5\u987b\u4f7f\u7528\u8fd9\u4e2a\u503c<\/p>\n<p class=\\\"a4\\\">3.\u5907\u5e93\u68c0\u67e5\u8be5gtid\u662f\u5426\u5df2\u7ecf\u88ab\u5176\u4f7f\u7528\u5e76\u8bb0\u5f55\u5230\u4ed6\u81ea\u5df1\u7684binlog\u4e2d\u3002slave\u9700\u8981\u62c5\u4fdd\u4e4b\u524d\u7684\u4e8b\u52a1\u6ca1\u6709\u4f7f\u7528\u8fd9\u4e2agtid\uff0c\u4e5f\u8981\u62c5\u4fdd\u6b64\u65f6\u5df2\u5206\u8bfb\u53d6gtid\uff0c\u4f46\u672a\u63d0\u4ea4\u7684\u4e8b\u52a1\u4e5f\u4e0d\u6069\u5462\u8fc7\u4f7f\u7528\u8fd9\u4e2agtid.<\/p>\n<p class=\\\"a4\\\">4.\u7531\u4e8egtid_next\u975e\u7a7a\uff0cslave\u4e0d\u4f1a\u53bb\u751f\u6210\u4e00\u4e2a\u65b0\u7684gtid\uff0c\u800c\u662f\u4f7f\u7528\u4ece\u4e3b\u5e93\u83b7\u5f97\u7684gtid\u3002\u8fd9\u53ef\u4ee5\u4fdd\u8bc1\u5728\u4e00\u4e2a\u590d\u5236\u62d3\u6251\u4e2d\u7684\u540c\u4e00\u4e2a\u4e8b\u52a1gtid\u4e0d\u53d8\u3002\u7531\u4e8eGTID\u5728\u5168\u5c40\u7684\u552f\u4e00\u6027\uff0c\u901a\u8fc7GTID\uff0c\u6211\u4eec\u53ef\u4ee5\u5728\u81ea\u52a8\u5207\u6362\u65f6\u5bf9\u4e00\u4e9b\u590d\u6742\u7684\u590d\u5236\u62d3\u6251\u5f88\u65b9\u4fbf\u7684\u63d0\u5347\u65b0\u4e3b\u5e93\u53ca\u65b0\u5907\u5e93\uff0c\u4f8b\u5982\u901a\u8fc7\u6307\u5411\u7279\u5b9a\u7684GTID\u6765\u786e\u5b9a\u65b0\u5907\u5e93\u590d\u5236\u5750\u6807\u3002<\/p>\n<\/blockquote>\n<\/div>\n<p>GTID\u662f\u7528\u6765\u66ff\u4ee3\u4ee5\u524dclassic\u7684\u590d\u5236\u65b9\u6cd5\uff1b<br \/>\nMySQL5.6.2\u652f\u6301 MySQL5.6.10\u540e\u5b8c\u5584\uff1b<br \/>\n<strong>GTID<\/strong><strong>\u76f8\u6bd4\u4f20\u7edf\u590d\u5236\u7684\u4f18\u70b9\uff1a<\/strong><\/p>\n<blockquote><p>1.\u4e00\u4e2a\u4e8b\u52a1\u5bf9\u5e94\u4e00\u4e2a\u552f\u4e00ID\uff0c\u4e00\u4e2aGTID\u5728\u4e00\u4e2a\u670d\u52a1\u5668\u4e0a\u53ea\u4f1a\u6267\u884c\u4e00\u6b21<br \/>\n2.GTID\u662f\u7528\u6765\u4ee3\u66ff\u4f20\u7edf\u590d\u5236\u7684\u65b9\u6cd5\uff0cGTID\u590d\u5236\u4e0e\u666e\u901a\u590d\u5236\u6a21\u5f0f\u7684\u6700\u5927\u4e0d\u540c\u5c31\u662f\u4e0d\u9700\u8981\u6307\u5b9a\u4e8c\u8fdb\u5236\u6587\u4ef6\u540d\u548c\u4f4d\u7f6e<br \/>\n3.\u51cf\u5c11\u624b\u5de5\u5e72\u9884\u548c\u964d\u4f4e\u670d\u52a1\u6545\u969c\u65f6\u95f4\uff0c\u5f53\u4e3b\u673a\u6302\u4e86\u4e4b\u540e\u901a\u8fc7\u8f6f\u4ef6\u4ece\u4f17\u591a\u7684\u5907\u673a\u4e2d\u63d0\u5347\u4e00\u53f0\u5907\u673a\u4e3a\u4e3b\u673a<\/p><\/blockquote>\n<p><strong>GTID<\/strong><strong>\u7684\u9650\u5236\uff1a<\/strong><\/p>\n<div>\n<blockquote>\n<p class=\\\"a4\\\">1.\u4e0d\u652f\u6301\u975e\u4e8b\u52a1\u5f15\u64ce<\/p>\n<p class=\\\"a4\\\">2.\u4e0d\u652f\u6301create table &#8230; select \u8bed\u53e5\u590d\u5236(\u4e3b\u5e93\u76f4\u63a5\u62a5\u9519)<\/p>\n<p class=\\\"a4\\\">\u3000\u3000\u539f\u7406\uff1a\uff08 \u4f1a\u751f\u6210\u4e24\u4e2asql\uff0c\u4e00\u4e2a\u662fDDL\u521b\u5efa\u8868SQL\uff0c\u4e00\u4e2a\u662finsert into \u63d2\u5165\u6570\u636e\u7684sql\u3002<\/p>\n<p class=\\\"a4\\\">\u3000\u3000\u7531\u4e8eDDL\u4f1a\u5bfc\u81f4\u81ea\u52a8\u63d0\u4ea4\uff0c\u6240\u4ee5\u8fd9\u4e2asql\u81f3\u5c11\u9700\u8981\u4e24\u4e2aGTID\uff0c\u4f46\u662fGTID\u6a21\u5f0f\u4e0b\uff0c\u53ea\u80fd\u7ed9\u8fd9\u4e2asql\u751f\u6210\u4e00\u4e2aGTID \uff09<\/p>\n<p class=\\\"a4\\\">3.\u4e0d\u5141\u8bb8\u4e00\u4e2aSQL\u540c\u65f6\u66f4\u65b0\u4e00\u4e2a\u4e8b\u52a1\u5f15\u64ce\u8868\u548c\u975e\u4e8b\u52a1\u5f15\u64ce\u8868<\/p>\n<p class=\\\"a4\\\">4.\u5728\u4e00\u4e2a\u590d\u5236\u7ec4\u4e2d\uff0c\u5fc5\u987b\u8981\u6c42\u7edf\u4e00\u5f00\u542fGTID\u6216\u8005\u662f\u5173\u95edGTID<\/p>\n<p class=\\\"a4\\\">5.\u5f00\u542fGTID\u9700\u8981\u91cd\u542f\uff085.7\u9664\u5916\uff09<\/p>\n<p class=\\\"a4\\\">6.\u5f00\u542fGTID\u540e\uff0c\u5c31\u4e0d\u518d\u4f7f\u7528\u539f\u6765\u7684\u4f20\u7edf\u590d\u5236\u65b9\u5f0f<\/p>\n<p class=\\\"a4\\\">7.\u5bf9\u4e8ecreate temporary table \u548c drop temporary table\u8bed\u53e5\u4e0d\u652f\u6301<\/p>\n<p class=\\\"a4\\\">8.\u4e0d\u652f\u6301sql_slave_skip_counter<\/p>\n<\/blockquote>\n<\/div>\n<h3><span id=\\\"134_COM_BINLOG_DUMP_GTID\\\">1.3.4 COM_BINLOG_DUMP_GTID<\/span><\/h3>\n<p>\u4ece\u673a\u53d1\u9001\u5230\u4e3b\u673a\u6267\u884c\u7684\u4e8b\u52a1\u7684\u6807\u8bc6\u7b26\u7684\u4e3b\u8303\u56f4<br \/>\n<span class=\\\"cnblogs_code\\\">Master send all other transactions to slave<\/span><br \/>\n\u540c\u6837\u7684GTID\u4e0d\u80fd\u88ab\u6267\u884c\u4e24\u6b21\uff0c\u5982\u679c\u6709\u540c\u6837\u7684GTID\uff0c\u4f1a\u81ea\u52a8\u88abskip\u6389\u3002<\/p>\n<p align=\\\"center\\\"><img src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230172535945-1927730298.png\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" data-original=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230172535945-1927730298.png\\\" \/><\/p>\n<p>\u3000\u3000slave1\uff1a\u5c06\u81ea\u5df1\u7684UUID1\uff1a1\u53d1\u9001\u7ed9master\uff0c\u7136\u540e\u63a5\u6536\u5230\u4e86UUID1\uff1a2\uff0cUUID1\uff1a3 event<br \/>\nslave2\uff1a\u5c06\u81ea\u5df1\u7684UUID1\uff1a1\uff0cUUID1\uff1a2\u53d1\u9001\u7ed9master\uff0c\u7136\u540e\u63a5\u6536\u5230\u4e86UUID1\uff1a3\u4e8b\u4ef6<br \/>\n<strong>GTID<\/strong><strong>\u7ec4\u6210<\/strong><br \/>\nGTID\u5b9e\u9645\u4e0a\u662f\u7531UUID+TID\u7ec4\u6210\u7684\u3002\u5176\u4e2dUUID\u662f\u4e00\u4e2aMySQL\u5b9e\u4f8b\u7684\u552f\u4e00\u6807\u8bc6\u3002TID\u4ee3\u8868\u4e86\u8be5\u5b9e\u4f8b\u4e0a\u5df2\u7ecf\u63d0\u4ea4\u7684\u4e8b\u52a1\u6570\u91cf\uff0c\u5e76\u4e14\u968f\u7740\u4e8b\u52a1\u63d0\u4ea4\u5355\u8c03\u9012\u589e<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>GTID = source_id \uff1atransaction_id\n7E11FA47-31CA-19E1-9E56-C43AA21293967:29<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"135_MySQL_GTID\\\">1.3.5 \u3010\u793a\u4f8b\u4e8c\u3011MySQL GTID\u590d\u5236\u914d\u7f6e<\/span><\/h3>\n<p>\u4e3b\u8282\u70b9my.cnf\u6587\u4ef6<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre># vi \/etc\/my.cnf\n[mysqld]\nbasedir=\/usr\/local\/mysql\ndatadir=\/data\/mysql\nserver-id=1\nlog-bin=mysql-bin\nsocket=\/tmp\/mysql.sock\nbinlog-format=ROW\ngtid-mode=on\nenforce-gtid-consistency=true\nlog-slave-updates=1<\/pre>\n<\/div>\n<\/div>\n<p>\u4ece\u8282\u70b9my.cnf\u6587\u4ef6<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre># vi \/etc\/my.cnf\n[mysqld]\nbasedir=\/usr\/local\/mysql\ndatadir=\/data\/mysql\nserver-id=2\nbinlog-format=ROW\ngtid-mode=on\nenforce-gtid-consistency=true\nlog-bin=mysql-bin\nlog_slave_updates = 1\nsocket=\/tmp\/mysql.sock<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u914d\u7f6e\u6587\u4ef6\u6ce8\u89e3<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>server-id=x                    # \u540c\u4e00\u4e2a\u590d\u5236\u62d3\u6251\u4e2d\u7684\u6240\u6709\u670d\u52a1\u5668\u7684id\u53f7\u5fc5\u987b\u60df\u4e00\nbinlog-format=RO               # \u4e8c\u8fdb\u5236\u65e5\u5fd7\u683c\u5f0f\uff0c\u5f3a\u70c8\u5efa\u8bae\u4e3aROW\ngtid-mode=on                   # \u542f\u7528gtid\u7c7b\u578b\uff0c\u5426\u5219\u5c31\u662f\u666e\u901a\u7684\u590d\u5236\u67b6\u6784\nenforce-gtid-consistency=true  # \u5f3a\u5236GTID\u7684\u4e00\u81f4\u6027\nlog-slave-updates=1            # slave\u66f4\u65b0\u662f\u5426\u8bb0\u5165\u65e5\u5fd7<\/pre>\n<\/div>\n<\/div>\n<p>\u590d\u5236\u7528\u6237\u51c6\u5907\uff08Master\u4e3b\u8282\u70b9\uff09<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt;GRANT REPLICATION SLAVE ON *.* TO rep@\\'10.0.0.%\\' IDENTIFIED BY \\'123\\';<\/pre>\n<\/div>\n<p>\u5f00\u542f\u590d\u5236\uff08Slave\u4ece\u8282\u70b9\uff09\n<\/p><\/div>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt;start slave;\nmysql&gt;show slave status\\\\G<\/pre>\n<\/div>\n<p>\u73b0\u5728\u5c31\u53ef\u4ee5\u8fdb\u884c\u4e3b\u4ece\u590d\u5236\u6d4b\u8bd5\u3002\n<\/p><\/div>\n<h2><span id=\\\"14_MHA\\\">1.4 \u90e8\u7f72MHA<\/span><\/h2>\n<p>\u672c\u6b21MHA\u7684\u90e8\u7f72\u57fa\u4e8eGTID\u590d\u5236\u6210\u529f\u6784\u5efa\uff0c\u666e\u901a\u4e3b\u4ece\u590d\u5236\u4e5f\u53ef\u4ee5\u6784\u5efaMHA\u67b6\u6784\u3002<\/p>\n<h3><span id=\\\"141\\\">1.4.1 \u73af\u5883\u51c6\u5907\uff08\u6240\u6709\u8282\u70b9\u64cd\u4f5c\uff09<\/span><\/h3>\n<p><strong>\u5b89\u88c5\u4f9d\u8d56\u5305<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>yum install perl-DBD-MySQL -y<\/pre>\n<\/div>\n<p>\u4e0b\u8f7dmha\u8f6f\u4ef6\uff0cmha\u5b98\u7f51\uff1a<a href=\\\"https:\/\/clsn.io\/wp-content\/themes\/clsn-003\/inc\/go.php?url=https:\/\/code.google.com\/archive\/p\/mysql-master-ha\/\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\">https:\/\/code.google.com\/archive\/p\/mysql-master-ha\/<i class=\\\"be be-anchor\\\"><\/i><\/a>\n<\/div>\n<p>github\u4e0b\u8f7d\u5730\u5740\uff1a<a href=\\\"https:\/\/clsn.io\/wp-content\/themes\/clsn-003\/inc\/go.php?url=https:\/\/github.com\/yoshinorim\/mha4mysql-manager\/wiki\/Downloads\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\">https:\/\/github.com\/yoshinorim\/mha4mysql-manager\/wiki\/Downloads<i class=\\\"be be-anchor\\\"><\/i><\/a><br \/>\n<strong><em>\u4e0b\u8f7d\u8f6f\u4ef6\u5305<\/em><\/strong><\/p>\n<div>\n<blockquote>\n<p class=\\\"ad\\\">mha4mysql-manager-0.56-0.el6.noarch.rpm<\/p>\n<p class=\\\"ad\\\">mha4mysql-manager-0.56.tar.gz<\/p>\n<p class=\\\"ad\\\">mha4mysql-node-0.56-0.el6.noarch.rpm<\/p>\n<p class=\\\"ad\\\">mha4mysql-node-0.56.tar.gz<\/p>\n<\/blockquote>\n<\/div>\n<p><em><strong>\u5728\u6240\u6709\u8282\u70b9\u5b89\u88c5node<\/strong><\/em><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm<\/pre>\n<\/div>\n<\/div>\n<p>\u521b\u5efamha\u7ba1\u7406\u7528\u6237<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>grant all privileges on *.* to mha@\\'10.0.0.%\\' identified by \\'mha\\';<\/pre>\n<\/div>\n<p class=\\\"ad\\\"># \u4e3b\u5e93\u4e0a\u521b\u5efa\uff0c\u4ece\u5e93\u4f1a\u81ea\u52a8\u590d\u5236\uff08\u5728\u4ece\u5e93\u4e0a\u67e5\u770b\uff09<\/p>\n<\/div>\n<p>\u521b\u5efa\u547d\u4ee4\u8f6f\u8fde\u63a5<strong>\uff08\u91cd\u8981\uff09<\/strong><\/p>\n<div>\n<p class=\\\"ad\\\">\u3000\u3000\u5982\u679c\u4e0d\u521b\u5efa\u547d\u4ee4\u8f6f\u8fde\u63a5\uff0c\u68c0\u6d4bmha\u590d\u5236\u60c5\u51b5\u7684\u65f6\u5019\u4f1a\u62a5\u9519<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>ln -s \/application\/mysql\/bin\/mysqlbinlog \/usr\/bin\/mysqlbinlog\nln -s \/application\/mysql\/bin\/mysql \/usr\/bin\/mysql<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"142_mha-manager\\\">1.4.2 \u90e8\u7f72\u7ba1\u7406\u8282\u70b9\uff08mha-manager\uff09<\/span><\/h3>\n<p>\u5728mysql-db03\u4e0a\u90e8\u7f72\u7ba1\u7406\u8282\u70b9<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre># \u5b89\u88c5epel\u6e90\uff0c\u8f6f\u4ef6\u9700\u8981\nwget -O \/etc\/yum.repos.d\/epel.repo http:\/\/mirrors.aliyun.com\/repo\/epel-6.repo\n# \u5b89\u88c5manager \u4f9d\u8d56\u5305\nyum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes\n# \u5b89\u88c5manager\u7ba1\u7406\u8f6f\u4ef6\nrpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u521b\u5efa\u5fc5\u987b\u76ee\u5f55<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>mkdir -p \/etc\/mha\nmkdir -p \/var\/log\/mha\/app1    ----\u300b\u53ef\u4ee5\u7ba1\u7406\u591a\u5957\u4e3b\u4ece\u590d\u5236<\/pre>\n<\/div>\n<\/div>\n<p><strong><em>\u7f16\u8f91mha-manager<\/em><\/strong><strong><em>\u914d\u7f6e\u6587\u4ef6<\/em><\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# cat  \/etc\/mha\/app1.cnf\n[server default]\nmanager_log=\/var\/log\/mha\/app1\/manager\nmanager_workdir=\/var\/log\/mha\/app1\nmaster_binlog_dir=\/data\/mysql\nuser=mha\npassword=mha\nping_interval=2\nrepl_password=123\nrepl_user=repl\nssh_user=root\n[server1]\nhostname=10.0.0.51\nport=3306\n[server2]\nhostname=10.0.0.52\nport=3306\n[server3]\nhostname=10.0.0.53\nport=3306<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u3010\u914d\u7f6e\u6587\u4ef6\u8be6\u89e3\u3011<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\"><img id=\\\"code_img_closed_ace8f99a-1a22-46a9-ae00-1f069cc0f0a0\\\" class=\\\"code_img_closed\\\" src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/ContractedBlock-4.gif\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" \/><\/p>\n<div id=\\\"cnblogs_code_open_ace8f99a-1a22-46a9-ae00-1f069cc0f0a0\\\" class=\\\"cnblogs_code_hide\\\">\n<pre> 1 [server default]\n 2 #\u8bbe\u7f6emanager\u7684\u5de5\u4f5c\u76ee\u5f55\n 3 manager_workdir=\/var\/log\/masterha\/app1\n 4 #\u8bbe\u7f6emanager\u7684\u65e5\u5fd7\n 5 manager_log=\/var\/log\/masterha\/app1\/manager.log\n 6 #\u8bbe\u7f6emaster \u4fdd\u5b58binlog\u7684\u4f4d\u7f6e\uff0c\u4ee5\u4fbfMHA\u53ef\u4ee5\u627e\u5230master\u7684\u65e5\u5fd7\uff0c\u6211\u8fd9\u91cc\u7684\u4e5f\u5c31\u662fmysql\u7684\u6570\u636e\u76ee\u5f55\n 7 master_binlog_dir=\/data\/mysql\n 8 #\u8bbe\u7f6e\u81ea\u52a8failover\u65f6\u5019\u7684\u5207\u6362\u811a\u672c\n 9 master_ip_failover_script= \/usr\/local\/bin\/master_ip_failover\n10 #\u8bbe\u7f6e\u624b\u52a8\u5207\u6362\u65f6\u5019\u7684\u5207\u6362\u811a\u672c\n11 master_ip_online_change_script= \/usr\/local\/bin\/master_ip_online_change\n12 #\u8bbe\u7f6emysql\u4e2droot\u7528\u6237\u7684\u5bc6\u7801\uff0c\u8fd9\u4e2a\u5bc6\u7801\u662f\u524d\u6587\u4e2d\u521b\u5efa\u76d1\u63a7\u7528\u6237\u7684\u90a3\u4e2a\u5bc6\u7801\n13 password=123456\n14 #\u8bbe\u7f6e\u76d1\u63a7\u7528\u6237root\n15 user=root\n16 #\u8bbe\u7f6e\u76d1\u63a7\u4e3b\u5e93\uff0c\u53d1\u9001ping\u5305\u7684\u65f6\u95f4\u95f4\u9694\uff0c\u5c1d\u8bd5\u4e09\u6b21\u6ca1\u6709\u56de\u5e94\u7684\u65f6\u5019\u81ea\u52a8\u8fdb\u884cfailover\n17 ping_interval=1\n18 #\u8bbe\u7f6e\u8fdc\u7aefmysql\u5728\u53d1\u751f\u5207\u6362\u65f6binlog\u7684\u4fdd\u5b58\u4f4d\u7f6e\n19 remote_workdir=\/tmp\n20 #\u8bbe\u7f6e\u590d\u5236\u7528\u6237\u7684\u5bc6\u7801\n21 repl_password=123456\n22 #\u8bbe\u7f6e\u590d\u5236\u73af\u5883\u4e2d\u7684\u590d\u5236\u7528\u6237\u540d\n23 repl_user=rep\n24 #\u8bbe\u7f6e\u53d1\u751f\u5207\u6362\u540e\u53d1\u9001\u7684\u62a5\u8b66\u7684\u811a\u672c\n25 report_script=\/usr\/local\/send_report\n26 #\u4e00\u65e6MHA\u5230server02\u7684\u76d1\u63a7\u4e4b\u95f4\u51fa\u73b0\u95ee\u9898\uff0cMHA Manager\u5c06\u4f1a\u5c1d\u8bd5\u4eceserver03\u767b\u5f55\u5230server02\n27 secondary_check_script= \/usr\/local\/bin\/masterha_secondary_check -s server03 -s server02 --user=root --master_host=server02 --master_ip=10.0.0.51 --master_port=3306\n28 #\u8bbe\u7f6e\u6545\u969c\u53d1\u751f\u540e\u5173\u95ed\u6545\u969c\u4e3b\u673a\u811a\u672c\uff08\u8be5\u811a\u672c\u7684\u4e3b\u8981\u4f5c\u7528\u662f\u5173\u95ed\u4e3b\u673a\u653e\u5728\u53d1\u751f\u8111\u88c2,\u8fd9\u91cc\u6ca1\u6709\u4f7f\u7528\uff09\n29 shutdown_script=\\\"\\\"\n30 #\u8bbe\u7f6essh\u7684\u767b\u5f55\u7528\u6237\u540d\n31 ssh_user=root\n32\n33 [server1]\n34 hostname=10.0.0.51\n35 port=3306\n36\n37 [server2]\n38 hostname=10.0.0.52\n39 port=3306\n40 #\u8bbe\u7f6e\u4e3a\u5019\u9009master\uff0c\u5982\u679c\u8bbe\u7f6e\u8be5\u53c2\u6570\u4ee5\u540e\uff0c\u53d1\u751f\u4e3b\u4ece\u5207\u6362\u4ee5\u540e\u5c06\u4f1a\u5c06\u6b64\u4ece\u5e93\u63d0\u5347\u4e3a\u4e3b\u5e93\uff0c\u5373\u4f7f\u8fd9\u4e2a\u4e3b\u5e93\u4e0d\u662f\u96c6\u7fa4\u4e2d\u4e8b\u4ef6\u6700\u65b0\u7684slave\n41 candidate_master=1\n42 #\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u5982\u679c\u4e00\u4e2aslave\u843d\u540emaster 100M\u7684relay logs\u7684\u8bdd\uff0cMHA\u5c06\u4e0d\u4f1a\u9009\u62e9\u8be5slave\u4f5c\u4e3a\u4e00\u4e2a\u65b0\u7684master\uff0c\u56e0\u4e3a\u5bf9\u4e8e\u8fd9\u4e2aslave\u7684\u6062\u590d\u9700\u8981\u82b1\u8d39\u5f88\u957f\u65f6\u95f4\uff0c\u901a\u8fc7\u8bbe\u7f6echeck_repl_delay=0,MHA\u89e6\u53d1\u5207\u6362\u5728\u9009\u62e9\u4e00\u4e2a\u65b0\u7684master\u7684\u65f6\u5019\u5c06\u4f1a\u5ffd\u7565\u590d\u5236\u5ef6\u65f6\uff0c\u8fd9\u4e2a\u53c2\u6570\u5bf9\u4e8e\u8bbe\u7f6e\u4e86candidate_master=1\u7684\u4e3b\u673a\u975e\u5e38\u6709\u7528\uff0c\u56e0\u4e3a\u8fd9\u4e2a\u5019\u9009\u4e3b\u5728\u5207\u6362\u7684\u8fc7\u7a0b\u4e2d\u4e00\u5b9a\u662f\u65b0\u7684master\n43 check_repl_delay=0<\/pre>\n<\/div>\n<p><span class=\\\"cnblogs_code_collapse\\\">View Code \u914d\u7f6e\u6587\u4ef6\u8be6\u7ec6\u8bf4\u660e<\/span>\n<\/div>\n<\/div>\n<p><strong>\u914d\u7f6essh\u4fe1\u4efb(\u5bc6\u94a5\u5206\u53d1\uff0c\u5728\u6240\u6709\u8282\u70b9\u4e0a\u6267\u884c)<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre># \u751f\u6210\u5bc6\u94a5\nssh-keygen -t dsa -P \\'\\' -f ~\/.ssh\/id_dsa &gt;\/dev\/null 2&gt;&amp;1\n# \u5206\u53d1\u516c\u94a5\uff0c\u5305\u62ec\u81ea\u5df1\nfor i in 1 2 3 ;do ssh-copy-id -i \/root\/.ssh\/id_dsa.pub root@10.0.0.5$i ;done<\/pre>\n<\/div>\n<\/div>\n<p>\u5206\u53d1\u5b8c\u6210\u540e\u6d4b\u8bd5\u5206\u53d1\u662f\u5426\u6210\u529f<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>for i in 1 2 3 ;do ssh 10.0.0.5$i  date ;done\n\u6216\n[root@db03 ~]# masterha_check_ssh --conf=\/etc\/mha\/app1.cnf\n\u6700\u540e\u4e00\u884c\u4fe1\u606f\u4e3a\u5982\u4e0b\u5b57\u6837\u5373\u4e3a\u5206\u53d1\u6210\u529f\uff1a\nThu Dec 28 18:44:53 2017 - [info] All SSH connection tests passed successfully.<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"143_mha\\\">1.4.3 \u542f\u52a8mha<\/span><\/h3>\n<p>\u7ecf\u8fc7\u4e0a\u9762\u7684\u90e8\u7f72\u8fc7\u540e\uff0cmha\u67b6\u6784\u5df2\u7ecf\u642d\u5efa\u5b8c\u6210<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre># \u542f\u52a8mha\nnohup masterha_manager --conf=\/etc\/mha\/app1.cnf --remove_dead_master_conf --ignore_last_failover &lt; \/dev\/null &gt; \/var\/log\/mha\/app1\/manager.log 2&gt;&amp;1 &amp;<\/pre>\n<\/div>\n<\/div>\n<p>\u542f\u52a8\u6210\u529f\u540e\uff0c\u68c0\u67e5\u4e3b\u5e93\u72b6\u6001<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# masterha_check_status --conf=\/etc\/mha\/app1.cnf\napp1 (pid:3298) is running(0:PING_OK), master:10.0.0.51<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"144_master\\\">1.4.4 \u5207\u6362master\u6d4b\u8bd5<\/span><\/h3>\n<p>\u67e5\u770b\u73b0\u5728\u7684\u4e3b\u5e93\u662f\u54ea\u4e2a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# masterha_check_status --conf=\/etc\/mha\/app1.cnf\napp1 (pid:11669) is running(0:PING_OK), master:10.0.0.51<\/pre>\n<\/div>\n<\/div>\n<p>\u624b\u52a8\u505c\u6b62\u4e3b\u5e93<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db01 ~]# \/etc\/init.d\/mysqld stop\nShutting down MySQL..... SUCCESS!<\/pre>\n<\/div>\n<\/div>\n<p>\u518d\u505c\u6b62\u6570\u636e\u7684\u540c\u65f6\u67e5\u770b\u65e5\u5fd7\u4fe1\u606f\u7684\u53d8\u5316<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# tailf \/var\/log\/mha\/app1\/manager\n~~~\nFri Dec 29 15:51:14 2017 - [info]  All other slaves should start replication from\nhere. Statement should be: CHANGE MASTER TO MASTER_HOST=\\'10.0.0.52\\', MASTER_PORT=3306, MASTER_AUTO_POSITION=1, MASTER_USER=\\'repl\\', MASTER_PASSWORD=\\'xxx\\';<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u4fee\u590d\u4e3b\u4ece<\/strong><br \/>\n\u2460\u00a0 \u542f\u52a8\u539f\u4e3b\u5e93,\u6dfb\u52a0change master to \u4fe1\u606f<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db01 ~]# \/etc\/init.d\/mysqld start\nStarting MySQL. SUCCESS!\nmysql&gt; CHANGE MASTER TO MASTER_HOST=\\'10.0.0.52\\', MASTER_PORT=3306, MASTER_AUTO_POSITION=1, MASTER_USER=\\'repl\\', MASTER_PASSWORD=\\'123\\';\nmysql&gt; start slave;<\/pre>\n<\/div>\n<\/div>\n<p>\u2461\u00a0 \u67e5\u770b\u4e3b\u4ece\u590d\u5236\u72b6\u6001<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt; show slave status\\\\G\n                   Master_Host: 10.0.0.52\n             Slave_IO_Running: Yes\n            Slave_SQL_Running: Yes<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u4fee\u590dmha<\/strong><br \/>\n\u2460\u00a0 \u4fee\u6539app1.cnf\u914d\u7f6e\u6587\u4ef6\uff0c\u6dfb\u52a0\u56de\u88ab\u5254\u9664\u4e3b\u673a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# cat  \/etc\/mha\/app1.cnf\n[binlog1]\nhostname=10.0.0.53\nmaster_binlog_dir=\/data\/mysql\/binlog\/\nno_master=1\n[server default]\nmanager_log=\/var\/log\/mha\/app1\/manager\nmanager_workdir=\/var\/log\/mha\/app1\nmaster_binlog_dir=\/data\/mysql\nmaster_ip_failover_script=\/usr\/local\/bin\/master_ip_failover\npassword=mha\nping_interval=2\nrepl_password=123\nrepl_user=repl\nssh_user=root\nuser=mha\n[server1]\nhostname=10.0.0.51\nport=3306\n[server2]\nhostname=10.0.0.52\nport=3306\n[server3]\nhostname=10.0.0.53\nport=3306<\/pre>\n<\/div>\n<\/div>\n<p>\u2461\u00a0 mha\u68c0\u67e5\u590d\u5236\u72b6\u6001<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# masterha_check_repl --conf=\/etc\/mha\/app1.cnf\nMySQL Replication Health is OK.<\/pre>\n<\/div>\n<\/div>\n<p>\u2462\u00a0 \u542f\u52a8mha\u7a0b\u5e8f<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>nohup masterha_manager --conf=\/etc\/mha\/app1.cnf --remove_dead_master_conf --ignore_last_failover &lt; \/dev\/null &gt; \/var\/log\/mha\/app1\/manager.log 2&gt;&amp;1 &amp;<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u5230\u6b64\u4e3b\u5e93\u5207\u6362\u6210\u529f<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# masterha_check_status --conf=\/etc\/mha\/app1.cnf\napp1 (pid:11978) is running(0:PING_OK), master:10.0.0.52<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u5b9e\u9a8c\u7ed3\u675f\u5c06\u4e3b\u5e93\u5207\u6362\u56dedb01.<\/strong><br \/>\n\u2460\u00a0 \u505c\u6b62mha<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# masterha_stop --conf=\/etc\/mha\/app1.cnf\nStopped app1 successfully.<\/pre>\n<\/div>\n<\/div>\n<p>\u2461\u00a0 \u505c\u6b62\u6240\u6709\u4ece\u5e93slave(\u6240\u6709\u5e93\u64cd\u4f5c)<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>stop slave;\nreset slave all;<\/pre>\n<\/div>\n<\/div>\n<p>\u2462\u00a0 \u91cd\u505a\u4e3b\u4ece\u590d\u5236(db02\u3001db03)<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>CHANGE MASTER TO\n\u3000\u3000MASTER_HOST=\\'10.0.0.51\\',\n\u3000\u3000MASTER_PORT=3306,\n\u3000\u3000MASTER_AUTO_POSITION=1,\n\u3000\u3000MASTER_USER=\\'repl\\',\n\u3000\u3000MASTER_PASSWORD=\\'123\\';<\/pre>\n<\/div>\n<p>\u2463\u00a0 \u542f\u52a8slave<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>start slave;<\/pre>\n<\/div>\n<p class=\\\"ad\\\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u542f\u52a8\u4e4b\u540e\u68c0\u67e5\u4ece\u5e93\u662f\u5426\u4e3a\u4e24\u4e2ayes\u00a0\u00a0<span class=\\\"cnblogs_code\\\">show slave status\\\\G<\/span><\/p>\n<\/div>\n<p>\u2464\u00a0 mha\u68c0\u67e5\u4e3b\u4ece\u590d\u5236<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# masterha_check_repl --conf=\/etc\/mha\/app1.cnf\nMySQL Replication Health is OK.<\/pre>\n<\/div>\n<\/div>\n<p>\u2465\u00a0 \u542f\u52a8mha<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>nohup masterha_manager --conf=\/etc\/mha\/app1.cnf --remove_dead_master_conf --ignore_last_failover &lt; \/dev\/null &gt; \/var\/log\/mha\/app1\/manager.log 2&gt;&amp;1 &amp;<\/pre>\n<\/div>\n<p class=\\\"ad\\\">\u3000\u3000\u68c0\u67e5\u5207\u6362\u662f\u5426\u6210\u529f<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# masterha_check_status --conf=\/etc\/mha\/app1.cnf\napp1 (pid:12127) is running(0:PING_OK), master:10.0.0.51<\/pre>\n<\/div>\n<\/div>\n<p>\u5230\u6b64\u4e3b\u4e3b\u8282\u70b9\u6709\u5207\u56de\u5230db01<\/p>\n<h3><span id=\\\"145\\\">1.4.5 \u8bbe\u7f6e\u6743\u91cd<\/span><\/h3>\n<p>\u4fee\u6539[server1]\u7684\u6743\u91cd<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[server1]\nhostname=10.0.0.51\nport=3306\ncandidate_master=1\ncheck_repl_delay=0<\/pre>\n<\/div>\n<\/div>\n<p>\u914d\u7f6e\u8bf4\u660e<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>candidate_master=1                  ----\u300b\u4e0d\u7ba1\u600e\u6837\u90fd\u5207\u5230\u4f18\u5148\u7ea7\u9ad8\u7684\u4e3b\u673a\uff0c\u4e00\u822c\u5728\u4e3b\u673a\u6027\u80fd\u5dee\u5f02\u7684\u65f6\u5019\u7528\ncheck_repl_delay=0                  ----\u300b\u4e0d\u7ba1\u4f18\u5148\u7ea7\u9ad8\u7684\u5907\u9009\u5e93\uff0c\u6570\u636e\u5ef6\u65f6\u591a\u4e45\u90fd\u8981\u5f80\u90a3\u5207<\/pre>\n<\/div>\n<p><strong>\u6ce8\uff1a<\/strong><\/p>\n<blockquote><p>1\u3001\u591a\u5730\u591a\u4e2d\u5fc3\uff0c\u8bbe\u7f6e\u672c\u5730\u8282\u70b9\u4e3a\u9ad8\u6743\u91cd<br \/>\n2\u3001\u5728\u6709\u534a\u540c\u6b65\u590d\u5236\u7684\u73af\u5883\u4e2d\uff0c\u8bbe\u7f6e\u534a\u540c\u6b65\u590d\u5236\u8282\u70b9\u4e3a\u9ad8\u6743\u91cd<br \/>\n3\u3001\u4f60\u89c9\u7740\u54ea\u4e2a\u673a\u5668\u9002\u5408\u505a\u4e3b\u8282\u70b9\uff0c\u914d\u7f6e\u8f83\u9ad8\u7684 \u3001\u6027\u80fd\u8f83\u597d\u7684<\/p><\/blockquote>\n<h2><span id=\\\"15_VIP\\\">1.5 \u914d\u7f6eVIP\u6f02\u79fb<\/span><\/h2>\n<h3><span id=\\\"151_IP\\\">1.5.1 IP\u6f02\u79fb\u7684\u4e24\u79cd\u65b9\u5f0f<\/span><\/h3>\n<p>? \u901a\u8fc7keepalived\u7684\u65b9\u5f0f\uff0c\u7ba1\u7406\u865a\u62dfIP\u7684\u6f02\u79fb<br \/>\n?\u00a0\u00a0\u901a\u8fc7MHA\u81ea\u5e26\u811a\u672c\u65b9\u5f0f\uff0c\u7ba1\u7406\u865a\u62dfIP\u7684\u6f02\u79fb<\/p>\n<h3><span id=\\\"152_MHA\\\">1.5.2 MHA\u811a\u672c\u65b9\u5f0f<\/span><\/h3>\n<p><strong>\u4fee\u6539mha<\/strong><strong>\u914d\u7f6e\u6587\u4ef6<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# grep \\\"script\\\" \/etc\/mha\/app1.cnf\n[server default]\nmaster_ip_failover_script=\/usr\/local\/bin\/master_ip_failover<\/pre>\n<\/div>\n<\/div>\n<p>\u518d\u4e3b\u914d\u7f6e\u4e2d\u6dfb\u52a0VIP\u811a\u672c<br \/>\n<strong>\u811a\u672c\u5185\u5bb9<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\"><img id=\\\"code_img_closed_bac1ef9d-2c6b-4489-967d-8dd88e7087da\\\" class=\\\"code_img_closed\\\" src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/ContractedBlock-4.gif\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" \/><\/p>\n<div id=\\\"cnblogs_code_open_bac1ef9d-2c6b-4489-967d-8dd88e7087da\\\" class=\\\"cnblogs_code_hide\\\">\n<pre>[root@db03 ~]# cat \/usr\/local\/bin\/master_ip_failover\n#!\/usr\/bin\/env perl\nuse strict;\nuse warnings FATAL =&gt; \\'all\\';\nuse Getopt::Long;\nmy (\n    $command,          $ssh_user,        $orig_master_host, $orig_master_ip,\n    $orig_master_port, $new_master_host, $new_master_ip,    $new_master_port\n);\nmy $vip = \\'10.0.0.55\/24\\';\nmy $key = \\'0\\';\nmy $ssh_start_vip = \\\"\/sbin\/ifconfig eth0:$key $vip\\\";\nmy $ssh_stop_vip = \\\"\/sbin\/ifconfig eth0:$key down\\\";\nGetOptions(\n    \\'command=s\\'          =&gt; \\\\$command,\n    \\'ssh_user=s\\'         =&gt; \\\\$ssh_user,\n    \\'orig_master_host=s\\' =&gt; \\\\$orig_master_host,\n    \\'orig_master_ip=s\\'   =&gt; \\\\$orig_master_ip,\n    \\'orig_master_port=i\\' =&gt; \\\\$orig_master_port,\n    \\'new_master_host=s\\'  =&gt; \\\\$new_master_host,\n    \\'new_master_ip=s\\'    =&gt; \\\\$new_master_ip,\n    \\'new_master_port=i\\'  =&gt; \\\\$new_master_port,\n);\nexit &amp;main();\nsub main {\n    print \\\"\\\\n\\\\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\\\\n\\\\n\\\";\n    if ( $command eq \\\"stop\\\" || $command eq \\\"stopssh\\\" ) {\n        my $exit_code = 1;\n        eval {\n            print \\\"Disabling the VIP on old master: $orig_master_host \\\\n\\\";\n            &amp;stop_vip();\n            $exit_code = 0;\n        };\n        if ($@) {\n            warn \\\"Got Error: $@\\\\n\\\";\n            exit $exit_code;\n        }\n        exit $exit_code;\n    }\n    elsif ( $command eq \\\"start\\\" ) {\n        my $exit_code = 10;\n        eval {\n            print \\\"Enabling the VIP - $vip on the new master - $new_master_host \\\\n\\\";\n            &amp;start_vip();\n            $exit_code = 0;\n        };\n        if ($@) {\n            warn $@;\n            exit $exit_code;\n        }\n        exit $exit_code;\n    }\n    elsif ( $command eq \\\"status\\\" ) {\n        print \\\"Checking the Status of the script.. OK \\\\n\\\";\n        exit 0;\n    }\n    else {\n        &amp;usage();\n        exit 1;\n    }\n}\nsub start_vip() {\n    `ssh $ssh_user\\\\@$new_master_host \\\\\\\" $ssh_start_vip \\\\\\\"`;\n}\nsub stop_vip() {\n     return 0  unless  ($ssh_user);\n    `ssh $ssh_user\\\\@$orig_master_host \\\\\\\" $ssh_stop_vip \\\\\\\"`;\n}\nsub usage {\n    print\n    \\\"Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port\\\\n\\\";\n}<\/pre>\n<\/div>\n<p><span class=\\\"cnblogs_code_collapse\\\">View Code VIP\u7ba1\u7406\u811a\u672c\u00a0<\/span>\n<\/div>\n<\/div>\n<p><em>\u3000\u3000\u8be5\u811a\u672c\u4e3a\u8f6f\u4ef6\u81ea\u5e26\uff0c\u811a\u672c\u83b7\u53d6\u65b9\u6cd5\uff1a\u518dmha<\/em><em>\u6e90\u7801\u5305\u4e2d\u7684samples<\/em><em>\u76ee\u5f55\u4e0b\u6709\u8be5\u811a\u672c\u7684\u6a21\u677f\uff0c\u5bf9\u8be5\u6a21\u677f\u8fdb\u884c\u4fee\u6539\u5373\u53ef\u4f7f\u7528\u3002\u8def\u5f84\u5982\uff1a\u00a0<span class=\\\"cnblogs_code\\\">mha4mysql-manager-0.56\/samples\/scripts<\/span>\u00a0<\/em><br \/>\n\u811a\u672c\u4fee\u6539\u5185\u5bb9<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>my $vip = \\'10.0.0.55\/24\\';\nmy $key = \\'0\\';\nmy $ssh_start_vip = \\\"\/sbin\/ifconfig eth0:$key $vip\\\";\nmy $ssh_stop_vip = \\\"\/sbin\/ifconfig eth0:$key down\\\";<\/pre>\n<\/div>\n<p>\u811a\u672c\u6dfb\u52a0\u6267\u884c\u6743\u9650\u5426\u5219mha\u65e0\u6cd5\u542f\u52a8<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>chmod +x \/usr\/local\/bin\/master_ip_failover<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u624b\u52a8\u7ed1\u5b9aVIP(<\/strong><strong>\u4e3b\u5e93)<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>ifconfig eth0:0 10.0.0.55\/24<\/pre>\n<\/div>\n<p>\u68c0\u67e5\n<\/p><\/div>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db01 ~]# ip a s eth0\n2: eth0: &lt;broadcast,multicast,up,lower_up&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000\n    link\/ether 00:0c:29:6c:7a:11 brd ff:ff:ff:ff:ff:ff\n    inet 10.0.0.51\/24 brd 10.0.0.255 scope global eth0\n    inet 10.0.0.55\/24 brd 10.0.0.255 scope global secondary eth0:0\n    inet6 fe80::20c:29ff:fe6c:7a11\/64 scope link\n       valid_lft forever preferred_lft forever&lt;\/broadcast,multicast,up,lower_up&gt;<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u81f3\u6b64vip<\/strong><strong>\u6f02\u79fb\u914d\u7f6e\u5b8c\u6210\u00a0<\/strong><\/p>\n<h3><span id=\\\"153_IP\\\">1.5.3 \u6d4b\u8bd5\u865a\u62dfIP\u6f02\u79fb<\/span><\/h3>\n<p>\u67e5\u770bdb02\u7684slave\u4fe1\u606f<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\"><img id=\\\"code_img_closed_9d5b6175-ebdf-4c5d-957f-65c2a0d693a4\\\" class=\\\"code_img_closed\\\" src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/ContractedBlock-4.gif\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" \/><\/p>\n<div id=\\\"cnblogs_code_open_9d5b6175-ebdf-4c5d-957f-65c2a0d693a4\\\" class=\\\"cnblogs_code_hide\\\">\n<pre> 1 mysql&gt; show slave status\\\\G\n 2 *************************** 1. row ***************************\n 3                Slave_IO_State: Waiting for master to send event\n 4                   Master_Host: 10.0.0.51\n 5                   Master_User: repl\n 6                   Master_Port: 3306\n 7                 Connect_Retry: 60\n 8               Master_Log_File: mysql-bin.000007\n 9           Read_Master_Log_Pos: 191\n10                Relay_Log_File: db02-relay-bin.000002\n11                 Relay_Log_Pos: 361\n12         Relay_Master_Log_File: mysql-bin.000007\n13              Slave_IO_Running: Yes\n14             Slave_SQL_Running: Yes\n15               Replicate_Do_DB:\n16           Replicate_Ignore_DB:\n17            Replicate_Do_Table:\n18        Replicate_Ignore_Table:\n19       Replicate_Wild_Do_Table:\n20   Replicate_Wild_Ignore_Table:\n21                    Last_Errno: 0\n22                    Last_Error:\n23                  Skip_Counter: 0\n24           Exec_Master_Log_Pos: 191\n25               Relay_Log_Space: 564\n26               Until_Condition: None\n27                Until_Log_File:\n28                 Until_Log_Pos: 0\n29            Master_SSL_Allowed: No\n30            Master_SSL_CA_File:\n31            Master_SSL_CA_Path:\n32               Master_SSL_Cert:\n33             Master_SSL_Cipher:\n34                Master_SSL_Key:\n35         Seconds_Behind_Master: 0\n36 Master_SSL_Verify_Server_Cert: No\n37                 Last_IO_Errno: 0\n38                 Last_IO_Error:\n39                Last_SQL_Errno: 0\n40                Last_SQL_Error:\n41   Replicate_Ignore_Server_Ids:\n42              Master_Server_Id: 51\n43                   Master_UUID: c8fcd56e-eb79-11e7-97b0-000c296c7a11\n44              Master_Info_File: \/application\/mysql-5.6.36\/data\/master.info\n45                     SQL_Delay: 0\n46           SQL_Remaining_Delay: NULL\n47       Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I\/O thread to update it\n48            Master_Retry_Count: 86400\n49                   Master_Bind:\n50       Last_IO_Error_Timestamp:\n51      Last_SQL_Error_Timestamp:\n52                Master_SSL_Crl:\n53            Master_SSL_Crlpath:\n54            Retrieved_Gtid_Set:\n55             Executed_Gtid_Set: c8fcd56e-eb79-11e7-97b0-000c296c7a11:1-3\n56                 Auto_Position: 1\n57 1 row in set (0.00 sec)<\/pre>\n<\/div>\n<p><span class=\\\"cnblogs_code_collapse\\\">View Code \u73b0\u5728\u4e3b\u4ece\u72b6\u6001<\/span>\n<\/div>\n<p>\u505c\u6389\u4e3b\u5e93\n<\/p><\/div>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db01 ~]# \/etc\/init.d\/mysqld stop<\/pre>\n<\/div>\n<\/div>\n<p>\u5728db03\u4e0a\u67e5\u770b\u4ece\u5e93slave\u4fe1\u606f<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\"><img id=\\\"code_img_closed_55b33084-103e-4c89-bf41-2d29eb14a1ac\\\" class=\\\"code_img_closed\\\" src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/ContractedBlock-4.gif\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" \/><\/p>\n<div id=\\\"cnblogs_code_open_55b33084-103e-4c89-bf41-2d29eb14a1ac\\\" class=\\\"cnblogs_code_hide\\\">\n<pre> 1 mysql&gt;  show slave status\\\\G\n 2 *************************** 1. row ***************************\n 3                Slave_IO_State: Waiting for master to send event\n 4                   Master_Host: 10.0.0.52\n 5                   Master_User: repl\n 6                   Master_Port: 3306\n 7                 Connect_Retry: 60\n 8               Master_Log_File: mysql-bin.000009\n 9           Read_Master_Log_Pos: 191\n10                Relay_Log_File: db03-relay-bin.000002\n11                 Relay_Log_Pos: 361\n12         Relay_Master_Log_File: mysql-bin.000009\n13              Slave_IO_Running: Yes\n14             Slave_SQL_Running: Yes\n15               Replicate_Do_DB:\n16           Replicate_Ignore_DB:\n17            Replicate_Do_Table:\n18        Replicate_Ignore_Table:\n19       Replicate_Wild_Do_Table:\n20   Replicate_Wild_Ignore_Table:\n21                    Last_Errno: 0\n22                    Last_Error:\n23                  Skip_Counter: 0\n24           Exec_Master_Log_Pos: 191\n25               Relay_Log_Space: 564\n26               Until_Condition: None\n27                Until_Log_File:\n28                 Until_Log_Pos: 0\n29            Master_SSL_Allowed: No\n30            Master_SSL_CA_File:\n31            Master_SSL_CA_Path:\n32               Master_SSL_Cert:\n33             Master_SSL_Cipher:\n34                Master_SSL_Key:\n35         Seconds_Behind_Master: 0\n36 Master_SSL_Verify_Server_Cert: No\n37                 Last_IO_Errno: 0\n38                 Last_IO_Error:\n39                Last_SQL_Errno: 0\n40                Last_SQL_Error:\n41   Replicate_Ignore_Server_Ids:\n42              Master_Server_Id: 52\n43                   Master_UUID: c8fa1d13-eb79-11e7-97b0-000c29d60ab3\n44              Master_Info_File: \/application\/mysql-5.6.36\/data\/master.info\n45                     SQL_Delay: 0\n46           SQL_Remaining_Delay: NULL\n47       Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I\/O thread to update it\n48            Master_Retry_Count: 86400\n49                   Master_Bind:\n50       Last_IO_Error_Timestamp:\n51      Last_SQL_Error_Timestamp:\n52                Master_SSL_Crl:\n53            Master_SSL_Crlpath:\n54            Retrieved_Gtid_Set:\n55             Executed_Gtid_Set: c8fcd56e-eb79-11e7-97b0-000c296c7a11:1-3\n56                 Auto_Position: 1\n57 1 row in set (0.00 sec)<\/pre>\n<\/div>\n<p><span class=\\\"cnblogs_code_collapse\\\">View Code \u505c\u6389\u4e3b\u5e93\u540e\u7684\u4e3b\u4ece\u4fe1\u606f<\/span>\n<\/div>\n<\/div>\n<p>\u5728db01\u4e0a\u67e5\u770bvip\u4fe1\u606f<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000\n    link\/ether 00:0c:29:6c:7a:11 brd ff:ff:ff:ff:ff:ff\n    inet 10.0.0.51\/24 brd 10.0.0.255 scope global eth0\n    inet6 fe80::20c:29ff:fe6c:7a11\/64 scope link\n       valid_lft forever preferred_lft forever<\/pre>\n<\/div>\n<\/div>\n<p>\u5728db02\u4e0a\u67e5\u770bvip\u4fe1\u606f<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre> [root@db02 ~]# ip a s eth0\n2: eth0: &lt;broadcast,multicast,up,lower_up&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000\n    link\/ether 00:0c:29:d6:0a:b3 brd ff:ff:ff:ff:ff:ff\n    inet 10.0.0.52\/24 brd 10.0.0.255 scope global eth0\ninet 10.0.0.55\/24 brd 10.0.0.255 scope global secondary eth0:0\n    inet6 fe80::20c:29ff:fed6:ab3\/64 scope link\n       valid_lft forever preferred_lft forever&lt;\/broadcast,multicast,up,lower_up&gt;<\/pre>\n<\/div>\n<p>\u81f3\u6b64\uff0cVIP\u6f02\u79fb\u5c31\u6d4b\u8bd5\u6210\u529f<\/p>\n<h2><span id=\\\"16_binlog-server\\\">1.6 \u914d\u7f6ebinlog-server<\/span><\/h2>\n<h3><span id=\\\"161_binlog-server\\\">1.6.1 \u914d\u7f6ebinlog-server<\/span><\/h3>\n<p>1\uff09\u524d\u671f\u51c6\u5907\uff1a<\/p>\n<div>\n<blockquote>\n<p class=\\\"ad\\\">1\u3001\u51c6\u5907\u4e00\u53f0\u65b0\u7684mysql\u5b9e\u4f8b(db03),GTID\u5fc5\u987b\u5f00\u542f\u3002<\/p>\n<p class=\\\"ad\\\">2\u3001\u5c06\u6765binlog\u63a5\u6536\u76ee\u5f55\uff0c\u4e0d\u80fd\u548c\u4e3b\u5e93binlog\u76ee\u5f55\u4e00\u6837<\/p>\n<\/blockquote>\n<\/div>\n<p>2\uff09\u505c\u6b62mha<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>masterha_stop --conf=\/etc\/mha\/app1.cnf<\/pre>\n<\/div>\n<\/div>\n<p>3\uff09\u5728app1.cnf\u5f00\u542fbinlogserver\u529f\u80fd<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>    [binlog1]\n    no_master=1\n    hostname=10.0.0.53                         ----&gt; \u4e3b\u673aDB03\n    master_binlog_dir=\/data\/mysql\/binlog\/  ----&gt; binlog\u4fdd\u5b58\u76ee\u5f55<\/pre>\n<\/div>\n<\/div>\n<p>4\uff09\u5f00\u542fbinlog\u63a5\u6536\u76ee\u5f55\uff0c\u6ce8\u610f\u6743\u9650<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>mkdir -p \/data\/mysql\/binlog\/\nchown -R mysql.mysql \/data\/mysql\n# \u8fdb\u5165\u76ee\u5f55\u542f\u52a8\u7a0b\u5e8f\n  cd \/data\/mysql\/binlog\/ &amp;&amp;\\\\\n  mysqlbinlog  -R --host=10.0.0.51 --user=mha --password=mha --raw  --stop-never mysql-bin.000001 &amp;<\/pre>\n<\/div>\n<\/div>\n<p>\u53c2\u6570\u8bf4\u660e\uff1a-R \u8fdc\u7a0b\u4e3b\u673a<br \/>\n5\uff09\u542f\u52a8mha<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>nohup masterha_manager --conf=\/etc\/mha\/app1.cnf --remove_dead_master_conf --ignore_last_failover &lt; \/dev\/null &gt; \/var\/log\/mha\/app1\/manager.log 2&gt;&amp;1 &amp;<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"162_binlog\\\">1.6.2 \u6d4b\u8bd5binlog\u5907\u4efd<\/span><\/h3>\n<div>\n#\u67e5\u770bbinlog\u76ee\u5f55\u4e2d\u7684binlog<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 binlog]# ll\ntotal 44\n-rw-r--r-- 1 root root 285 Mar  8 03:11 mysql-bin.000001<\/pre>\n<\/div>\n<p>#\u767b\u5f55\u4e3b\u5e93<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@mysql-db01 ~]# mysql -uroot -p123<\/pre>\n<\/div>\n<p>#\u5237\u65b0binlog<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt; flush logs;<\/pre>\n<\/div>\n<p>#\u518d\u6b21\u67e5\u770bbinlog\u76ee\u5f55<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 binlog]# ll\ntotal 48\n-rw-r--r-- 1 root root 285 Mar  8 03:11 mysql-bin.000001\n-rw-r--r-- 1 root root 143 Mar  8 04:00 mysql-bin.000002<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"17_mysqlAtlas\\\">1.7 mysql\u4e2d\u95f4\u4ef6Atlas<\/span><\/h2>\n<h3><span id=\\\"171_atlas\\\">1.7.1 atlas\u7b80\u4ecb<\/span><\/h3>\n<p>Atlas\u662f\u7531 Qihoo 360\u516c\u53f8Web\u5e73\u53f0\u90e8\u57fa\u7840\u67b6\u6784\u56e2\u961f\u5f00\u53d1\u7ef4\u62a4\u7684\u4e00\u4e2a\u57fa\u4e8eMySQL\u534f\u8bae\u7684\u6570\u636e\u4e2d\u95f4\u5c42\u9879\u76ee\u3002\u5b83\u5728MySQL\u5b98\u65b9\u63a8\u51fa\u7684MySQL-Proxy 0.8.2\u7248\u672c\u7684\u57fa\u7840\u4e0a\uff0c\u4fee\u6539\u4e86\u5927\u91cfbug\uff0c\u6dfb\u52a0\u4e86\u5f88\u591a\u529f\u80fd\u7279\u6027\u3002\u76ee\u524d\u8be5\u9879\u76ee\u5728360\u516c\u53f8\u5185\u90e8\u5f97\u5230\u4e86\u5e7f\u6cdb\u5e94\u7528\uff0c\u5f88\u591aMySQL\u4e1a\u52a1\u5df2\u7ecf\u63a5\u5165\u4e86Atlas\u5e73\u53f0\uff0c\u6bcf\u5929\u627f\u8f7d\u7684\u8bfb\u5199\u8bf7\u6c42\u6570\u8fbe\u51e0\u5341\u4ebf\u6761\u3002<br \/>\n\u540c\u65f6\uff0c\u6709\u8d85\u8fc750\u5bb6\u516c\u53f8\u5728\u751f\u4ea7\u73af\u5883\u4e2d\u90e8\u7f72\u4e86Atlas\uff0c\u8d85\u8fc7800\u4eba\u5df2\u52a0\u5165\u4e86\u6211\u4eec\u7684\u5f00\u53d1\u8005\u4ea4\u6d41\u7fa4\uff0c\u5e76\u4e14\u8fd9\u4e9b\u6570\u5b57\u8fd8\u5728\u4e0d\u65ad\u589e\u52a0\u3002\u800c\u4e14\u5b89\u88c5\u65b9\u4fbf\u3002\u914d\u7f6e\u7684\u6ce8\u91ca\u5199\u7684\u86ee\u8be6\u7ec6\u7684\uff0c\u90fd\u662f\u4e2d\u6587\u3002<\/p>\n<div>\n<p class=\\\"a4\\\">\u3000\u3000Atlas\u5b98\u65b9\u94fe\u63a5\uff1a\u00a0<a href=\\\"https:\/\/clsn.io\/wp-content\/themes\/clsn-003\/inc\/go.php?url=https:\/\/github.com\/Qihoo360\/Atlas\/blob\/master\/README_ZH.md\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\">https:\/\/github.com\/Qihoo360\/Atlas\/blob\/master\/README_ZH.md<i class=\\\"be be-anchor\\\"><\/i><\/a><\/p>\n<p class=\\\"a4\\\">\u3000\u3000Atlas\u4e0b\u8f7d\u94fe\u63a5\uff1a<a href=\\\"https:\/\/clsn.io\/wp-content\/themes\/clsn-003\/inc\/go.php?url=%20https:\/\/github.com\/Qihoo360\/Atlas\/releases\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\">\u00a0https:\/\/github.com\/Qihoo360\/Atlas\/releases<i class=\\\"be be-anchor\\\"><\/i><\/a><\/p>\n<\/div>\n<h3><span id=\\\"172\\\">1.7.2 \u4e3b\u8981\u529f\u80fd<\/span><\/h3>\n<p>\u8bfb\u5199\u5206\u79bb\u3001\u4ece\u5e93\u8d1f\u8f7d\u5747\u8861\u3001\u81ea\u52a8\u5206\u8868\u3001IP\u8fc7\u6ee4<br \/>\nSQL\u8bed\u53e5\u9ed1\u767d\u540d\u5355\u3001DBA\u53ef\u5e73\u6ed1\u4e0a\u4e0b\u7ebfDB\u3001\u81ea\u52a8\u6458\u9664\u5b95\u673a\u7684DB<br \/>\n<em>Atlas<\/em><em>\u76f8\u5bf9\u4e8e\u5b98\u65b9MySQL-Proxy<\/em><em>\u7684\u4f18\u52bf<\/em><\/p>\n<blockquote><p>1.\u5c06\u4e3b\u6d41\u7a0b\u4e2d\u6240\u6709Lua\u4ee3\u7801\u7528C\u91cd\u5199\uff0cLua\u4ec5\u7528\u4e8e\u7ba1\u7406\u63a5\u53e3<br \/>\n2.\u91cd\u5199\u7f51\u7edc\u6a21\u578b\u3001\u7ebf\u7a0b\u6a21\u578b<br \/>\n3.\u5b9e\u73b0\u4e86\u771f\u6b63\u610f\u4e49\u4e0a\u7684\u8fde\u63a5\u6c60<br \/>\n4.\u4f18\u5316\u4e86\u9501\u673a\u5236\uff0c\u6027\u80fd\u63d0\u9ad8\u6570\u5341\u500d<\/p><\/blockquote>\n<h3><span id=\\\"173\\\">1.7.3 \u4f7f\u7528\u573a\u666f<\/span><\/h3>\n<p>Atlas\u662f\u4e00\u4e2a\u4f4d\u4e8e\u524d\u7aef\u5e94\u7528\u4e0e\u540e\u7aefMySQL\u6570\u636e\u5e93\u4e4b\u95f4\u7684\u4e2d\u95f4\u4ef6\uff0c\u5b83\u4f7f\u5f97\u5e94\u7528\u7a0b\u5e8f\u5458\u65e0\u9700\u518d\u5173\u5fc3\u8bfb\u5199\u5206\u79bb\u3001\u5206\u8868\u7b49\u4e0eMySQL\u76f8\u5173\u7684\u7ec6\u8282\uff0c\u53ef\u4ee5\u4e13\u6ce8\u4e8e\u7f16\u5199\u4e1a\u52a1\u903b\u8f91\uff0c\u540c\u65f6\u4f7f\u5f97DBA\u7684\u8fd0\u7ef4\u5de5\u4f5c\u5bf9\u524d\u7aef\u5e94\u7528\u900f\u660e\uff0c\u4e0a\u4e0b\u7ebfDB\u524d\u7aef\u5e94\u7528\u65e0\u611f\u77e5\u3002<\/p>\n<p align=\\\"center\\\">\u00a0<img src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230181901679-91103503.png\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" data-original=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230181901679-91103503.png\\\" \/><\/p>\n<p>\u3000\u3000Atlas\u662f\u4e00\u4e2a\u4f4d\u4e8e\u5e94\u7528\u7a0b\u5e8f\u4e0eMySQL\u4e4b\u95f4\u4e2d\u95f4\u4ef6\u3002\u5728\u540e\u7aefDB\u770b\u6765\uff0cAtlas\u76f8\u5f53\u4e8e\u8fde\u63a5\u5b83\u7684\u5ba2\u6237\u7aef\uff0c\u5728\u524d\u7aef\u5e94\u7528\u770b\u6765\uff0cAtlas\u76f8\u5f53\u4e8e\u4e00\u4e2aDB\u3002<br \/>\nAtlas\u4f5c\u4e3a\u670d\u52a1\u7aef\u4e0e\u5e94\u7528\u7a0b\u5e8f\u901a\u8baf\uff0c\u5b83\u5b9e\u73b0\u4e86MySQL\u7684\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u534f\u8bae\uff0c\u540c\u65f6\u4f5c\u4e3a\u5ba2\u6237\u7aef\u4e0eMySQL\u901a\u8baf\u3002\u5b83\u5bf9\u5e94\u7528\u7a0b\u5e8f\u5c4f\u853d\u4e86DB\u7684\u7ec6\u8282\uff0c\u540c\u65f6\u4e3a\u4e86\u964d\u4f4eMySQL\u8d1f\u62c5\uff0c\u5b83\u8fd8\u7ef4\u62a4\u4e86\u8fde\u63a5\u6c60.<\/p>\n<h3><span id=\\\"174\\\">1.7.4 \u4f01\u4e1a\u8bfb\u5199\u5206\u79bb\u53ca\u5206\u5e93\u5206\u8868\u5176\u4ed6\u65b9\u6848\u4ecb\u7ecd<\/span><\/h3>\n<div>\n<blockquote>\n<p class=\\\"a4\\\">\u00a0 \u00a0 Mysql-proxy\uff08oracle\uff09<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 Mysql-router\uff08oracle\uff09<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 Atlas (Qihoo 360)<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 Atlas-sharding (Qihoo 360)<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 Cobar\uff08\u662f\u963f\u91cc\u5df4\u5df4\uff08B2B\uff09\u90e8\u95e8\u5f00\u53d1\uff09<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 Mycat\uff08\u57fa\u4e8e\u963f\u91cc\u5f00\u6e90\u7684Cobar\u4ea7\u54c1\u800c\u7814\u53d1\uff09<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 TDDL Smart Client\u7684\u65b9\u5f0f\uff08\u6dd8\u5b9d\uff09<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 Oceanus(58\u540c\u57ce\u6570\u636e\u5e93\u4e2d\u95f4\u4ef6)<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 OneProxy\uff08\u539f\u652f\u4ed8\u5b9d\u9996\u5e2d\u67b6\u6784\u5e08\u697c\u65b9\u946b\u5f00\u53d1 \uff09<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 vitess\uff08\u8c37\u6b4c\u5f00\u53d1\u7684\u6570\u636e\u5e93\u4e2d\u95f4\u4ef6\uff09<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 Heisenberg(\u767e\u5ea6)<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 TSharding(\u8611\u83c7\u8857\u767d\u8f89)<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 Xx-dbproxy\uff08\u91d1\u5c71\u7684Kingshard\u3001\u5f53\u5f53\u7f51\u7684sharding-jdbc \uff09<\/p>\n<p class=\\\"a4\\\">\u00a0\u00a0\u00a0 amoeba<\/p>\n<\/blockquote>\n<\/div>\n<h3><span id=\\\"175_Atlas\\\">1.7.5 \u5b89\u88c5Atlas<\/span><\/h3>\n<p>\u8f6f\u4ef6\u83b7\u53d6\u5730\u5740\uff1a<a href=\\\"https:\/\/clsn.io\/wp-content\/themes\/clsn-003\/inc\/go.php?url=https:\/\/github.com\/Qihoo360\/Atlas\/releases\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\">https:\/\/github.com\/Qihoo360\/Atlas\/releases<i class=\\\"be be-anchor\\\"><\/i><\/a><br \/>\n<em>\u6ce8\u610f\uff1a<\/em><\/p>\n<div>\n<blockquote>\n<p class=\\\"a4\\\">1\u3001Atlas\u53ea\u80fd\u5b89\u88c5\u8fd0\u884c\u572864\u4f4d\u7684\u7cfb\u7edf\u4e0a<\/p>\n<p class=\\\"a4\\\">2\u3001Centos 5.X\u5b89\u88c5 Atlas-XX.el5.x86_64.rpm\uff0cCentos 6.X\u5b89\u88c5Atlas-XX.el6.x86_64.rpm\u3002<\/p>\n<p class=\\\"a4\\\">3\u3001\u540e\u7aefmysql\u7248\u672c\u5e94\u5927\u4e8e5.1\uff0c\u5efa\u8bae\u4f7f\u7528Mysql 5.6\u4ee5\u4e0a<\/p>\n<p class=\\\"a4\\\">\u3000\u3000Atlas (\u666e\u901a) : Atlas-2.2.1.el6.x86_64.rpm<\/p>\n<p class=\\\"a4\\\">\u3000\u3000Atlas (\u5206\u8868) : Atlas-sharding_1.0.1-el6.x86_64.rpm<\/p>\n<\/blockquote>\n<\/div>\n<p>\u4e0b\u8f7d\u5b89\u88c5atlas<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>wget https:\/\/github.com\/Qihoo360\/Atlas\/releases\/download\/2.2.1\/Atlas-2.2.1.el6.x86_64.rpm\nrpm -ivh Atlas-2.2.1.el6.x86_64.rpm<\/pre>\n<\/div>\n<\/div>\n<p>\u81f3\u6b64\u5b89\u88c5\u5b8c\u6210<\/p>\n<h3><span id=\\\"176_Atlas\\\">1.7.6 \u914d\u7f6eAtlas\u914d\u7f6e\u6587\u4ef6<\/span><\/h3>\n<p>atlas\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684\u5bc6\u7801\u9700\u8981\u52a0\u5bc6\uff0c\u53ef\u4ee5\u4f7f\u7528\uff0c\u8f6f\u4ef6\u81ea\u5e26\u7684\u52a0\u5bc6\u5de5\u5177\u8fdb\u884c\u52a0\u5bc6<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>cd \/usr\/local\/mysql-proxy\/conf\/\n\/usr\/local\/mysql-proxy\/bin\/encrypt  \u5bc6\u7801      ----&gt;\u5236\u4f5c\u52a0\u5bc6\u5bc6\u7801<\/pre>\n<\/div>\n<\/div>\n<p>\u751f\u4ea7\u5bc6\u6587\u5bc6\u7801\uff1a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 bin]# \/usr\/local\/mysql-proxy\/bin\/encrypt 123\n3yb5jEku5h4=\n[root@db03 bin]# \/usr\/local\/mysql-proxy\/bin\/encrypt mha\nO2jBXONX098=<\/pre>\n<\/div>\n<\/div>\n<p>\u7f16\u8f91\u914d\u7f6e\u6587\u4ef6<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>vim  \/usr\/local\/mysql-proxy\/conf\/test.cnf\n[mysql-proxy]\nadmin-username = user\nadmin-password = pwd\nproxy-backend-addresses = 10.0.0.55:3306\nproxy-read-only-backend-addresses = 10.0.0.52:3306,10.0.0.53:3306\npwds = repl:3yb5jEku5h4=,mha:O2jBXONX098=\ndaemon = true\nkeepalive = true\nevent-threads = 8\nlog-level = message\nlog-path = \/usr\/local\/mysql-proxy\/log\nsql-log=ON\nproxy-address = 0.0.0.0:33060\nadmin-address = 0.0.0.0:2345\ncharset=utf8<\/pre>\n<\/div>\n<\/div>\n<p>\u914d\u7f6e\u6587\u4ef6\u5185\u4e3a\u5168\u4e2d\u6587\u6ce8\u91ca\uff0c\u8fd9\u91cc\u6709\u4e00\u4efd\u8f83\u4e3a\u8be6\u7ec6\u7684\u89e3\u91ca\uff1a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\"><img id=\\\"code_img_closed_cc7f89f5-379e-44a4-a5e9-6798f05addfe\\\" class=\\\"code_img_closed\\\" src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/ContractedBlock-4.gif\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" \/><\/p>\n<div id=\\\"cnblogs_code_open_cc7f89f5-379e-44a4-a5e9-6798f05addfe\\\" class=\\\"cnblogs_code_hide\\\">\n<pre> 1 [mysql-proxy]\n 2 #(\u5fc5\u5907\uff0c\u9ed8\u8ba4\u503c\u5373\u53ef)\u7ba1\u7406\u63a5\u53e3\u7684\u7528\u6237\u540d\n 3 admin-username = user\n 4 #(\u5fc5\u5907\uff0c\u9ed8\u8ba4\u503c\u5373\u53ef)\u7ba1\u7406\u63a5\u53e3\u7684\u5bc6\u7801\n 5 admin-password = pwd\n 6 #(\u5fc5\u5907\uff0c\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u914d\u7f6e)\u4e3b\u5e93\u7684IP\u548c\u7aef\u53e3\n 7 proxy-backend-addresses = 192.168.0.12:3306\n 8 #(\u975e\u5fc5\u5907\uff0c\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u914d\u7f6e)\u4ece\u5e93\u7684IP\u548c\u7aef\u53e3\uff0c@\u540e\u9762\u7684\u6570\u5b57\u4ee3\u8868\u6743\u91cd\uff0c\u7528\u6765\u4f5c\u8d1f\u8f7d\u5747\u8861\uff0c\u82e5\u7701\u7565\u5219\u9ed8\u8ba4\u4e3a1\uff0c\u53ef\u8bbe\u7f6e\u591a\u9879\uff0c\u7528\u9017\u53f7\u5206\u9694\u3002\u5982\u679c\u60f3\u8ba9\u4e3b\u5e93\u4e5f\u80fd\u5206\u62c5\u8bfb\u8bf7\u6c42\u7684\u8bdd\uff0c\u53ea\u9700\u8981\u5c06\u4e3b\u5e93\u4fe1\u606f\u52a0\u5165\u5230\u4e0b\u9762\u7684\u914d\u7f6e\u9879\u4e2d\n 9 proxy-read-only-backend-addresses = 192.168.0.13:3306,192.168.0.14:3306\n10 #(\u5fc5\u5907\uff0c\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u914d\u7f6e)\u7528\u6237\u540d\u4e0e\u5176\u5bf9\u5e94\u7684\u52a0\u5bc6\u8fc7\u7684MySQL\u5bc6\u7801\uff0c\u5bc6\u7801\u4f7f\u7528PREFIX\/bin\u76ee\u5f55\u4e0b\u7684\u52a0\u5bc6\u7a0b\u5e8fencrypt\u52a0\u5bc6\uff0c\u7528\u6237\u540d\u4e0e\u5bc6\u7801\u4e4b\u95f4\u7528\u5192\u53f7\u5206\u9694\u3002\u4e3b\u4ece\u6570\u636e\u5e93\u4e0a\u9700\u8981\u5148\u521b\u5efa\u8be5\u7528\u6237\u5e76\u8bbe\u7f6e\u5bc6\u7801\uff08\u7528\u6237\u540d\u548c\u5bc6\u7801\u5728\u4e3b\u4ece\u6570\u636e\u5e93\u4e0a\u8981\u4e00\u81f4\uff09\u3002\u6bd4\u5982\u7528\u6237\u540d\u4e3amyuser\uff0c\u5bc6\u7801\u4e3amypwd\uff0c\u6267\u884c.\/encrypt mypwd\u7ed3\u679c\u4e3aHJBoxfRsjeI=\u3002\u5982\u679c\u6709\u591a\u4e2a\u7528\u6237\u7528\u9017\u53f7\u5206\u9694\u5373\u53ef\u3002\u5219\u8bbe\u7f6e\u5982\u4e0b\u884c\u6240\u793a\uff1a\n11 pwds = myuser: HJBoxfRsjeI=,myuser2:HJBoxfRsjeI=\n12 #(\u5fc5\u5907\uff0c\u9ed8\u8ba4\u503c\u5373\u53ef)Atlas\u7684\u8fd0\u884c\u65b9\u5f0f\uff0c\u8bbe\u4e3atrue\u65f6\u4e3a\u5b88\u62a4\u8fdb\u7a0b\u65b9\u5f0f\uff0c\u8bbe\u4e3afalse\u65f6\u4e3a\u524d\u53f0\u65b9\u5f0f\uff0c\u4e00\u822c\u5f00\u53d1\u8c03\u8bd5\u65f6\u8bbe\u4e3afalse\uff0c\u7ebf\u4e0a\u8fd0\u884c\u65f6\u8bbe\u4e3atrue\n13 daemon = true\n14 #(\u5fc5\u5907\uff0c\u9ed8\u8ba4\u503c\u5373\u53ef)\u8bbe\u7f6eAtlas\u7684\u8fd0\u884c\u65b9\u5f0f\uff0c\u8bbe\u4e3atrue\u65f6Atlas\u4f1a\u542f\u52a8\u4e24\u4e2a\u8fdb\u7a0b\uff0c\u4e00\u4e2a\u4e3amonitor\uff0c\u4e00\u4e2a\u4e3aworker\uff0cmonitor\u5728worker\u610f\u5916\u9000\u51fa\u540e\u4f1a\u81ea\u52a8\u5c06\u5176\u91cd\u542f\uff0c\u8bbe\u4e3afalse\u65f6\u53ea\u6709worker\uff0c\u6ca1\u6709monitor\uff0c\u4e00\u822c\u5f00\u53d1\u8c03\u8bd5\u65f6\u8bbe\u4e3afalse\uff0c\u7ebf\u4e0a\u8fd0\u884c\u65f6\u8bbe\u4e3atrue\n15 keepalive = true\n16 #(\u5fc5\u5907\uff0c\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u914d\u7f6e)\u5de5\u4f5c\u7ebf\u7a0b\u6570\uff0c\u63a8\u8350\u8bbe\u7f6e\u6210\u7cfb\u7edf\u7684CPU\u6838\u6570\n17 # \u5bf9\u6027\u80fd\u548c\u6b63\u5e38\u8fd0\u884c\u8d77\u5230\u91cd\u8981\u4f5c\u7528\n18 event-threads = 4\n19 #(\u5fc5\u5907\uff0c\u9ed8\u8ba4\u503c\u5373\u53ef)\u65e5\u5fd7\u7ea7\u522b\uff0c\u5206\u4e3amessage\u3001warning\u3001critical\u3001error\u3001debug\u4e94\u4e2a\u7ea7\u522b\n20 log-level = message\n21 #(\u5fc5\u5907\uff0c\u9ed8\u8ba4\u503c\u5373\u53ef)\u65e5\u5fd7\u5b58\u653e\u7684\u8def\u5f84\n22 log-path = \/usr\/local\/mysql-proxy\/log\n23 #(\u5fc5\u5907\uff0c\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u914d\u7f6e)SQL\u65e5\u5fd7\u7684\u5f00\u5173\uff0c\u53ef\u8bbe\u7f6e\u4e3aOFF\u3001ON\u3001REALTIME\uff0cOFF\u4ee3\u8868\u4e0d\u8bb0\u5f55SQL\u65e5\u5fd7\uff0cON\u4ee3\u8868\u8bb0\u5f55SQL\u65e5\u5fd7\uff0c\u8be5\u6a21\u5f0f\u4e0b\u65e5\u5fd7\u5237\u65b0\u662f\u57fa\u4e8e\u7f13\u51b2\u533a\u7684\uff0c\u5f53\u65e5\u5fd7\u586b\u6ee1\u7f13\u51b2\u533a\u540e\uff0c\u624d\u5c06\u65e5\u5fd7\u4fe1\u606f\u5237\u5230\u78c1\u76d8\u3002REALTIME\u7528\u4e8e\u8c03\u8bd5\uff0c\u4ee3\u8868\u8bb0\u5f55SQL\u65e5\u5fd7\u4e14\u5b9e\u65f6\u5199\u5165\u78c1\u76d8\uff0c\u9ed8\u8ba4\u4e3aOFF\n24 sql-log = OFF\n25 #(\u53ef\u9009\u9879\uff0c\u53ef\u4e0d\u8bbe\u7f6e\uff09\u6162\u65e5\u5fd7\u8f93\u51fa\u8bbe\u7f6e\u3002\u5f53\u8bbe\u7f6e\u4e86\u8be5\u53c2\u6570\u65f6\uff0c\u5219\u65e5\u5fd7\u53ea\u8f93\u51fa\u6267\u884c\u65f6\u95f4\u8d85\u8fc7sql-log-slow\uff08\u5355\u4f4d\uff1ams)\u7684\u65e5\u5fd7\u8bb0\u5f55\u3002\u4e0d\u8bbe\u7f6e\u8be5\u53c2\u6570\u5219\u8f93\u51fa\u5168\u90e8\u65e5\u5fd7\u3002\n26 sql-log-slow = 10\n27 #(\u53ef\u9009\u9879\uff0c\u53ef\u4e0d\u8bbe\u7f6e\uff09\u5173\u95ed\u4e0d\u6d3b\u8dc3\u7684\u5ba2\u6237\u7aef\u8fde\u63a5\u8bbe\u7f6e\u3002\u5f53\u8bbe\u7f6e\u4e86\u8be5\u53c2\u6570\u65f6\uff0cAtlas\u4f1a\u4e3b\u52a8\u5173\u95ed\u7ecf\u8fc7\\'wait-timeout\\'\u65f6\u95f4\u540e\u4e00\u76f4\u672a\u6d3b\u8dc3\u7684\u8fde\u63a5\u3002\u5355\u4f4d\uff1a\u79d2\n28 wait-timeout = 10\n29 #(\u5fc5\u5907\uff0c\u9ed8\u8ba4\u503c\u5373\u53ef)Atlas\u76d1\u542c\u7684\u5de5\u4f5c\u63a5\u53e3IP\u548c\u7aef\u53e3\uff1b\u4ee3\u8868\u5ba2\u6237\u7aef\u5e94\u8be5\u4f7f\u75281234\u8fd9\u4e2a\u7aef\u53e3\u8fde\u63a5Atlas\u6765\u53d1\u9001SQL\u8bf7\u6c42\u3002\n30 proxy-address = 0.0.0.0:1234\n31 #(\u5fc5\u5907\uff0c\u9ed8\u8ba4\u503c\u5373\u53ef)Atlas\u76d1\u542c\u7684\u7ba1\u7406\u63a5\u53e3IP\u548c\u7aef\u53e3 \uff1b\u4ee3\u8868DBA\u5e94\u8be5\u4f7f\u75282345\u8fd9\u4e2a\u7aef\u53e3\u8fde\u63a5Atlas\u6765\u6267\u884c\u8fd0\u7ef4\u7ba1\u7406\u64cd\u4f5c\u3002\n32 admin-address = 0.0.0.0:2345\n33 #(\u53ef\u9009\u9879\uff0c\u53ef\u4e0d\u8bbe\u7f6e)\u5206\u8868\u8bbe\u7f6e\uff0c\u6b64\u4f8b\u4e2dperson\u4e3a\u5e93\u540d\uff0cmt\u4e3a\u8868\u540d\uff0cid\u4e3a\u5206\u8868\u5b57\u6bb5\uff0c3\u4e3a\u5b50\u8868\u6570\u91cf\uff0c\u53ef\u8bbe\u7f6e\u591a\u9879\uff0c\u4ee5\u9017\u53f7\u5206\u9694\uff0c\u82e5\u4e0d\u5206\u8868\u5219\u4e0d\u9700\u8981\u8bbe\u7f6e\u8be5\u9879\uff0c\u5b50\u8868\u9700\u8981\u4e8b\u5148\u5efa\u597d\uff0c\u5b50\u8868\u540d\u79f0\u4e3a\u8868\u540d_\u6570\u5b57\uff0c\u6570\u5b57\u8303\u56f4\u4e3a[0,\u5b50\u8868\u6570-1]\uff0c\u5982\u672c\u4f8b\u91cc\uff0c\u5b50\u8868\u540d\u79f0\u4e3amt_0\u3001mt_1\u3001mt_2\n34 tables = person.mt.id.3\n35 #(\u53ef\u9009\u9879\uff0c\u53ef\u4e0d\u8bbe\u7f6e)\u9ed8\u8ba4\u5b57\u7b26\u96c6\uff0c\u82e5\u4e0d\u8bbe\u7f6e\u8be5\u9879\uff0c\u5219\u9ed8\u8ba4\u5b57\u7b26\u96c6\u4e3alatin1\n36 charset = utf8\n37 #(\u53ef\u9009\u9879\uff0c\u53ef\u4e0d\u8bbe\u7f6e)\u5141\u8bb8\u8fde\u63a5Atlas\u7684\u5ba2\u6237\u7aef\u7684IP\uff0c\u53ef\u4ee5\u662f\u7cbe\u786eIP\uff0c\u4e5f\u53ef\u4ee5\u662fIP\u6bb5\uff0c\u4ee5\u9017\u53f7\u5206\u9694\uff0c\u82e5\u4e0d\u8bbe\u7f6e\u8be5\u9879\u5219\u5141\u8bb8\u6240\u6709IP\u8fde\u63a5\uff0c\u5426\u5219\u53ea\u5141\u8bb8\u5217\u8868\u4e2d\u7684IP\u8fde\u63a5\n38 client-ips = 127.0.0.1, 192.168.1\n39 #(\u53ef\u9009\u9879\uff0c\u6781\u5c11\u9700\u8981)Atlas\u524d\u9762\u6302\u63a5\u7684LVS\u7684\u7269\u7406\u7f51\u5361\u7684IP(\u6ce8\u610f\u4e0d\u662f\u865aIP)\uff0c\u82e5\u6709LVS\u4e14\u8bbe\u7f6e\u4e86client-ips\u5219\u6b64\u9879\u5fc5\u987b\u8bbe\u7f6e\uff0c\u5426\u5219\u53ef\u4ee5\u4e0d\u8bbe\u7f6e\n40 lvs-ips = 192.168.1.1<\/pre>\n<\/div>\n<p><span class=\\\"cnblogs_code_collapse\\\">View Code Atlas\u914d\u7f6e\u6587\u4ef6\u8bf4\u660e<\/span>\n<\/div>\n<\/div>\n<h3><span id=\\\"177_Atlas\\\">1.7.7 \u542f\u52a8Atlas<\/span><\/h3>\n<p>\u7f16\u5199\u4e00\u4e2aatlas\u7684\u7ba1\u7406\u811a\u672c\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u5199\u811a\u672c\uff0c\u53ef\u4ee5\u76f4\u63a5\u624b\u52a8\u7684\u7ba1\u7406\uff1a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>\/usr\/local\/mysql-proxy\/bin\/mysql-proxyd test start   #\u542f\u52a8\n\/usr\/local\/mysql-proxy\/bin\/mysql-proxyd test stop    #\u505c\u6b62\n\/usr\/local\/mysql-proxy\/bin\/mysql-proxyd test restart #\u91cd\u542f<\/pre>\n<\/div>\n<p>\u6ce8\u610f\uff1atest\u662f\u914d\u7f6e\u6587\u4ef6\u7684\u540d\u79f0\n<\/p><\/div>\n<p>\u811a\u672c\u5185\u5bb9\uff1a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\"><img id=\\\"code_img_closed_d45ef69b-9876-450c-bb26-61fbc042600d\\\" class=\\\"code_img_closed\\\" src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/ContractedBlock-4.gif\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" \/><\/p>\n<div id=\\\"cnblogs_code_open_d45ef69b-9876-450c-bb26-61fbc042600d\\\" class=\\\"cnblogs_code_hide\\\">\n<pre> 1 [root@db03 ~]# cat \/etc\/init.d\/atlasd\n 2 #!\/bin\/sh\n 3 #\n 4 # atlas:    Atlas Daemon\n 5 #\n 6 # chkconfig:    - 90 25\n 7 # description:  Atlas Daemon\n 8 # user:clsn\n 9 # Blog: http:\/\/blog.nmtui.com\n10 # Source function library.\n11\n12 Demo=test\n13\n14 start()\n15 {\n16         echo -n $\\\"Starting atlas: \\\"\n17         \/usr\/local\/mysql-proxy\/bin\/mysql-proxyd $Demo start\n18 }\n19 stop()\n20 {\n21         echo -n $\\\"Shutting down atlas: \\\"\n22         \/usr\/local\/mysql-proxy\/bin\/mysql-proxyd $Demo stop\n23 }\n24 status()\n25 {\n26         echo  $\\\"Atlas status: \\\"\n27         \/usr\/local\/mysql-proxy\/bin\/mysql-proxyd $Demo status\n28 }\n29 restart()\n30 {\n31         echo $\\\"Atlas Restart Info: \\\"\n32         \/usr\/local\/mysql-proxy\/bin\/mysql-proxyd $Demo restart\n33 }\n34\n35\n36 ATLAS=\\\"\/usr\/local\/mysql-proxy\/bin\/mysql-proxyd\\\"\n37 [ -f $ATLAS ] || exit 1\n38 # See how we were called.\n39 case \\\"$1\\\" in\n40         start)\n41                 start\n42                 ;;\n43         stop)\n44                 stop\n45                 ;;\n46         restart)\n47                 restart\n48                 ;;\n49         status)\n50                 status\n51                 ;;\n52         *)\n53                 echo $\\\"Usage: $0 {start|stop|restart|status}\\\"\n54                 exit 1\n55 esac\n56 exit 0<\/pre>\n<\/div>\n<p><span class=\\\"cnblogs_code_collapse\\\">View Code Atas\u7ba1\u7406\u811a\u672c<\/span>\n<\/div>\n<\/div>\n<p>\u68c0\u67e5\u7aef\u53e3\u662f\u5426\u6b63\u5e38<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# netstat -lntup|grep mysql-proxy\ntcp        0      0 0.0.0.0:33060               0.0.0.0:*                   LISTEN      2125\/mysql-proxy\ntcp        0      0 0.0.0.0:2345                0.0.0.0:*                   LISTEN      2125\/mysql-proxy<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"178_Atlas\\\">1.7.8 Atlas\u7ba1\u7406\u64cd\u4f5c<\/span><\/h3>\n<p>\u767b\u5165\u7ba1\u7406\u63a5\u53e3<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@db03 ~]# mysql -uuser -ppwd -h127.0.0.1 -P2345<\/pre>\n<\/div>\n<p class=\\\"ad\\\">\u3000\u3000\u67e5\u770b\u5e2e\u52a9\u4fe1\u606f<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt; SELECT * FROM help;<\/pre>\n<\/div>\n<p class=\\\"ad\\\">\u3000\u3000\u67e5\u770b\u540e\u7aef\u7684\u4ee3\u7406\u5e93<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt; SELECT * FROM backends;\n+-------------+----------------+-------+------+\n| backend_ndx | address        | state | type |\n+-------------+----------------+-------+------+\n|           1 | 10.0.0.55:3306 | up    | rw   |\n|           2 | 10.0.0.52:3306 | up    | ro   |\n|           3 | 10.0.0.53:3306 | up    | ro   |\n+-------------+----------------+-------+------+\n3 rows in set (0.00 sec)<\/pre>\n<\/div>\n<p>\u5e73\u6ed1\u6458\u9664mysql<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt;  REMOVE BACKEND 2;\nEmpty set (0.00 sec)<\/pre>\n<\/div>\n<p class=\\\"ad\\\">\u3000\u3000\u00a0\u68c0\u67e5\u662f\u5426\u6458\u9664<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt; SELECT * FROM backends;\n+-------------+----------------+-------+------+\n| backend_ndx | address        | state | type |\n+-------------+----------------+-------+------+\n|           1 | 10.0.0.55:3306 | up    | rw   |\n|           2 | 10.0.0.53:3306 | up    | ro   |\n+-------------+----------------+-------+------+\n2 rows in set (0.00 sec)<\/pre>\n<\/div>\n<p>\u4fdd\u5b58\u5230\u914d\u7f6e\u6587\u4ef6\u4e2d<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt; SAVE CONFIG;<\/pre>\n<\/div>\n<p class=\\\"ad\\\">\u3000\u3000\u5c06\u8282\u70b9\u518d\u6dfb\u52a0\u56de\u6765<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt; add slave 10.0.0.52:3306;\nEmpty set (0.00 sec)<\/pre>\n<\/div>\n<p class=\\\"ad\\\">\u3000\u3000\u67e5\u770b\u662f\u5426\u6dfb\u52a0\u6210\u529f<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt; SELECT * FROM backends;\n+-------------+----------------+-------+------+\n| backend_ndx | address        | state | type |\n+-------------+----------------+-------+------+\n|           1 | 10.0.0.55:3306 | up    | rw   |\n|           2 | 10.0.0.53:3306 | up    | ro   |\n|           3 | 10.0.0.52:3306 | up    | ro   |\n+-------------+----------------+-------+------+\n3 rows in set (0.00 sec)<\/pre>\n<\/div>\n<p>\u4fdd\u5b58\u5230\u914d\u7f6e\u6587\u4ef6\u4e2d<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt; SAVE CONFIG;<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"179\\\">1.7.9 \u8fde\u63a5\u6570\u636e\u5e93\u67e5\u770b\u8d1f\u8f7d<\/span><\/h3>\n<p>\u901a\u8fc7atlas\u767b\u9646\u6570\u636e\uff0c\u6ce8\u610f\uff0c\u4f7f\u7528\u7684\u662f\u6570\u636e\u5e93\u4e0a\u7684\u7528\u6237\u53ca\u5bc6\u7801<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>shell&gt; mysql -umha -pmha -h127.0.0.1 -P33060<\/pre>\n<\/div>\n<\/div>\n<p>\u7b2c\u4e00\u6b21\u67e5\u8be2server_id<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt; show variables like \\\"server_id\\\";\n+---------------+-------+\n| Variable_name | Value |\n+---------------+-------+\n| server_id     | 53    |\n+---------------+-------+\n1 row in set (0.00 sec)<\/pre>\n<\/div>\n<\/div>\n<p>\u7b2c\u4e8c\u6b21\u67e5\u8be2server_id<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>mysql&gt; show variables like \\\"server_id\\\";\n+---------------+-------+\n| Variable_name | Value |\n+---------------+-------+\n| server_id     | 52    |\n+---------------+-------+\n1 row in set (0.00 sec)<\/pre>\n<\/div>\n<\/div>\n<p><strong><em>\u901a\u8fc7\u4e0a\u9762\u53ef\u4ee5\u770b\u5230\u8d1f\u8f7d\u6210\u529f<\/em><\/strong><\/p>\n<h3><span id=\\\"1710\\\">1.7.10 \u8bfb\u5199\u5206\u79bb\u7684\u8bf4\u660e<\/span><\/h3>\n<p>Atlas\u4f1a\u900f\u660e\u7684\u5c06\u4e8b\u52a1\u8bed\u53e5\u548c\u5199\u8bed\u53e5\u53d1\u9001\u81f3\u4e3b\u5e93\u6267\u884c\uff0c\u8bfb\u8bed\u53e5\u53d1\u9001\u81f3\u4ece\u5e93\u6267\u884c\u3002\u5177\u4f53\u4ee5\u4e0b\u8bed\u53e5\u4f1a\u5728\u4e3b\u5e93\u6267\u884c\uff1a<br \/>\n\u663e\u5f0f\u4e8b\u52a1\u4e2d\u7684\u8bed\u53e5<\/p>\n<blockquote><p>autocommit=0\u65f6\u7684\u6240\u6709\u8bed\u53e5<br \/>\n\u542b\u6709select GET_LOCK()\u7684\u8bed\u53e5<br \/>\n\u9664SELECT\u3001SET\u3001USE\u3001SHOW\u3001DESC\u3001EXPLAIN\u5916\u7684\u3002<\/p><\/blockquote>\n<p><strong>\u4ece\u5e93\u8d1f\u8f7d\u5747\u8861\u914d\u7f6e<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>proxy-read-only-backend-addresses=ip1:port1@\u6743\u91cd,ip2:port2@\u6743\u91cd<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"1711_Atlas\\\">1.7.11 Atlas\u9ad8\u7ea7\u529f\u80fd<\/span><\/h3>\n<p><strong>\u81ea\u52a8\u5206\u8868<\/strong><br \/>\n\u4f7f\u7528Atlas\u7684\u5206\u8868\u529f\u80fd\u65f6\uff0c\u9996\u5148\u9700\u8981\u5728\u914d\u7f6e\u6587\u4ef6test.cnf\u8bbe\u7f6etables\u53c2\u6570\u3002<br \/>\ntables\u53c2\u6570\u8bbe\u7f6e\u683c\u5f0f\uff1a\u6570\u636e\u5e93\u540d.\u8868\u540d.\u5206\u8868\u5b57\u6bb5.\u5b50\u8868\u6570\u91cf\uff0c\u6bd4\u5982\uff1a<\/p>\n<div>\n<blockquote>\n<p class=\\\"a4\\\">\u4f60\u7684\u6570\u636e\u5e93\u540d\u53ebschool\uff0c\u8868\u540d\u53ebstu\uff0c\u5206\u8868\u5b57\u6bb5\u53ebid\uff0c\u603b\u5171\u5206\u4e3a2\u5f20\u8868\uff0c\u90a3\u4e48\u5c31\u5199\u4e3aschool.stu.id.2\uff0c\u5982\u679c\u8fd8\u6709\u5176\u4ed6\u7684\u5206\u8868\uff0c\u4ee5\u9017\u53f7\u5206\u9694\u5373\u53ef\u3002<\/p>\n<p class=\\\"a4\\\">\u7528\u6237\u9700\u8981\u624b\u52a8\u5efa\u7acb2\u5f20\u5b50\u8868\uff08stu_0,stu_1\uff0c\u6ce8\u610f\u5b50\u8868\u5e8f\u53f7\u662f\u4ece0\u5f00\u59cb\u7684\uff09\u3002<\/p>\n<p class=\\\"a4\\\">\u6240\u6709\u7684\u5b50\u8868\u5fc5\u987b\u5728DB\u7684\u540c\u4e00\u4e2adatabase\u91cc\u3002<\/p>\n<p class=\\\"a4\\\">\u5f53\u901a\u8fc7Atlas\u6267\u884c\uff08SELECT\u3001DELETE\u3001UPDATE\u3001INSERT\u3001REPLACE\uff09\u64cd\u4f5c\u65f6\uff0cAtlas\u4f1a\u6839\u636e\u5206\u8868\u7ed3\u679c\uff08id%2=k\uff09\uff0c\u5b9a\u4f4d\u5230\u76f8\u5e94\u7684\u5b50\u8868\uff08stu_k\uff09\u3002<\/p>\n<p class=\\\"a4\\\">\u4f8b\u5982\uff0c\u6267\u884cselect * from stu where id=3;\uff0cAtlas\u4f1a\u81ea\u52a8\u4ecestu_1\u8fd9\u5f20\u5b50\u8868\u8fd4\u56de\u67e5\u8be2\u7ed3\u679c\u3002<\/p>\n<p class=\\\"a4\\\">\u4f46\u5982\u679c\u6267\u884cSQL\u8bed\u53e5\uff08select * from stu;\uff09\u65f6\u4e0d\u5e26\u4e0aid\uff0c\u5219\u4f1a\u63d0\u793a\u6267\u884cstu\u8868\u4e0d\u5b58\u5728\u3002<\/p>\n<\/blockquote>\n<\/div>\n<p>Atles\u529f\u80fd\u7684\u8bf4\u660e<\/p>\n<div>\n<blockquote>\n<p class=\\\"a4\\\">Atlas\u6682\u4e0d\u652f\u6301\u81ea\u52a8\u5efa\u8868\u548c\u8de8\u5e93\u5206\u8868\u7684\u529f\u80fd\u3002<\/p>\n<p class=\\\"a4\\\">Atlas\u76ee\u524d\u652f\u6301\u5206\u8868\u7684\u8bed\u53e5\u6709SELECT\u3001DELETE\u3001UPDATE\u3001INSERT\u3001REPLACE\u3002<\/p>\n<\/blockquote>\n<\/div>\n<p><strong>IP<\/strong><strong>\u8fc7\u6ee4\uff1aclient-ips<\/strong><br \/>\n\u8be5\u53c2\u6570\u7528\u6765\u5b9e\u73b0IP\u8fc7\u6ee4\u529f\u80fd\u3002<br \/>\n\u5728\u4f20\u7edf\u7684\u5f00\u53d1\u6a21\u5f0f\u4e2d\uff0c\u5e94\u7528\u7a0b\u5e8f\u76f4\u63a5\u8fde\u63a5DB\uff0c\u56e0\u6b64DB\u4f1a\u5bf9\u90e8\u7f72\u5e94\u7528\u7684\u673a\u5668(\u6bd4\u5982web\u670d\u52a1\u5668)\u7684IP\u4f5c\u8bbf\u95ee\u6388\u6743\u3002<br \/>\n\u5728\u5f15\u5165\u4e2d\u95f4\u5c42\u540e\uff0c\u56e0\u4e3a\u8fde\u63a5DB\u7684\u662fAtlas\uff0c\u6240\u4ee5DB\u6539\u4e3a\u5bf9\u90e8\u7f72Atlas\u7684\u673a\u5668\u7684IP\u4f5c\u8bbf\u95ee\u6388\u6743\uff0c\u5982\u679c\u4efb\u610f\u4e00\u53f0\u5ba2\u6237\u7aef\u90fd\u53ef\u4ee5\u8fde\u63a5Atlas\uff0c\u5c31\u4f1a\u5e26\u6765\u6f5c\u5728\u7684\u98ce\u9669\u3002<br \/>\nclient-ips\u53c2\u6570\u7528\u6765\u63a7\u5236\u8fde\u63a5Atlas\u7684\u5ba2\u6237\u7aef\u7684IP\uff0c\u53ef\u4ee5\u662f\u7cbe\u786eIP\uff0c\u4e5f\u53ef\u4ee5\u662fIP\u6bb5\uff0c\u4ee5\u9017\u53f7\u5206\u9694\u5199\u5728\u4e00\u884c\u4e0a\u5373\u53ef\u3002<br \/>\n\u5982\uff1a\u00a0<span class=\\\"cnblogs_code\\\">client-ips=192.168.1.2,\u00a0192.168.2<\/span><\/p>\n<div>\n<p class=\\\"a4\\\">\u3000\u3000\u8fd9\u5c31\u4ee3\u8868192.168.1.2\u8fd9\u4e2aIP\u548c192.168.2.*\u8fd9\u4e2a\u6bb5\u7684IP\u53ef\u4ee5\u8fde\u63a5Atlas\uff0c\u5176\u4ed6IP\u5747\u4e0d\u80fd\u8fde\u63a5\u3002\u5982\u679c\u8be5\u53c2\u6570\u4e0d\u8bbe\u7f6e\uff0c\u5219\u4efb\u610fIP\u5747\u53ef\u8fde\u63a5Atlas\u3002\u5982\u679c\u8bbe\u7f6e\u4e86client-ips\u53c2\u6570\uff0c\u4e14Atlas\u524d\u9762\u6302\u6709LVS\uff0c\u5219\u5fc5\u987b\u8bbe\u7f6elvs-ips\u53c2\u6570\uff0c\u5426\u5219\u53ef\u4ee5\u4e0d\u8bbe\u7f6elvs-ips\u3002<\/p>\n<\/div>\n<p><strong>SQL<\/strong><strong>\u8bed\u53e5\u9ed1\u767d\u540d\u5355\u529f\u80fd\uff1a<\/strong>\u00a0Atlas\u4f1a\u5c4f\u853d\u4e0d\u5e26where\u6761\u4ef6\u7684delete\u548cupdate\u64cd\u4f5c\uff0c\u4ee5\u53casleep\u51fd\u6570\u3002<\/p>\n<h2><span id=\\\"18_Atlas-Sharding\\\">1.8 Atlas-Sharding\u7248\u672c<\/span><\/h2>\n<h3><span id=\\\"181\\\">1.8.1 \u7248\u672c\u4ecb\u7ecd<\/span><\/h3>\n<p>Sharding\u7684\u57fa\u672c\u601d\u60f3\u5c31\u662f\u628a\u4e00\u4e2a\u6570\u636e\u8868\u4e2d\u7684\u6570\u636e\u5207\u5206\u6210\u591a\u4e2a\u90e8\u5206,\u00a0 \u5b58\u653e\u5230\u4e0d\u540c\u7684\u4e3b\u673a\u4e0a\u53bb(\u5207\u5206\u7684\u7b56\u7565\u6709\u591a\u79cd),\u00a0 \u4ece\u800c\u7f13\u89e3\u5355\u53f0\u673a\u5668\u7684\u6027\u80fd\u8ddf\u5bb9\u91cf\u7684\u95ee\u9898.<br \/>\nsharding\u662f\u4e00\u79cd\u6c34\u5e73\u5207\u5206, \u9002\u7528\u4e8e\u5355\u8868\u6570\u636e\u5e9e\u5927\u7684\u60c5\u666f. \u76ee\u524datlas\u652f\u6301\u9759\u6001\u7684<br \/>\nsharding\u65b9\u6848, \u6682\u65f6\u4e0d\u652f\u6301\u6570\u636e\u7684\u81ea\u52a8\u8fc1\u79fb\u4ee5\u53ca\u6570\u636e\u7ec4\u7684\u52a8\u6001\u52a0\u5165.<br \/>\nAtlas\u4ee5\u8868\u4e3a\u5355\u4f4dsharding, \u540c\u4e00\u4e2a\u6570\u636e\u5e93\u5185\u53ef\u4ee5\u540c\u65f6\u5171\u6709sharding\u7684\u8868\u548c\u4e0dsharding\u7684\u8868, \u4e0dsharding\u7684\u8868\u6570\u636e\u5b58\u5728\u672asharding\u7684\u6570\u636e\u5e93\u7ec4\u4e2d.<br \/>\n\u76ee\u524dAtlas sharding\u652f\u6301insert, delete, select, update\u8bed\u53e5,\u00a0 \u53ea\u652f\u6301\u4e0d\u8de8shard\u7684\u4e8b\u52a1. \u6240\u6709\u7684\u5199\u64cd\u4f5c\u5982insert, delete,\u00a0 update\u53ea\u80fd\u4e00\u6b21\u547d\u4e2d\u4e00\u4e2a\u7ec4, \u5426\u5219\u4f1a\u62a5\\&#8221;ERROR 1105 (HY000):write operation\u00a0 is only allow to one dbgroup!\\&#8221;\u9519\u8bef.<br \/>\n\u7531\u4e8esharding\u53d6\u66ff\u4e86Atlas\u7684\u5206\u8868\u529f\u80fd, \u6240\u4ee5\u5728Sharding\u5206\u652f\u91cc\u9762,\u00a0 Atlas\u5355\u673a\u5206\u8868\u7684\u529f\u80fd\u5df2\u7ecf\u79fb\u9664, \u914d\u7f6etables\u5c06\u4e0d\u4f1a\u518d\u6709\u6548.<\/p>\n<h3><span id=\\\"182_Atlas-Sharding\\\">1.8.2 Atlas-Sharding\u67b6\u6784<\/span><\/h3>\n<p align=\\\"center\\\">\u00a0<img src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230183135851-1350555351.png\\\" alt=\\\"MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb\\\" data-original=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171230183135851-1350555351.png\\\" \/><\/p>\n<h3><span id=\\\"183_Sharding\\\">1.8.3 Sharding\u914d\u7f6e\u793a\u4f8b<\/span><\/h3>\n<p>Atlas\u652f\u6301\u975esharding\u8ddfsharding\u7684\u8868\u5171\u5b58\u5728\u540c\u4e00\u4e2aAtlas\u4e2d, 2.2.1\u4e4b\u524d\u7684\u914d\u7f6e\u53ef\u4ee5\u76f4\u63a5\u8fd0\u884c. \u4e4b\u524d\u7684\u914d\u7f6e\u5982<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>proxy-backend-addresses = 192.168.0.12:3306\nproxy-read-only-backend-addresses = 192.168.0.13:3306,192.168.0.14:3306 ...<\/pre>\n<\/div>\n<p>\u8fd9\u914d\u7f6e\u4e86\u4e00\u4e2amaster\u548c\u4e24\u4e2aslave,\u8fd9\u5c5e\u4e8e\u975esharding\u7684\u7ec4, \u6240\u6709\u975esharding\u7684\u8868\u8ddf\u8bed\u53e5\u90fd\u4f1a\u53d1\u5f80\u8fd9\u4e2a\u7ec4\u5185.<br \/>\n\u6240\u4ee5\u4e4b\u524d\u6ca1\u6709Sharding\u7684Atlas\u7684\u8868\u53ef\u4ee5\u65e0\u7f1d\u7684\u5728\u65b0\u7248\u4e0a\u4f7f\u7528,\n<\/p><\/div>\n<p><strong>\u6ce8\u610f:<\/strong>\u00a0\u975eSharding\u7684\u7ec4\u53ea\u80fd\u914d\u7f6e\u4e00\u4e2a, \u800csharding\u7684\u7ec4\u53ef\u4ee5\u914d\u7f6e\u591a\u4e2a. \u4e0b\u9762\u7684\u914d\u7f6e, \u914d\u7f6e\u4e86Sharding\u7684\u7ec4,\u00a0 \u6ce8\u610f\u4e0e\u4e0a\u9762\u7684\u914d\u7f6e\u533a\u5206<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[shardrule-0]\ntable = test.sharding_test<\/pre>\n<\/div>\n<\/div>\n<p>\u5206\u8868\u540d\uff0c\u6709\u6570\u636e\u5e93+\u8868\u540d\u7ec4\u6210\u00a0 t<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>ype = range<\/pre>\n<\/div>\n<\/div>\n<p>sharding\u7c7b\u578b\uff1arange \u6216 hash<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>shard-key = id<\/pre>\n<\/div>\n<\/div>\n<p>sharding \u5b57\u6bb5<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>groups = 0:0-999,1:1000-1999<\/pre>\n<\/div>\n<\/div>\n<p>\u5206\u7247\u7684group\uff0c\u5982\u679c\u662frange\u7c7b\u578b\u7684sharding\uff0c\u5219groups\u7684\u683c\u5f0f\u662f\uff1agroup_id:id\u8303\u56f4\u3002\u5982\u679c\u662fhash\u7c7b\u578b\u7684sharding\uff0c\u5219groups\u7684\u683c\u5f0f\u662f\uff1agroup_id\u3002\u4f8b\u5982groups = 0, 1<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[group-0]\nproxy-backend-addresses=192.168.0.15:3306\nproxy-read-only-backend-addresses=192.168.0.16:3306\n[group-1]\nproxy-backend-addresses=192.168.0.17:3306\nproxy-read-only-backend-addresses=192.168.0.18:3306<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"184_Sharding\\\">1.8.4 Sharding\u9650\u5236<\/span><\/h3>\n<p><strong>\u5173\u4e8e\u652f\u6301\u7684\u8bed\u53e5<\/strong><br \/>\nAtlas sharding\u53ea\u5bf9sql\u8bed\u53e5\u63d0\u4f9b\u6709\u9650\u7684\u652f\u6301, \u76ee\u524d\u652f\u6301\u57fa\u672c\u7684Select, insert\/replace, delete,update\u8bed\u53e5,\u652f\u6301\u5168\u90e8\u7684Where\u8bed\u6cd5(SQL-92\u6807\u51c6), \u4e0d\u652f\u6301DDL(create drop alter)\u4ee5\u53ca\u4e00\u4e9b\u7ba1\u7406\u8bed\u53e5,DDL\u8bf7\u76f4\u8fdeMYSQL\u6267\u884c, \u8bf7\u53ea\u5728Atlas\u4e0a\u6267\u884cSelect, insert, delete, update(CRUD)\u8bed\u53e5.<br \/>\n\u5bf9\u4e8e\u4ee5\u4e0b\u8bed\u53e5, \u5982\u679c\u8bed\u53e5\u547d\u4e2d\u4e86\u591a\u53f0dbgroup, Atlas\u5747\u672a\u505a\u652f\u6301(\u5982\u679c\u8bed\u53e5\u53ea\u547d\u4e2d\u4e86\u4e00\u4e2adbgroup, \u5982\u00a0 select count(*) from test where id &lt; 1000, \u5176\u4e2ddbgroup0\u8303\u56f4\u662f0 &#8211; 1000,\u00a0 \u90a3\u4e48\u8fd9\u4e9b\u7279\u6027\u90fd\u662f\u652f\u6301\u7684)Limit Offset(\u652f\u6301Limit)<\/p>\n<blockquote><p>Order by<\/p>\n<div>\n<p class=\\\"ad\\\">Group by\u00a0 Join<\/p>\n<p class=\\\"ad\\\">ON<\/p>\n<p class=\\\"ad\\\">Count, Max, Min\u7b49\u51fd\u6570<\/p>\n<\/div>\n<\/blockquote>\n<p><strong>\u589e\u52a0\u8282\u70b9<\/strong><br \/>\n\u6ce8\u610f: \u6682\u65f6\u53ea\u652f\u6301range\u65b9\u5f0f\u7684\u8282\u70b9\u6269\u5c55, hash\u65b9\u5f0f\u7531\u4e8e\u9700\u8981\u6570\u636e\u8fc1\u79fb, \u6682\u65f6\u672a\u505a\u652f\u6301.<br \/>\n\u6269\u5c55\u8282\u70b9\u5728\u4fdd\u8bc1\u539f\u6765\u8282\u70b9\u7684\u8303\u56f4\u4e0d\u6539\u53d8\u7684\u60c5\u51b5\u4e0b, \u5982\u5df2\u6709dbgroup0\u4e3a\u8303\u56f40 &#8211; 999, dbgroup1\u4e3a\u8303\u56f4 1000-1999, \u8fd9\u4e2a\u65f6\u5019\u53ef\u4ee5\u589e\u52a0\u8303\u56f4&gt;2000\u7684\u8282\u70b9. \u5982\u589e\u52a0\u4e00\u4e2a\u8282\u70b9\u4e3a2000 &#8211; 2999, \u4fee\u6539\u914d\u7f6e\u6587\u4ef6,\u00a0 \u91cd\u542fAtlas\u5373\u53ef.\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>1.1 MHA\u7b80\u4ecb 1.1.1 MHA\u8f6f\u4ef6\u4ecb\u7ecd MHA\uff08Master High Availability\uff09\u76ee\u524d &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"http:\/\/www.weijing.co\/?p=5433\"> <span class=\"screen-reader-text\">MHA\u9ad8\u53ef\u7528\u67b6\u6784\u4e0eAtlas\u8bfb\u5199\u5206\u79bb<\/span> \u67e5\u770b\u5168\u6587 &raquo;<\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":""},"categories":[90,88],"tags":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"mailpoet_newsletter_max":false,"woocommerce_thumbnail":false,"woocommerce_single":false,"woocommerce_gallery_thumbnail":false,"shop_catalog":false,"shop_single":false,"shop_thumbnail":false},"uagb_author_info":{"display_name":"weijing","author_link":"http:\/\/www.weijing.co\/?author=4"},"uagb_comment_info":0,"uagb_excerpt":"1.1 MHA\u7b80\u4ecb 1.1.1 MHA\u8f6f\u4ef6\u4ecb\u7ecd MHA\uff08Master High Availability\uff09\u76ee\u524d&hellip;","_links":{"self":[{"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/posts\/5433"}],"collection":[{"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/www.weijing.co\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5433"}],"version-history":[{"count":0,"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/posts\/5433\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.weijing.co\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.weijing.co\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5433"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.weijing.co\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}