MySQL如何實現萬億級數據存儲?

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"前言","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"業界對系統的高可用有着基本的要求,簡單的說,這些要求可以總結爲如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"系統架構中不存在單點問題。","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以最大限度的保障服務的可用性。","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一般情況下系統的高可用可以用幾個9來評估。所謂的幾個9就是系統可以保證對外提供的服務的時間達到總時間的百分比。例如如果需要達到99.99的高可用,則系統全年發生故障的總時間不能超過52分鐘。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"系統高可用架構","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們既然需要實現系統的高可用架構,那麼,我們到底需要搭建一個什麼樣的系統架構呢?我們可以將需要搭建的系統架構簡化成下圖所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/2f/2fc4fa8347705c476e92978e2548d594.jpeg","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"服務器規劃","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於我電腦資源有限,我這裏在4臺服務器上搭建高可用環境,大家可以按照本文將環境擴展到更多的服務器,搭建步驟都是一樣的。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"| 主機名 | IP地址 | 安裝的服務 |","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"| --------- | --------------- | ---------------------------------------------------- |","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"| binghe151 | 192.168.175.151 | Mycat、Zookeeper、MySQL、HAProxy、Keepalived、Xinetd |","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"| binghe152 | 192.168.175.152 | Zookeeper、MySQL |","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"| binghe153 | 192.168.175.153 | Zookeeper、MySQL |","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"| binghe154 | 192.168.175.154 | Mycat、MySQL、HAProxy、Keepalived、Xinetd |","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"| binghe155 | 192.168.175.155 | MySQL |","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"注意:HAProxy和Keepalived最好和Mycat部署在同一臺服務器上。","attrs":{}},{"type":"text","text":"","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"安裝MySQL","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"小夥伴們可以關注【冰河技術】微信公衆號,參考《","attrs":{}},{"type":"link","attrs":{"href":"https://mp.weixin.qq.com/s?_biz=Mzg3MzE1NTIzNA==&mid=2247483696&idx=1&sn=11b3a10e4a000a809b2e6ffa684968a3&chksm=cee51efdf99297eb496eef7789d8cf09633839d39d8240e0d7ca0a9920226894c68610bd7e35&token=252189671&lang=zhCN#rd","title":""},"content":[{"type":"text","text":"MySQL之——源碼編譯MySQL8.x+升級gcc+升級cmake(親測完整版)","attrs":{}}]},{"type":"text","text":"》","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"安裝JDK","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於Mycat和Zookeeper的運行需要JDK環境的支持,所有我們需要在每臺服務器上安裝JDK環境。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這裏,我以在binghe151服務器上安裝JDK爲例,其他服務器的安裝方式與在binghe151服務器上的安裝方式相同。安裝步驟如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(1)到JDK官網下載JDK 1.8版本,JDK1.8的下載地址爲:","attrs":{}},{"type":"link","attrs":{"href":"https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html","title":""},"content":[{"type":"text","text":"https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html","attrs":{}}]},{"type":"text","text":"。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"注:我下載的JDK安裝包版本爲:jdk-8u212-linux-x64.tar.gz,如果JDK版本已更新,大家下載對應的版本即可。","attrs":{}},{"type":"text","text":"","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(2)將下載的jdk-8u212-linux-x64.tar.gz安裝包上傳到binghe151服務器的/usr/local/src目錄下。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(3)解壓jdk-8u212-linux-x64.tar.gz文件,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"tar -zxvf jdk-8u212-linux-x64.tar.gz","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(4)將解壓的jdk1.8.0_212目錄移動到binghe151服務器下的/usr/local目錄下,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"mv jdk1.8.0_212/ /usr/local/src/","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(5)配置JDK系統環境變量,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"vim /etc/profile\nJAVA_HOME=/usr/local/jdk1.8.0_212\nCLASS_PATH=.:$JAVA_HOME/lib\nPATH=$JAVA_HOME/bin:$PATH\nexport JAVA_HOME CLASS_PATH PATH","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使系統環境變量生效,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"source /etc/profile","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(6)查看JDK版本,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# java -version\njava version \"1.8.0_212\"\nJava(TM) SE Runtime Environment (build 1.8.0_212-b10)\nJava HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"結果顯示,正確輸出了JDK的版本信息,說明JDK安裝成功。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"安裝Mycat","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下載Mycat 1.6.7.4 Release版本,解壓到服務器的/usr/local/mycat目錄下,並配置Mycat的系統環境變量,隨後,配置Mycat的配置文件,Mycat的最終結果配置如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"schema.xml","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"xml"},"content":[{"type":"text","text":"\n"schema.dtd\">\n\n\n\t\n\t\t\n\t\t\n\t\t\t\n\t\t
\n\t\t\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t\n\t\n\t\n\t\n\t \n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\tselect user()\n\t\t\n\t\n\t\n\t\n\t\tselect user()\n\t\t\n\t\n\t\n\t\n\t\tselect user()\n\t\t\n\t\n\t\n\t\n\t\tselect user()\n\t\t\n\t\n\t\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"server.xml","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"xml"},"content":[{"type":"text","text":"\n"server.dtd\">\n\n\t\n\t\t1\n druidparser\n\t\t3307\n\t\t3308\n\t\t0\n\t\t0.0.0.0\n\t\tutf8mb4\n\t\t2048\n\t\t2\n\t\t2\n\t\t1800000\n\t\t300\n\t\t0\n\t\t0\n\t\t1\n\t\t1000\n\t\t104857600\n\t\t\n\t\t\n\t\t\tio.mycat.server.interceptor.impl.StatisticsSqlInterceptor\n\t\t\n\t\t\n\t\t\tUPDATE,DELETE,INSERT\n\t\t\n\t\t/tmp/sql.txt\n\t\n\t\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\ttrue\n\t\t\ttrue\n\t\t\n\t\n\t\n\t\n\t\t1\n\t\tcTwf23RrpBCEmalp/nx0BAKenNhvNs2NSr9nYiMzHADeEDEfwVWlI6hBDccJjNBJqJxnunHFp5ae63PPnMfGYA==\n\t\tshop\n\t\n\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"rule.xml","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"xml"},"content":[{"type":"text","text":"\n"rule.dtd\">\n\n\t\n\t\t\n\t\t\tcustomer_id\n\t\t\tmod-long\n\t\t\n\t\n\t\n\t\n\t\t4\n\t\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"sequence","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"db","attrs":{}},{"type":"text","text":"conf.properties","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"properties"},"content":[{"type":"text","text":"#sequence stored in datanode\nGLOBAL=mycat\nORDER_MASTER=mycat\nORDER_DETAIL=mycat","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"關於Mycat的配置,僅供大家參考,大家不一定非要按照我這裏配置,根據自身業務需要配置即可。本文的重點是實現Mycat的高可用環境搭建。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在MySQL中創建Mycat連接MySQL的賬戶,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"sql"},"content":[{"type":"text","text":"CREATE USER 'mycat'@'192.168.175.%' IDENTIFIED BY 'mycat';\nALTER USER 'mycat'@'192.168.175.%' IDENTIFIED WITH mysql_native_password BY 'mycat'; \nGRANT SELECT, INSERT, UPDATE, DELETE,EXECUTE ON *.* TO 'mycat'@'192.168.175.%';\nFLUSH PRIVILEGES;","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"安裝Zookeeper集羣","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"安裝配置完JDK後,就需要搭建Zookeeper集羣了,根據對服務器的規劃,現將Zookeeper集羣搭建在“binghe151”、“binghe152”、“binghe153”三臺服務器上。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"1.下載Zookeeper","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"到Apache官網去下載Zookeeper的安裝包,Zookeeper的安裝包下載地址爲:","attrs":{}},{"type":"link","attrs":{"href":"https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/","title":""},"content":[{"type":"text","text":"https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/","attrs":{}}]},{"type":"text","text":"。具體如下圖所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/df/dff8f045ce6bbc5eca9b0871878e11d6.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"也可以在binghe151服務器上執行如下命令直接下載zookeeper-3.5.5。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"執行上述命令就可以直接把apache-zookeeper-3.5.5-bin.tar.gz安裝包下載到binghe151服務器上。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"2.安裝並配置Zookeeper","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"注意:(1)、(2)、(3)步都是在binghe152服務器上執行的。","attrs":{}},{"type":"text","text":"","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(1)解壓Zookeeper安裝包","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在binghe151服務器上執行如下命令,將Zookeeper解壓到“/usr/local/”目錄下,並將Zookeeper目錄修改爲zookeeper-3.5.5。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz\nmv apache-zookeeper-3.5.5-bin zookeeper-3.5.5","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(2)配置Zookeeper系統環境變量","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"同樣,需要在/etc/profile文件中配置Zookeeper系統環境變量,如下:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"ZOOKEEPER_HOME=/usr/local/zookeeper-3.5.5\nPATH=$ZOOKEEPER_HOME/bin:$PATH\nexport ZOOKEEPER_HOME PATH","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"結合之前配置的JDK系統環境變量,/etc/profile,總體配置如下:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"MYSQL_HOME=/usr/local/mysql\nJAVA_HOME=/usr/local/jdk1.8.0_212\nMYCAT_HOME=/usr/local/mycat\nZOOKEEPER_HOME=/usr/local/zookeeper-3.5.5\nMPC_HOME=/usr/local/mpc-1.1.0\nGMP_HOME=/usr/local/gmp-6.1.2\nMPFR_HOME=/usr/local/mpfr-4.0.2\nCLASS_PATH=.:$JAVA_HOME/lib\nLD_LIBRARY_PATH=$MPC_LIB_HOME/lib:$GMP_HOME/lib:$MPFR_HOME/lib:$LD_LIBRARY_PATH\nPATH=$MYSQL_HOME/bin:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$MYCAT_HOME/bin:$PATH\nexport JAVA_HOME ZOOKEEPER_HOME MYCAT_HOME CLASS_PATH MYSQL_HOME MPC_LIB_HOME GMP_HOME MPFR_HOME LD_LIBRARY_PATH PATH","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(3)配置Zookeeper","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先,需要將$ZOOKEEPER","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"HOME/conf($ZOOKEEPER","attrs":{}},{"type":"text","text":"HOME爲Zookeeper的安裝目錄)目錄下的zoo_sample.cfg文件修改爲zoo.cfg文件。具體命令如下:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"cd /usr/local/zookeeper-3.5.5/conf/\nmv zoo_sample.cfg zoo.cfg","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來修改zoo.cfg文件,修改後的具體內容如下:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"tickTime=2000\ninitLimit=10\nsyncLimit=5\ndataDir=/usr/local/zookeeper-3.5.5/data\ndataLogDir=/usr/local/zookeeper-3.5.5/dataLog\nclientPort=2181\nserver.1=binghe151:2888:3888\nserver.2=binghe152:2888:3888\nserver.3=binghe153:2888:3888","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在Zookeeper的安裝目錄下創建data和dataLog兩個文件夾。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"mkdir -p /usr/local/zookeeper-3.5.5/data\nmkdir -p /usr/local/zookeeper-3.5.5/dataLog","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"切換到新建的data目錄下,創建myid文件,具體內容爲數字1,如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"cd /usr/local/zookeeper-3.5.5/data\nvim myid","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"將數字1寫入到文件myid。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"3.將Zookeeper和系統環境變量文件複製到其他服務器","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"注意:(1)、(2)步是在binghe151服務器上執行的。","attrs":{}},{"type":"text","text":"","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(1)複製Zookeeper到其他服務器","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"根據對服務器的規劃,現將Zookeeper複製到binghe152和binghe53服務器,具體執行操作如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"scp -r /usr/local/zookeeper-3.5.5/ binghe152:/usr/local/\nscp -r /usr/local/zookeeper-3.5.5/ binghe153:/usr/local/","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(2)複製系統環境變量文件到其他服務器","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"根據對服務器的規劃,現將系統環境變量文件/etc/profile複製到binghe152、binghe153服務器,具體執行操作如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"scp /etc/profile binghe152:/etc/\nscp /etc/profile binghe153:/etc/","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"上述操作可能會要求輸入密碼,根據提示輸入密碼即可。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"4.修改其他服務器上的myid文件","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"修改binghe152服務器上Zookeeper的myid文件內容爲數字2,同時修改binghe153服務器上Zookeeper的myid文件內容爲數字3。具體如下:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在binghe152服務器上執行如下操作:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"echo \"2\" > /usr/local/zookeeper-3.5.5/data/myid\ncat /usr/local/zookeeper-3.5.5/data/myid\n2","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在binghe153服務器上執行如下操作:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"echo \"3\" > /usr/local/zookeeper-3.5.5/data/myid\ncat /usr/local/zookeeper-3.5.5/data/myid\n3","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"5.使環境變量生效","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分別在binghe151、binghe152、binghe153上執行如下操作,使系統環境變量生效。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"source /etc/profile","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"6.啓動Zookeeper集羣","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分別在binghe151、binghe152、binghe153上執行如下操作,啓動Zookeeper集羣。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"zkServer.sh start","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"7.查看Zookeeper集羣的啓動狀態","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe151服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# zkServer.sh status\nZooKeeper JMX enabled by default\nUsing config: /usr/local/zookeeper-3.5.5/bin/../conf/zoo.cfg\nClient port found: 2181. Client address: localhost.\nMode: follower","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe152服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe152 local]# zkServer.sh status\nZooKeeper JMX enabled by default\nUsing config: /usr/local/zookeeper-3.5.5/bin/../conf/zoo.cfg\nClient port found: 2181. Client address: localhost.\nMode: leader","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe153服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe153 ~]# zkServer.sh status\nZooKeeper JMX enabled by default\nUsing config: /usr/local/zookeeper-3.5.5/bin/../conf/zoo.cfg\nClient port found: 2181. Client address: localhost.\nMode: follower","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到,binghe151和binghe153服務器上的Zookeeper角色爲follower,binghe152服務器上的Zookeeper角色爲leader。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"初始化Mycat配置到Zookeeper集羣","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"注意:初始化Zookeeper中的數據,是在binghe151服務器上進行的,原因是之前我們已經在binghe151服務器上安裝了Mycat。","attrs":{}},{"type":"text","text":"","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"1.查看初始化腳本","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在Mycat安裝目錄下的bin目錄中提供了一個init","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"zk","attrs":{}},{"type":"text","text":"data.sh腳本文件,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# ll /usr/local/mycat/bin/\ntotal 384\n-rwxr-xr-x 1 root root 3658 Feb 26 17:10 dataMigrate.sh\n-rwxr-xr-x 1 root root 1272 Feb 26 17:10 init_zk_data.sh\n-rwxr-xr-x 1 root root 15701 Feb 28 20:51 mycat\n-rwxr-xr-x 1 root root 2986 Feb 26 17:10 rehash.sh\n-rwxr-xr-x 1 root root 2526 Feb 26 17:10 startup_nowrap.sh\n-rwxr-xr-x 1 root root 140198 Feb 28 20:51 wrapper-linux-ppc-64\n-rwxr-xr-x 1 root root 99401 Feb 28 20:51 wrapper-linux-x86-32\n-rwxr-xr-x 1 root root 111027 Feb 28 20:51 wrapper-linux-x86-64","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"init","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"zk","attrs":{}},{"type":"text","text":"data.sh腳本文件就是用來向Zookeeper中初始化Mycat的配置的,這個文件會通過讀取Mycat安裝目錄下的conf目錄下的配置文件,將其初始化到Zookeeper集羣中。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"2.複製Mycat配置文件","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先,我們查看下Mycat安裝目錄下的conf目錄下的文件信息,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# cd /usr/local/mycat/conf/\n[root@binghe151 conf]# ll\ntotal 108\n-rwxrwxrwx 1 root root 92 Feb 26 17:10 autopartition-long.txt\n-rwxrwxrwx 1 root root 51 Feb 26 17:10 auto-sharding-long.txt\n-rwxrwxrwx 1 root root 67 Feb 26 17:10 auto-sharding-rang-mod.txt\n-rwxrwxrwx 1 root root 340 Feb 26 17:10 cacheservice.properties\n-rwxrwxrwx 1 root root 3338 Feb 26 17:10 dbseq.sql\n-rwxrwxrwx 1 root root 3532 Feb 26 17:10 dbseq - utf8mb4.sql\n-rw-r--r-- 1 root root 86 Mar 1 22:37 dnindex.properties\n-rwxrwxrwx 1 root root 446 Feb 26 17:10 ehcache.xml\n-rwxrwxrwx 1 root root 2454 Feb 26 17:10 index_to_charset.properties\n-rwxrwxrwx 1 root root 1285 Feb 26 17:10 log4j2.xml\n-rwxrwxrwx 1 root root 183 Feb 26 17:10 migrateTables.properties\n-rwxrwxrwx 1 root root 271 Feb 26 17:10 myid.properties\n-rwxrwxrwx 1 root root 16 Feb 26 17:10 partition-hash-int.txt\n-rwxrwxrwx 1 root root 108 Feb 26 17:10 partition-range-mod.txt\n-rwxrwxrwx 1 root root 988 Mar 1 16:59 rule.xml\n-rwxrwxrwx 1 root root 3883 Mar 3 23:59 schema.xml\n-rwxrwxrwx 1 root root 440 Feb 26 17:10 sequence_conf.properties\n-rwxrwxrwx 1 root root 84 Mar 3 23:52 sequence_db_conf.properties\n-rwxrwxrwx 1 root root 29 Feb 26 17:10 sequence_distributed_conf.properties\n-rwxrwxrwx 1 root root 28 Feb 26 17:10 sequence_http_conf.properties\n-rwxrwxrwx 1 root root 53 Feb 26 17:10 sequence_time_conf.properties\n-rwxrwxrwx 1 root root 2420 Mar 4 15:14 server.xml\n-rwxrwxrwx 1 root root 18 Feb 26 17:10 sharding-by-enum.txt\n-rwxrwxrwx 1 root root 4251 Feb 28 20:51 wrapper.conf\ndrwxrwxrwx 2 root root 4096 Feb 28 21:17 zkconf\ndrwxrwxrwx 2 root root 4096 Feb 28 21:17 zkdownload","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,將Mycat安裝目錄下的conf目錄下的schema.xml文件、server.xml文件、rule.xml文件和sequence","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"db","attrs":{}},{"type":"text","text":"conf.properties文件複製到conf目錄下的zkconf目錄下,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"cp schema.xml server.xml rule.xml sequence_db_conf.properties zkconf/","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"3.將Mycat配置信息寫入Zookeeper集羣","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"執行init","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"zk","attrs":{}},{"type":"text","text":"data.sh腳本文件,向Zookeeper集羣中初始化配置信息,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 bin]# /usr/local/mycat/bin/init_zk_data.sh \no2020-03-08 20:03:13 INFO JAVA_CMD=/usr/local/jdk1.8.0_212/bin/java\no2020-03-08 20:03:13 INFO Start to initialize /mycat of ZooKeeper\no2020-03-08 20:03:14 INFO Done","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"根據以上信息得知,Mycat向Zookeeper寫入初始化配置信息成功。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"4.驗證Mycat配置信息是否成功寫入Mycat","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們可以使用Zookeeper的客戶端命令zkCli.sh 登錄Zookeeper來驗證Mycat的配置信息是否成功寫入Mycat。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先,登錄Zookeeper,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# zkCli.sh \nConnecting to localhost:2181\n###################此處省略N行輸出######################\nWelcome to ZooKeeper!\n\nWATCHER::\n\nWatchedEvent state:SyncConnected type:None path:null\n[zk: localhost:2181(CONNECTED) 0] ","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,在Zookeeper命令行查看mycat的信息,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[zk: localhost:2181(CONNECTED) 0] ls /\n[mycat, zookeeper]\n[zk: localhost:2181(CONNECTED) 1] ls /mycat\n[mycat-cluster-1]\n[zk: localhost:2181(CONNECTED) 2] ls /mycat/mycat-cluster-1\n[cache, line, rules, schema, sequences, server]\n[zk: localhost:2181(CONNECTED) 3] ","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到,在/mycat/mycat-cluster-1下存在6個目錄,接下來,查看下schema目錄下的信息,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[zk: localhost:2181(CONNECTED) 3] ls /mycat/mycat-cluster-1/schema\n[dataHost, dataNode, schema]","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,我們查看下dataHost的配置,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[zk: localhost:2181(CONNECTED) 4] get /mycat/mycat-cluster-1/schema/dataHost\n[{\"balance\":1,\"maxCon\":1000,\"minCon\":10,\"name\":\"binghe151\",\"writeType\":0,\"switchType\":1,\"slaveThreshold\":100,\"dbType\":\"mysql\",\"dbDriver\":\"native\",\"heartbeat\":\"select user()\",\"writeHost\":[{\"host\":\"binghe51\",\"url\":\"192.168.175.151:3306\",\"password\":\"root\",\"user\":\"root\"}]},{\"balance\":1,\"maxCon\":1000,\"minCon\":10,\"name\":\"binghe152\",\"writeType\":0,\"switchType\":1,\"slaveThreshold\":100,\"dbType\":\"mysql\",\"dbDriver\":\"native\",\"heartbeat\":\"select user()\",\"writeHost\":[{\"host\":\"binghe52\",\"url\":\"192.168.175.152:3306\",\"password\":\"root\",\"user\":\"root\"}]},{\"balance\":1,\"maxCon\":1000,\"minCon\":10,\"name\":\"binghe153\",\"writeType\":0,\"switchType\":1,\"slaveThreshold\":100,\"dbType\":\"mysql\",\"dbDriver\":\"native\",\"heartbeat\":\"select user()\",\"writeHost\":[{\"host\":\"binghe53\",\"url\":\"192.168.175.153:3306\",\"password\":\"root\",\"user\":\"root\"}]},{\"balance\":1,\"maxCon\":1000,\"minCon\":10,\"name\":\"binghe154\",\"writeType\":0,\"switchType\":1,\"slaveThreshold\":100,\"dbType\":\"mysql\",\"dbDriver\":\"native\",\"heartbeat\":\"select user()\",\"writeHost\":[{\"host\":\"binghe54\",\"url\":\"192.168.175.154:3306\",\"password\":\"root\",\"user\":\"root\"}]}]","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"上面的輸出信息格式比較亂,但可以看出是Json格式的信息,我們可以將輸出信息進行格式化,格式化後的結果如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"json"},"content":[{"type":"text","text":"[\n {\n \"balance\": 1,\n \"maxCon\": 1000,\n \"minCon\": 10,\n \"name\": \"binghe151\",\n \"writeType\": 0,\n \"switchType\": 1,\n \"slaveThreshold\": 100,\n \"dbType\": \"mysql\",\n \"dbDriver\": \"native\",\n \"heartbeat\": \"select user()\",\n \"writeHost\": [\n {\n \"host\": \"binghe51\",\n \"url\": \"192.168.175.151:3306\",\n \"password\": \"root\",\n \"user\": \"root\"\n }\n ]\n },\n {\n \"balance\": 1,\n \"maxCon\": 1000,\n \"minCon\": 10,\n \"name\": \"binghe152\",\n \"writeType\": 0,\n \"switchType\": 1,\n \"slaveThreshold\": 100,\n \"dbType\": \"mysql\",\n \"dbDriver\": \"native\",\n \"heartbeat\": \"select user()\",\n \"writeHost\": [\n {\n \"host\": \"binghe52\",\n \"url\": \"192.168.175.152:3306\",\n \"password\": \"root\",\n \"user\": \"root\"\n }\n ]\n },\n {\n \"balance\": 1,\n \"maxCon\": 1000,\n \"minCon\": 10,\n \"name\": \"binghe153\",\n \"writeType\": 0,\n \"switchType\": 1,\n \"slaveThreshold\": 100,\n \"dbType\": \"mysql\",\n \"dbDriver\": \"native\",\n \"heartbeat\": \"select user()\",\n \"writeHost\": [\n {\n \"host\": \"binghe53\",\n \"url\": \"192.168.175.153:3306\",\n \"password\": \"root\",\n \"user\": \"root\"\n }\n ]\n },\n {\n \"balance\": 1,\n \"maxCon\": 1000,\n \"minCon\": 10,\n \"name\": \"binghe154\",\n \"writeType\": 0,\n \"switchType\": 1,\n \"slaveThreshold\": 100,\n \"dbType\": \"mysql\",\n \"dbDriver\": \"native\",\n \"heartbeat\": \"select user()\",\n \"writeHost\": [\n {\n \"host\": \"binghe54\",\n \"url\": \"192.168.175.154:3306\",\n \"password\": \"root\",\n \"user\": \"root\"\n }\n ]\n }\n]","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到,我們在Mycat的schema.xml文件中配置的dataHost節點的信息,成功寫入到Zookeeper中了。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了驗證Mycat的配置信息,是否已經同步到Zookeeper的其他節點上,我們也可以在binghe152和binghe153服務器上登錄Zookeeper,查看Mycat配置信息是否寫入成功。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe152服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe152 ~]# zkCli.sh \nConnecting to localhost:2181\n#################省略N行輸出信息################\n[zk: localhost:2181(CONNECTED) 0] get /mycat/mycat-cluster-1/schema/dataHost\n[{\"balance\":1,\"maxCon\":1000,\"minCon\":10,\"name\":\"binghe151\",\"writeType\":0,\"switchType\":1,\"slaveThreshold\":100,\"dbType\":\"mysql\",\"dbDriver\":\"native\",\"heartbeat\":\"select user()\",\"writeHost\":[{\"host\":\"binghe51\",\"url\":\"192.168.175.151:3306\",\"password\":\"root\",\"user\":\"root\"}]},{\"balance\":1,\"maxCon\":1000,\"minCon\":10,\"name\":\"binghe152\",\"writeType\":0,\"switchType\":1,\"slaveThreshold\":100,\"dbType\":\"mysql\",\"dbDriver\":\"native\",\"heartbeat\":\"select user()\",\"writeHost\":[{\"host\":\"binghe52\",\"url\":\"192.168.175.152:3306\",\"password\":\"root\",\"user\":\"root\"}]},{\"balance\":1,\"maxCon\":1000,\"minCon\":10,\"name\":\"binghe153\",\"writeType\":0,\"switchType\":1,\"slaveThreshold\":100,\"dbType\":\"mysql\",\"dbDriver\":\"native\",\"heartbeat\":\"select user()\",\"writeHost\":[{\"host\":\"binghe53\",\"url\":\"192.168.175.153:3306\",\"password\":\"root\",\"user\":\"root\"}]},{\"balance\":1,\"maxCon\":1000,\"minCon\":10,\"name\":\"binghe154\",\"writeType\":0,\"switchType\":1,\"slaveThreshold\":100,\"dbType\":\"mysql\",\"dbDriver\":\"native\",\"heartbeat\":\"select user()\",\"writeHost\":[{\"host\":\"binghe54\",\"url\":\"192.168.175.154:3306\",\"password\":\"root\",\"user\":\"root\"}]}]","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到,Mycat的配置信息成功同步到了binghe152服務器上的Zookeeper中。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe153服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe153 ~]# zkCli.sh \nConnecting to localhost:2181\n#####################此處省略N行輸出信息#####################\n[zk: localhost:2181(CONNECTED) 0] get /mycat/mycat-cluster-1/schema/dataHost\n[{\"balance\":1,\"maxCon\":1000,\"minCon\":10,\"name\":\"binghe151\",\"writeType\":0,\"switchType\":1,\"slaveThreshold\":100,\"dbType\":\"mysql\",\"dbDriver\":\"native\",\"heartbeat\":\"select user()\",\"writeHost\":[{\"host\":\"binghe51\",\"url\":\"192.168.175.151:3306\",\"password\":\"root\",\"user\":\"root\"}]},{\"balance\":1,\"maxCon\":1000,\"minCon\":10,\"name\":\"binghe152\",\"writeType\":0,\"switchType\":1,\"slaveThreshold\":100,\"dbType\":\"mysql\",\"dbDriver\":\"native\",\"heartbeat\":\"select user()\",\"writeHost\":[{\"host\":\"binghe52\",\"url\":\"192.168.175.152:3306\",\"password\":\"root\",\"user\":\"root\"}]},{\"balance\":1,\"maxCon\":1000,\"minCon\":10,\"name\":\"binghe153\",\"writeType\":0,\"switchType\":1,\"slaveThreshold\":100,\"dbType\":\"mysql\",\"dbDriver\":\"native\",\"heartbeat\":\"select user()\",\"writeHost\":[{\"host\":\"binghe53\",\"url\":\"192.168.175.153:3306\",\"password\":\"root\",\"user\":\"root\"}]},{\"balance\":1,\"maxCon\":1000,\"minCon\":10,\"name\":\"binghe154\",\"writeType\":0,\"switchType\":1,\"slaveThreshold\":100,\"dbType\":\"mysql\",\"dbDriver\":\"native\",\"heartbeat\":\"select user()\",\"writeHost\":[{\"host\":\"binghe54\",\"url\":\"192.168.175.154:3306\",\"password\":\"root\",\"user\":\"root\"}]}]","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到,Mycat的配置信息成功同步到了binghe153服務器上的Zookeeper中。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"配置Mycat支持Zookeeper啓動","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"1.在binghe151服務器上配置Mycat","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在binghe151服務器上進入Mycat安裝目錄的conf目錄下,查看文件信息,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# cd /usr/local/mycat/conf/\n[root@binghe151 conf]# ll\ntotal 108\n-rwxrwxrwx 1 root root 92 Feb 26 17:10 autopartition-long.txt\n-rwxrwxrwx 1 root root 51 Feb 26 17:10 auto-sharding-long.txt\n-rwxrwxrwx 1 root root 67 Feb 26 17:10 auto-sharding-rang-mod.txt\n-rwxrwxrwx 1 root root 340 Feb 26 17:10 cacheservice.properties\n-rwxrwxrwx 1 root root 3338 Feb 26 17:10 dbseq.sql\n-rwxrwxrwx 1 root root 3532 Feb 26 17:10 dbseq - utf8mb4.sql\n-rw-r--r-- 1 root root 86 Mar 1 22:37 dnindex.properties\n-rwxrwxrwx 1 root root 446 Feb 26 17:10 ehcache.xml\n-rwxrwxrwx 1 root root 2454 Feb 26 17:10 index_to_charset.properties\n-rwxrwxrwx 1 root root 1285 Feb 26 17:10 log4j2.xml\n-rwxrwxrwx 1 root root 183 Feb 26 17:10 migrateTables.properties\n-rwxrwxrwx 1 root root 271 Feb 26 17:10 myid.properties\n-rwxrwxrwx 1 root root 16 Feb 26 17:10 partition-hash-int.txt\n-rwxrwxrwx 1 root root 108 Feb 26 17:10 partition-range-mod.txt\n-rwxrwxrwx 1 root root 988 Mar 1 16:59 rule.xml\n-rwxrwxrwx 1 root root 3883 Mar 3 23:59 schema.xml\n-rwxrwxrwx 1 root root 440 Feb 26 17:10 sequence_conf.properties\n-rwxrwxrwx 1 root root 84 Mar 3 23:52 sequence_db_conf.properties\n-rwxrwxrwx 1 root root 29 Feb 26 17:10 sequence_distributed_conf.properties\n-rwxrwxrwx 1 root root 28 Feb 26 17:10 sequence_http_conf.properties\n-rwxrwxrwx 1 root root 53 Feb 26 17:10 sequence_time_conf.properties\n-rwxrwxrwx 1 root root 2420 Mar 4 15:14 server.xml\n-rwxrwxrwx 1 root root 18 Feb 26 17:10 sharding-by-enum.txt\n-rwxrwxrwx 1 root root 4251 Feb 28 20:51 wrapper.conf\ndrwxrwxrwx 2 root root 4096 Feb 28 21:17 zkconf\ndrwxrwxrwx 2 root root 4096 Feb 28 21:17 zkdownload","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到,在Mycat的conf目錄下,存在一個myid.properties文件,接下來,使用vim編輯器編輯這個文件,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"vim myid.properties ","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"編輯後的myid.properties文件的內容如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"loadZk=true\nzkURL=192.168.175.151:2181,192.168.175.152:2181,192.168.175.153:2181\nclusterId=mycat-cluster-1\nmyid=mycat_151\nclusterSize=2\nclusterNodes=mycat_151,mycat_154\n#server booster ; booster install on db same server,will reset all minCon to 2\ntype=server\nboosterDataHosts=dataHost1","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其中幾個重要的參數說明如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"loadZk:表示是否加載Zookeeper配置。true:是; false:否;","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"zkURL:Zookeeper的連接地址,多個Zookeeper連接地址以逗號隔開;","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"clusterId:當前Mycat集羣的Id標識,此標識需要與Zookeeper中/mycat目錄下的目錄名稱相同,如下所示。","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[zk: localhost:2181(CONNECTED) 1] ls /mycat\n[mycat-cluster-1]","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"myid:當前Mycat節點的id,這裏我的命名方式爲mycat_前綴加上IP地址的最後三位;","attrs":{}}]}],"attrs":{}},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"clusterSize:表示Mycat集羣中的Mycat節點個數,這裏,我們在binghe151和binghe154節點上部署Mycat,所以Mycat節點的個數爲2。","attrs":{}}]}],"attrs":{}},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"clusterNodes:Mycat集羣中,所有的Mycat節點,此處的節點需要配置myid中配置的Mycat節點id,多個節點之前以逗號分隔。這裏我配置的節點爲:mycat","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"151,mycat","attrs":{}},{"type":"text","text":"154。","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"2.在binghe154服務器上安裝全新的Mycat","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在binghe154服務器上下載並安裝和binghe151服務器上相同版本的Mycat,並將其解壓到binghe154服務器上的/usr/local/mycat目錄下。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"也可以在binghe151服務器上直接輸入如下命令將Mycat的安裝目錄複製到binghe154服務器上。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# scp -r /usr/local/mycat binghe154:/usr/local","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"注意:別忘了在binghe154服務器上配置Mycat的系統環境變量。","attrs":{}},{"type":"text","text":"","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"3.修改binghe154服務器上的Mycat配置","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在binghe154服務器上修改Mycat安裝目錄下的conf目錄中的myid.properties文件,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"vim /usr/local/mycat/conf/myid.properties","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"修改後的myid.properties文件的內容如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"loadZk=true\nzkURL=192.168.175.151:2181,192.168.175.152:2181,192.168.175.153:2181\nclusterId=mycat-cluster-1\nmyid=mycat_154\nclusterSize=2\nclusterNodes=mycat_151,mycat_154\n#server booster ; booster install on db same server,will reset all minCon to 2\ntype=server\nboosterDataHosts=dataHost1","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"4.重啓Mycat","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分別重啓binghe151服務器和binghe154服務器上的Mycat,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"注意:先重啓","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe151服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# mycat restart\nStopping Mycat-server...\nStopped Mycat-server.\nStarting Mycat-server...","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe154服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe154 ~]# mycat restart\nStopping Mycat-server...\nStopped Mycat-server.\nStarting Mycat-server...","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在binghe151和binghe154服務器上分別查看Mycat的啓動日誌,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"STATUS | wrapper | 2020/03/08 21:08:15 | Wrapper Started as Daemon\nSTATUS | wrapper | 2020/03/08 21:08:15 | Launching a JVM...\nINFO | jvm 1 | 2020/03/08 21:08:16 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org\nINFO | jvm 1 | 2020/03/08 21:08:16 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.\nINFO | jvm 1 | 2020/03/08 21:08:16 | \nINFO | jvm 1 | 2020/03/08 21:08:28 | MyCAT Server startup successfully. see logs in logs/mycat.log","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從日誌的輸出結果可以看出,Mycat重啓成功。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"此時,先重啓binghe151服務器上的Mycat,再重啓binghe154服務器上的Mycat之後,我們會發現binghe154服務器上的Mycat的conf目錄下的schema.xml、server.xml、rule.xml和sequence_db_conf.properties文件與binghe151服務器上Mycat的配置文件相同,這就是binghe154服務器上的Mycat從Zookeeper上讀取配置文件的結果。","attrs":{}},{"type":"text","text":"","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"以後,我們只需要修改Zookeeper中有關Mycat的配置,這些配置就會自動同步到Mycat中,這樣可以保證多個Mycat節點的配置是一致的。","attrs":{}},{"type":"text","text":"","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"配置虛擬IP","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分別在binghe151和binghe154服務器上配置虛擬IP,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"ifconfig eth0:1 192.168.175.110 broadcast 192.168.175.255 netmask 255.255.255.0 up\nroute add -host 192.168.175.110 dev eth0:1","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置完虛擬IP的效果如下所示,以binghe151服務器爲例。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# ifconfig\neth0 Link encap:Ethernet HWaddr 00:0C:29:10:A1:45 \n inet addr:192.168.175.151 Bcast:192.168.175.255 Mask:255.255.255.0\n inet6 addr: fe80::20c:29ff:fe10:a145/64 Scope:Link\n UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1\n RX packets:116766 errors:0 dropped:0 overruns:0 frame:0\n TX packets:85230 errors:0 dropped:0 overruns:0 carrier:0\n collisions:0 txqueuelen:1000 \n RX bytes:25559422 (24.3 MiB) TX bytes:55997016 (53.4 MiB)\n\neth0:1 Link encap:Ethernet HWaddr 00:0C:29:10:A1:45 \n inet addr:192.168.175.110 Bcast:192.168.175.255 Mask:255.255.255.0\n UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1\n\nlo Link encap:Local Loopback \n inet addr:127.0.0.1 Mask:255.0.0.0\n inet6 addr: ::1/128 Scope:Host\n UP LOOPBACK RUNNING MTU:65536 Metric:1\n RX packets:51102 errors:0 dropped:0 overruns:0 frame:0\n TX packets:51102 errors:0 dropped:0 overruns:0 carrier:0\n collisions:0 txqueuelen:0 \n RX bytes:2934009 (2.7 MiB) TX bytes:2934009 (2.7 MiB)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"注意:","attrs":{}},{"type":"text","text":"在命令行添加VIP後,當服務器重啓後,VIP信息會消失,所以,最好是將創建VIP的命令寫到一個腳本文件中,例如,將命令寫到/usr/local/script/vip.sh文件中,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"mkdir /usr/local/script\nvim /usr/local/script/vip.sh","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"文件的內容如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"ifconfig eth0:1 192.168.175.110 broadcast 192.168.175.255 netmask 255.255.255.0 up\nroute add -host 192.168.175.110 dev eth0:1","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,將/usr/local/script/vip.sh文件添加到服務器開機啓動項中,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"echo /usr/local/script/vip.sh >> /etc/rc.d/rc.local","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"配置IP轉發","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在binghe151和binghe154服務器上配置系統內核IP轉發功能,編輯/etc/sysctl.conf文件,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"vim /etc/sysctl.conf","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"找到如下一行代碼。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"net.ipv4.ip_forward = 0","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"將其修改成如下所示的代碼。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"net.ipv4.ip_forward = 1","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"保存並退出vim編輯器,並運行如下命令使配置生效。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"sysctl -p","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"安裝並配置xinetd服務","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們需要在安裝HAProxy的服務器上,也就是在binghe151和binghe154服務器上安裝xinetd服務來開啓48700端口。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(1)在服務器命令行執行如下命令安裝xinetd服務,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"yum install xinetd -y","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(2)編輯/etc/xinetd.conf文件,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"vim /etc/xinetd.conf","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"檢查文件中是否存在如下配置。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"includedir /etc/xinetd.d","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果/etc/xinetd.conf文件中沒有以上配置,則在/etc/xinetd.conf文件中添加以上配置;如果存在以上配置,則不用修改。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(3)創建/etc/xinetd.d目錄,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"mkdir /etc/xinetd.d","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"注意:如果/etc/xinetd.d目錄已經存在,創建目錄時會報如下錯誤。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"mkdir: cannot create directory `/etc/xinetd.d': File exists","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"大家可不必理會此錯誤信息。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(4)在/etc/xinetd.d目錄下添加Mycat狀態檢測服務器的配置文件mycat_status,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"touch /etc/xinetd.d/mycat_status","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(5)編輯mycat_status文件,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"vim /etc/xinetd.d/mycat_status","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"編輯後的mycat_status文件中的內容如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"service mycat_status\n{\nflags = REUSE\nsocket_type = stream\nport = 48700\nwait = no\nuser = root\nserver =/usr/local/bin/mycat_check.sh\nlog_on_failure += USERID\ndisable = no\n}","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"部分xinetd配置參數說明如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"socket_type:表示封包處理方式,Stream爲TCP數據包。","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"port:表示xinetd服務監聽的端口號。","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"wait:表示不需等待,即服務將以多線程的方式運行。","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"user:運行xinted服務的用戶。","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"server:需要啓動的服務腳本。","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"log","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"on","attrs":{}},{"type":"text","text":"failure:記錄失敗的日誌內容。","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"disable:需要啓動xinted服務時,需要將此配置項設置爲no。","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(6)在/usr/local/bin目錄下添加mycat_check.sh服務腳本,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"touch /usr/local/bin/mycat_check.sh","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(7)編輯/usr/local/bin/mycat_check.sh文件,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"vim /usr/local/bin/mycat_check.sh","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"編輯後的文件內容如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"#!/bin/bash\nmycat=`/usr/local/mycat/bin/mycat status | grep 'not running' | wc -l`\nif [ \"$mycat\" = \"0\" ]; then\n/bin/echo -e \"HTTP/1.1 200 OK\\r\\n\"\nelse\n/bin/echo -e \"HTTP/1.1 503 Service Unavailable\\r\\n\"\n/usr/local/mycat/bin/mycat start\nfi","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲mycat_check.sh文件賦予可執行權限,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"chmod a+x /usr/local/bin/mycat_check.sh","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(8)編輯/etc/services文件,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"vim /etc/services","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在文件末尾添加如下所示的內容。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"mycat_status 48700/tcp # mycat_status","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其中,端口號需要與在/etc/xinetd.d/mycat_status文件中配置的端口號相同。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(9)重啓xinetd服務,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"service xinetd restart","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"(10)查看mycat_status服務是否成功啓動,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe151服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# netstat -antup|grep 48700\ntcp 0 0 :::48700 :::* LISTEN 2776/xinetd","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe154服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe154 ~]# netstat -antup|grep 48700\ntcp 0 0 :::48700 :::* LISTEN 6654/xinetd","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"結果顯示,兩臺服務器上的mycat_status服務器啓動成功。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"至此,xinetd服務安裝並配置成功,即Mycat狀態檢查服務安裝成功。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"安裝並配置HAProxy","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們直接在binghe151和binghe154服務器上使用如下命令安裝HAProxy。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"yum install haproxy -y","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"安裝完成後,我們需要對HAProxy進行配置,HAProxy的配置文件目錄爲/etc/haproxy,我們查看這個目錄下的文件信息,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# ll /etc/haproxy/\ntotal 4\n-rw-r--r-- 1 root root 3142 Oct 21 2016 haproxy.cfg","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"發現/etc/haproxy/目錄下存在一個haproxy.cfg文件。接下來,我們就修改haproxy.cfg文件,修改後的haproxy.cfg文件的內容如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"global\n log 127.0.0.1 local2\n\n chroot /var/lib/haproxy\n pidfile /var/run/haproxy.pid\n maxconn 4000\n user haproxy\n group haproxy\n daemon\n stats socket /var/lib/haproxy/stats\n\ndefaults\n mode http\n log global\n option httplog\n option dontlognull\n option http-server-close\n option redispatch\n retries 3\n timeout http-request 10s\n timeout queue 1m\n timeout connect 10s\n timeout client 1m\n timeout server 1m\n timeout http-keep-alive 10s\n timeout check 10s\n maxconn 3000\n\nlisten admin_status\n bind 0.0.0.0:48800\n stats uri /admin-status\n stats auth admin:admin\nlisten allmycat_service\n bind 0.0.0.0:3366\n mode tcp\n option tcplog\n\t option httpchk OPTIONS * HTTP/1.1\\r\\nHost:\\ www\n balance roundrobin\n server mycat_151 192.168.175.151:3307 check port 48700 inter 5s rise 2 fall 3\n server mycat_154 192.168.175.154:3307 check port 48700 inter 5s rise 2 fall 3\nlisten allmycat_admin\n bind 0.0.0.0:3377\n mode tcp\n option tcplog\n\t option httpchk OPTIONS * HTTP/1.1\\r\\nHost:\\ www\n balance roundrobin\n server mycat_151 192.168.175.151:3308 check port 48700 inter 5s rise 2 fall 3\n server mycat_154 192.168.175.154:3308 check port 48700 inter 5s rise 2 fall 3","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,在binghe151服務器和binghe154服務器上啓動HAProxy,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"haproxy -f /etc/haproxy/haproxy.cfg ","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,我們使用mysql命令連接HAProxy監聽的虛擬IP和端口來連接Mycat,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# mysql -umycat -pmycat -h192.168.175.110 -P3366 --default-auth=mysql_native_password \nmysql: [Warning] Using a password on the command line interface can be insecure.\nWelcome to the MySQL monitor. Commands end with ; or \\g.\nYour MySQL connection id is 2\nServer version: 5.6.29-mycat-1.6.7.4-release-20200228205020 MyCat Server (OpenCloudDB)\n\nCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.\n\nOracle is a registered trademark of Oracle Corporation and/or its\naffiliates. Other names may be trademarks of their respective\nowners.\n\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n\nmysql> ","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到,連接Mycat成功。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"安裝Keepalived","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"1.安裝並配置Keepalived","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"直接在binghe151和binghe154服務器上輸入如下命令安裝Keepalived。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"yum install keepalived -y","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"安裝成功後,會在/etc目錄下生成一個keepalived目錄,接下來,我們在/etc/keepalived目錄下配置keepalived.conf文件,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"vim /etc/keepalived/keepalived.conf","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe151服務器配置","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"! Configuration Fileforkeepalived\nvrrp_script chk_http_port {\n script \"/etc/keepalived/check_haproxy.sh\"\n interval 2\n weight 2\n}\nvrrp_instance VI_1 {\n state MASTER \n interface eth0 \n virtual_router_id 51 \n priority 150 \n advert_int 1 \n authentication {\n auth_type PASS\n auth_pass 1111\n}\ntrack_script {\n chk_http_port\n}\nvirtual_ipaddress { \n 192.168.175.110 dev eth0 scope global\n}\n}","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe154服務器配置","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"! Configuration Fileforkeepalived\nvrrp_script chk_http_port {\n script \"/etc/keepalived/check_haproxy.sh\"\n interval 2\n weight 2\n}\nvrrp_instance VI_1 {\n state SLAVE \n interface eth0 \n virtual_router_id 51 \n priority 120\n advert_int 1 \n authentication {\n auth_type PASS\n auth_pass 1111\n}\ntrack_script {\n chk_http_port\n}\nvirtual_ipaddress { \n 192.168.175.110 dev eth0 scope global\n}\n}","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"2.編寫檢測HAProxy的腳本","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,需要分別在binghe151和binghe154服務器上的/etc/keepalived目錄下創建check_haproxy.sh腳本,腳本內容如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"#!/bin/bash\nSTARTHAPROXY=\"/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg\"\nSTOPKEEPALIVED=\"/etc/init.d/keepalived stop\"\n#STOPKEEPALIVED=\"/usr/bin/systemctl stop keepalived\"\nLOGFILE=\"/var/log/keepalived-haproxy-state.log\"\necho \"[check_haproxy status]\" >> $LOGFILE\nA=`ps -C haproxy --no-header |wc -l`\necho \"[check_haproxy status]\" >> $LOGFILE\ndate >> $LOGFILE\nif [ $A -eq 0 ];then\n echo $STARTHAPROXY >> $LOGFILE\n $STARTHAPROXY >> $LOGFILE 2>&1\n sleep 5\nfi\nif [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then\n exit 0\nelse\n exit 1\nfi","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用如下命令爲check_haproxy.sh腳本授予可執行權限。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"chmod a+x /etc/keepalived/check_haproxy.sh ","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"3.啓動Keepalived","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置完成後,我們就可以啓動Keepalived了,分別在binghe151和binghe154服務器上啓動Keepalived,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"/etc/init.d/keepalived start","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"查看Keepalived是否啓動成功,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe151服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# ps -ef | grep keepalived\nroot 1221 1 0 20:06 ? 00:00:00 keepalived -D\nroot 1222 1221 0 20:06 ? 00:00:00 keepalived -D\nroot 1223 1221 0 20:06 ? 00:00:02 keepalived -D\nroot 93290 3787 0 21:42 pts/0 00:00:00 grep keepalived","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe154服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe154 ~]# ps -ef | grep keepalived\nroot 1224 1 0 20:06 ? 00:00:00 keepalived -D\nroot 1225 1224 0 20:06 ? 00:00:00 keepalived -D\nroot 1226 1224 0 20:06 ? 00:00:02 keepalived -D\nroot 94636 3798 0 21:43 pts/0 00:00:00 grep keepalived","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到,兩臺服務器上的Keepalived服務啓動成功。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"4.驗證Keepalived綁定的虛擬IP","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,我們分別查看兩臺服務器上的Keepalived是否綁定了虛擬IP。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe151服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# ip addr\n1: lo: mtu 65536 qdisc noqueue state UNKNOWN \n link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n inet 127.0.0.1/8 scope host lo\n inet6 ::1/128 scope host \n valid_lft forever preferred_lft forever\n2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000\n link/ether 00:0c:29:10:a1:45 brd ff:ff:ff:ff:ff:ff\n inet 192.168.175.151/24 brd 192.168.175.255 scope global eth0\n inet 192.168.175.110/32 scope global eth0\n inet 192.168.175.110/24 brd 192.168.175.255 scope global secondary eth0:1\n inet6 fe80::20c:29ff:fe10:a145/64 scope link \n valid_lft forever preferred_lft forever","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到如下一行代碼。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"inet 192.168.175.110/32 scope global eth0","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"說明binghe151服務器上的Keepalived綁定了虛擬IP 192.168.175.110。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe154服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe154 ~]# ip addr\n1: lo: mtu 65536 qdisc noqueue state UNKNOWN \n link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n inet 127.0.0.1/8 scope host lo\n inet6 ::1/128 scope host \n valid_lft forever preferred_lft forever\n2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000\n link/ether 00:50:56:22:2a:75 brd ff:ff:ff:ff:ff:ff\n inet 192.168.175.154/24 brd 192.168.175.255 scope global eth0\n inet 192.168.175.110/24 brd 192.168.175.255 scope global secondary eth0:1\n inet6 fe80::250:56ff:fe22:2a75/64 scope link \n valid_lft forever preferred_lft forever","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到binghe154服務器上的Keepalived並沒有綁定虛擬IP。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"5.測試虛擬IP的漂移","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如何測試虛擬IP的漂移呢?首先,我們停止binghe151服務器上的Keepalived,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"/etc/init.d/keepalived stop","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,查看binghe154服務器上Keepalived綁定虛擬IP的情況,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe154 ~]# ip addr\n1: lo: mtu 65536 qdisc noqueue state UNKNOWN \n link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n inet 127.0.0.1/8 scope host lo\n inet6 ::1/128 scope host \n valid_lft forever preferred_lft forever\n2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000\n link/ether 00:50:56:22:2a:75 brd ff:ff:ff:ff:ff:ff\n inet 192.168.175.154/24 brd 192.168.175.255 scope global eth0\n inet 192.168.175.110/32 scope global eth0\n inet 192.168.175.110/24 brd 192.168.175.255 scope global secondary eth0:1\n inet6 fe80::250:56ff:fe22:2a75/64 scope link \n valid_lft forever preferred_lft forever","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到,在輸出的結果信息中,存在如下一行信息。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":" inet 192.168.175.110/32 scope global eth0","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"說明binghe154服務器上的Keepalived綁定了虛擬IP 192.168.175.110,虛擬IP漂移到了binghe154服務器上。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"6.binghe151服務器上的Keepalived搶佔虛擬IP","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,我們啓動binghe151服務器上的Keepalived,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"/etc/init.d/keepalived start","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"啓動成功後,我們再次查看虛擬IP的綁定情況,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe151服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe151 ~]# ip addr\n1: lo: mtu 65536 qdisc noqueue state UNKNOWN \n link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n inet 127.0.0.1/8 scope host lo\n inet6 ::1/128 scope host \n valid_lft forever preferred_lft forever\n2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000\n link/ether 00:0c:29:10:a1:45 brd ff:ff:ff:ff:ff:ff\n inet 192.168.175.151/24 brd 192.168.175.255 scope global eth0\n inet 192.168.175.110/32 scope global eth0\n inet 192.168.175.110/24 brd 192.168.175.255 scope global secondary eth0:1\n inet6 fe80::20c:29ff:fe10:a145/64 scope link \n valid_lft forever preferred_lft forever","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe154服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe154 ~]# ip addr\n1: lo: mtu 65536 qdisc noqueue state UNKNOWN \n link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n inet 127.0.0.1/8 scope host lo\n inet6 ::1/128 scope host \n valid_lft forever preferred_lft forever\n2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000\n link/ether 00:50:56:22:2a:75 brd ff:ff:ff:ff:ff:ff\n inet 192.168.175.154/24 brd 192.168.175.255 scope global eth0\n inet 192.168.175.110/24 brd 192.168.175.255 scope global secondary eth0:1\n inet6 fe80::250:56ff:fe22:2a75/64 scope link \n valid_lft forever preferred_lft forever","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於binghe151服務器上配置的Keepalived優先級要高於binghe154服務器上的Keepalived,所以,再次啓動binghe151服務器上的Keepalived後,binghe151服務器上的Keepalived會搶佔虛擬IP。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"配置MySQL主從複製","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這裏,爲了簡單,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"我將binghe154和binghe155服務器上的MySQL配置成主從複製","attrs":{}},{"type":"text","text":",大家也可以根據實際情況,自行配置其他服務器上MySQL的主從複製(注意:我這裏配置的是一主一從模式)。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"1.編輯my.cnf文件","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe154服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"server_id = 154\nlog_bin = /data/mysql/log/bin_log/mysql-bin\nbinlog-ignore-db=mysql\nbinlog_format= mixed\nsync_binlog=100\nlog_slave_updates = 1\nbinlog_cache_size=32m\nmax_binlog_cache_size=64m\nmax_binlog_size=512m\nlower_case_table_names = 1\nrelay_log = /data/mysql/log/bin_log/relay-bin\nrelay_log_index = /data/mysql/log/bin_log/relay-bin.index\nmaster_info_repository=TABLE\nrelay-log-info-repository=TABLE\nrelay-log-recovery","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"binghe155服務器","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"server_id = 155\nlog_bin = /data/mysql/log/bin_log/mysql-bin\nbinlog-ignore-db=mysql\nbinlog_format= mixed\nsync_binlog=100\nlog_slave_updates = 1\nbinlog_cache_size=32m\nmax_binlog_cache_size=64m\nmax_binlog_size=512m\nlower_case_table_names = 1\nrelay_log = /data/mysql/log/bin_log/relay-bin\nrelay_log_index = /data/mysql/log/bin_log/relay-bin.index\nmaster_info_repository=TABLE\nrelay-log-info-repository=TABLE\nrelay-log-recovery","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"2.同步兩臺服務器上MySQL的數據","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在binghe154服務器上只有一個customer","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"db數據庫,我們使用mysqldump命令導出customer","attrs":{}},{"type":"text","text":"db數據庫,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"[root@binghe154 ~]# mysqldump --master-data=2 --single-transaction -uroot -p --databases customer_db > binghe154.sql\nEnter password: ","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,我們查看binghe154.sql文件。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"more binghe154.sql","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在文件中,我們可以找到如下信息。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000042', MASTER_LOG_POS=995;","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"說明當前MySQL的二進制日誌文件爲mysql-bin.000042,二進制日誌文件的位置爲995。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,我們將binghe154.sql文件複製到binghe155服務器上,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"scp binghe154.sql 192.168.175.155:/usr/local/src","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在binghe155服務器上,將binghe154.sql腳本導入到MySQL中,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"mysql -uroot -p < /usr/local/src/binghe154.sql","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此時,完成了數據的初始化。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"3.創建主從複製賬號","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在binghe154服務器的MySQL中,創建用於主從複製的MySQL賬號,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"sql"},"content":[{"type":"text","text":"mysql> CREATE USER 'repl'@'192.168.175.%' IDENTIFIED BY 'repl123456';\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> ALTER USER 'repl'@'192.168.175.%' IDENTIFIED WITH mysql_native_password BY 'repl123456'; \nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.175.%';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> FLUSH PRIVILEGES;\nQuery OK, 0 rows affected (0.00 sec)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"4.配置複製鏈路","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"登錄binghe155服務器上的MySQL,並使用如下命令配置複製鏈路。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"sql"},"content":[{"type":"text","text":"mysql> change master to \n > master_host='192.168.175.154',\n > master_port=3306,\n > master_user='repl',\n > master_password='repl123456',\n > MASTER_LOG_FILE='mysql-bin.000042',\n > MASTER_LOG_POS=995;","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其中,MASTER","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"LOG","attrs":{}},{"type":"text","text":"FILE='mysql-bin.000042', MASTER","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"LOG","attrs":{}},{"type":"text","text":"POS=995 就是在binghe154.sql文件中找到的。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"5.啓動從庫","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在binghe155服務器的MySQL命令行啓動從庫,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"sql"},"content":[{"type":"text","text":"mysql> start slave;","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"查看從庫是否啓動成功,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"sql"},"content":[{"type":"text","text":"mysql> SHOW slave STATUS \\G\n*************************** 1. row ***************************\n Slave_IO_State: Waiting for master to send event\n Master_Host: 192.168.175.151\n Master_User: binghe152\n Master_Port: 3306\n Connect_Retry: 60\n Master_Log_File: mysql-bin.000007\n Read_Master_Log_Pos: 1360\n Relay_Log_File: relay-bin.000003\n Relay_Log_Pos: 322\n Relay_Master_Log_File: mysql-bin.000007\n Slave_IO_Running: Yes\n Slave_SQL_Running: Yes\n#################省略部分輸出結果信息##################","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"結果顯示Slave","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"IO","attrs":{}},{"type":"text","text":"Running選項和Slave","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"SQL","attrs":{}},{"type":"text","text":"Running選項的值均爲Yes,說明MySQL主從複製環境搭建成功。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後,別忘了在binghe155服務器的MySQL中創建Mycat連接MySQL的用戶,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"sql"},"content":[{"type":"text","text":"CREATE USER 'mycat'@'192.168.175.%' IDENTIFIED BY 'mycat';\nALTER USER 'mycat'@'192.168.175.%' IDENTIFIED WITH mysql_native_password BY 'mycat'; \nGRANT SELECT, INSERT, UPDATE, DELETE,EXECUTE ON *.* TO 'mycat'@'192.168.175.%';\nFLUSH PRIVILEGES;","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"配置Mycat讀寫分離","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"修改Mycatd的schema.xml文件,實現binghe154和binghe155服務器上的MySQL讀寫分離。在Mycat安裝目錄的conf/zkconf目錄下,修改schema.xml文件,修改後的schema.xml文件如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"xml"},"content":[{"type":"text","text":""schema.dtd\">\n\n \n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n\t\n \n \n \n \n \n \n \n \n\t\n \n select user()\n \n \n \n select user()\n \n \n \n select user()\n \n \n \n select user()\n \n\t\t\t\n\t\t\n \n \n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"保存並退出vim編輯器,接下來,初始化Zookeeper中的數據,如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"/usr/local/mycat/bin/init_zk_data.sh ","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"上述命令執行成功後,會自動將配置同步到binghe151和binghe154服務器上的Mycat的安裝目錄下的conf目錄下的schema.xml中。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,分別啓動binghe151和binghe154服務器上的Mycat服務。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"mycat restart","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"如何訪問高可用環境","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此時,整個高可用環境配置完成,上層應用連接高可用環境時,需要連接HAProxy監聽的IP和端口。比如使用mysql命令連接高可用環境如下所示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"sql"},"content":[{"type":"text","text":"[root@binghe151 ~]# mysql -umycat -pmycat -h192.168.175.110 -P3366 --default-auth=mysql_native_password\nmysql: [Warning] Using a password on the command line interface can be insecure.\nWelcome to the MySQL monitor. Commands end with ; or \\g.\nYour MySQL connection id is 2\nServer version: 5.6.29-mycat-1.6.7.4-release-20200228205020 MyCat Server (OpenCloudDB)\n\nCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.\n\nOracle is a registered trademark of Oracle Corporation and/or its\naffiliates. Other names may be trademarks of their respective\nowners.\n\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n\nmysql> show databases;\n+----------+\n| DATABASE |\n+----------+\n| shop |\n+----------+\n1 row in set (0.10 sec)\n\nmysql> use shop;\nDatabase changed\nmysql> show tables;\n+-----------------------+\n| Tables in shop |\n+-----------------------+\n| customer_balance_log |\n| customer_inf |\n| customer_level_inf |\n| customer_login |\n| customer_login_log |\n| customer_point_log |\n| order_cart |\n| order_customer_addr |\n| order_detail |\n| order_master |\n| product_brand_info |\n| product_category |\n| product_comment |\n| product_info |\n| product_pic_info |\n| product_supplier_info |\n| region_info |\n| serial |\n| shipping_info |\n| warehouse_info |\n| warehouse_proudct |\n+-----------------------+\n21 rows in set (0.00 sec)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這裏,我只是對binghe154服務器上的MySQL擴展了讀寫分離環境,大家也可以根據實際情況對其他服務器的MySQL實現主從複製和讀寫分離,這樣,整個高可用環境就實現了HAProxy的高可用、Mycat的高可用、MySQL的高可用、Zookeeper的高可用和Keepalived的高可用。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"好了,今天就到這兒吧,我是冰河,我們下期見!!","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"重磅福利","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"微信搜一搜【冰河技術】微信公衆號,關注這個有深度的程序員,每天閱讀超硬核技術乾貨,公衆號內回覆【PDF】有我準備的一線大廠面試資料和我原創的超硬核PDF技術文檔,以及我爲大家精心準備的多套簡歷模板(不斷更新中),希望大家都能找到心儀的工作,學習是一條時而鬱鬱寡歡,時而開懷大笑的路,加油。如果你通過努力成功進入到了心儀的公司,一定不要懈怠放鬆,職場成長和新技術學習一樣,不進則退。如果有幸我們江湖再見! ","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另外,我開源的各個PDF,後續我都會持續更新和維護,感謝大家長期以來對冰河的支持!!","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"寫在最後","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果你覺得冰河寫的還不錯,請微信搜索並關注「 ","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"冰河技術","attrs":{}},{"type":"text","text":" 」微信公衆號,跟冰河學習高併發、分佈式、微服務、大數據、互聯網和雲原生技術,「 ","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"冰河技術","attrs":{}},{"type":"text","text":" 」微信公衆號更新了大量技術專題,每一篇技術文章乾貨滿滿!不少讀者已經通過閱讀「 ","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"冰河技術","attrs":{}},{"type":"text","text":" 」微信公衆號文章,吊打面試官,成功跳槽到大廠;也有不少讀者實現了技術上的飛躍,成爲公司的技術骨幹!如果你也想像他們一樣提升自己的能力,實現技術能力的飛躍,進大廠,升職加薪,那就關注「 ","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"冰河技術","attrs":{}},{"type":"text","text":" 」微信公衆號吧,每天更新超硬核技術乾貨,讓你對如何提升技術能力不再迷茫!","attrs":{}}]}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/86/86642f445ccf193620f77650ac1ae2bc.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章