1. 程式人生 > >CentOS安裝配置Mycat+mysql水平分割,實現分散式儲存

CentOS安裝配置Mycat+mysql水平分割,實現分散式儲存

轉自http://blog.csdn.net/testcs_dn/article/details/51438216

謝謝作者的貢獻!

環境:CentOS6.5

JDK1.8

MySQL5.6.35

MyCat1.4

1.首先安裝MySQL,安裝步驟可以參考http://blog.csdn.net/llgyzb/article/details/54691675

2.安裝JDK1.8

安裝MyCat

修改MySQL配置檔案(可選)

vi /etc/my.cnf

新增一行配置:lower_case_table_names=1,

如果找不到my.cnf檔案,copy一個: cp /usr/share/mysql/my-default.cnf /etc/my.cnf


注意:Linux 下部署安裝 MySQL,預設不忍略表名大小寫,需要手動到/etc/my.cnf 下配置
lower_case_table_names=1 使 Linux 環境下 MySQL 忍略表名大小寫,否則使用 MyCAT 的時候會提示找不到表的錯誤!

解壓複製檔案

我這裡將 mycat 放到“/usr/local/mycat/”目錄下,你可以根據自己的需要選擇合適的目錄

tar -zxvf Mycat-server-1.4-RELEASE-20160509173344-linux.tar.gz  
cp -r  mycat /usr/local/mycat  
cd /usr/local/mycat/  
chmod +x * 
chmod +x 命令是給檔案新增可執行許可權

需要再裝一臺Mycat?直接用命令把檔案複製過去:

scp -r /usr/local/mycat [email protected]:/usr/local/


配置環境變數

vi /etc/profile

在檔案末尾新增一行: export MYCAT_HOME=/usr/local/mycat 使修改生效:
source /etc/profile 測試是否生效:
echo $MYCAT_HOME

配置主機名對映

vi /etc/hosts

在檔案中新增你的資料節點MySQL的IP對映:
192.168.0.151 sam_server_1
192.168.0.153 sam_server_2

配置schema

vi /usr/local/mycat/conf/schema.xml

參考我的配置吧,我從官網下載的Release版本的裡面帶的檔案有好多錯誤,我修改了很長時間才能用。

<?xml version="1.0"?>  
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">  
<mycat:schema xmlns:mycat="http://org.opencloudb/" >  
<!-- schema 中可以有多個table節點,列幾個在Navicat中就能看到幾個,庫裡有這裡沒有的話客戶端中也看不到 -->  
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">  
        <table name="travelrecord" dataNode="dn1,dn2" rule="auto-sharding-long" />  
        <table name="company" primaryKey="ID" dataNode="dn2,dn1" rule="mod-long"/>  
        <table name="goods" primaryKey="ID" type="global" dataNode="dn1,dn2" />  
        <table name="employee" primaryKey="ID" dataNode="dn1,dn2"  
            rule="sharding-by-intfile" />  
        <table name="customer" primaryKey="ID" dataNode="dn1,dn2"  
            rule="sharding-by-intfile">  
            <childTable name="orders" primaryKey="ID" joinKey="customer_id"  
                parentKey="id">  
                <childTable name="order_items" joinKey="order_id"  
                    parentKey="id" />  
            </childTable>  
            <childTable name="customer_addr" primaryKey="ID" joinKey="customer_id"  
                parentKey="id" />  
        </table>  
    </schema>  
<!-- 資料節點 -->  
    <dataNode name="dn1" dataHost="sam_server_1" database="db1" />  
    <dataNode name="dn2" dataHost="sam_server_2" database="db2" />  
<!-- 節點主機資訊 -->  
    <dataHost name="sam_server_1" maxCon="1000" minCon="10" balance="0"  
        writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">  
        <heartbeat>select user()</heartbeat>  
<!-- 指定寫入資料的主機 -->  
        <writeHost host="hostM1" url="192.168.0.151:3306" user="root" password="password">  
            <!-- 指定讀取資料的主機,可以有多個 -->  
            <readHost host="hostS1" url="192.168.0.152:3306" user="root" password="password" />  
        </writeHost>  
    </dataHost>  
      
    <dataHost name="sam_server_2" maxCon="1000" minCon="10" balance="0"  
        writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">  
        <heartbeat>select user()</heartbeat>  
          
        <writeHost host="hostM2" url="192.168.0.153:3306" user="root" password="password">  
            <!-- can have multi read hosts -->  
            <readHost host="hostS2" url="192.168.0.154:3306" user="root" password="password" />  
        </writeHost>  
    </dataHost>  
</mycat:schema> 
這裡的使用者密碼是MySQL的遠端登入使用者名稱密碼。

配置使用者

vi /usr/local/mycat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>  
<!-- - - Licensed under the Apache License, Version 2.0 (the "License");   
    - you may not use this file except in compliance with the License. - You   
    may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0   
    - - Unless required by applicable law or agreed to in writing, software -   
    distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT   
    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the   
    License for the specific language governing permissions and - limitations   
    under the License. -->  
<!DOCTYPE mycat:server SYSTEM "server.dtd">  
<mycat:server xmlns:mycat="http://org.opencloudb/">  
    <system>  
    <property name="defaultSqlParser">druidparser</property>  
      <!--  <property name="useCompression">1</property>--> <!--1為開啟mysql壓縮協議-->  
    <!-- <property name="processorBufferChunk">40960</property> -->  
    <!--   
    <property name="processors">1</property>   
    <property name="processorExecutor">32</property>   
     -->  
        <!--預設是65535 64K 用於sql解析時最大文字長度 -->  
        <!--<property name="maxStringLiteralLength">65535</property>-->  
        <!--<property name="sequnceHandlerType">0</property>-->  
        <!--<property name="backSocketNoDelay">1</property>-->  
        <!--<property name="frontSocketNoDelay">1</property>-->  
        <!--<property name="processorExecutor">16</property>-->  
        <!--   
            <property name="mutiNodeLimitType">1</property> 0:開啟小數量級(預設) ;1:開啟億級資料排序  
            <property name="mutiNodePatchSize">100</property> 億級數量排序批量  
            <property name="processors">32</property> <property name="processorExecutor">32</property>   
            <property name="serverPort">8066</property> <property name="managerPort">9066</property>   
            <property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property>   
            <property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> -->  
    </system>  
    <user name="test">  
        <property name="password">test</property>  
        <property name="schemas">TESTDB</property>  
    </user>  
  
    <user name="mycat">  
        <property name="password">123456</property>  
        <property name="schemas">TESTDB</property>  
        <property name="readOnly">false</property>  
    </user>  
    <!--   
    <quarantine>   
       <whitehost>  
          <host host="127.0.0.1" user="mycat"/>  
          <host host="127.0.0.2" user="mycat"/>  
       </whitehost>  
       <blacklist check="false"></blacklist>  
    </quarantine>  
    -->  
  
</mycat:server>  
這裡配置的是連線Mycat的使用者,密碼是明文的,schemas對應schema.xml檔案中的schema節點

建立資料庫

在每個資料節點MySQL上建立分庫,資料將會根據你指定的策略分配儲存到不同的節點上。

這個要單獨連線到每個MySQL上去建立,建立的資料庫名稱對應schema.xml檔案中指定的名稱,不做這一步的話客戶端連線上操作的時候會不響應卡死。

啟動服務

經過以上幾個步驟的配置,就可以到/usr/local/Mycat/bin 目錄下執行:
./mycat start
即可啟動 mycat 服務!

注:mycat 支援的命令{ console | start | stop | restart | status | dump }

可以通過以下命令檢視服務是否啟動成功:

./mycat status

如果啟動失敗了,可以檢視以下檔案的內容,分析具體原因:

/usr/local/mycat/logs/wrapper.log

或者執行mycat console檢視錯誤資訊

啟動成功了,你應該已經知道怎麼做了!馬上用Navicat for MySQL連線上看看吧!

測試

這裡使用mycat自帶的表來測試 啟動mycat: mycat start 使用Navicat for MySQL連線mycat: mycat/[email protected]



注意:

遠端連線時可能會遇到以下錯誤:

你需要參考文中的方法開放“8066”埠!

建表:

create table employee (id int not null primary key,name varchar(100),sharding_id int not null);  

插入資料:

insert into employee(id,name,sharding_id) values(1,'leader us',10000);  
insert into employee(id,name,sharding_id) values(2, 'me',10010);  
insert into employee(id,name,sharding_id) values(3, 'mycat',10000);  
insert into employee(id,name,sharding_id) values(4, 'mydog',10010);

分別到資料DB1,DB2檢視,可以看到在DB1中有: 1 leader us 10000 3 mycat 10000 DB2中有: 2 me 10010 4 mydog 10010
這說明分片成功了。

而我們還配置了主從複製,現在去從庫看看,是不是也有主庫中的資料了。

結束語

日誌是最好的朋友,不明白出了什麼問題,有日誌的話就去檢視它,沒有比它更精確直接的了;

即使官網提供的幫助也是很雜亂,各種版本,我是根據幾個版本來完成的。

對於用慣了Windows的圖形配置介面的小夥伴,開始的時候會感覺比較吃力的。



相關推薦

CentOS安裝配置Mycat+mysql水平分割實現分散式儲存

轉自http://blog.csdn.net/testcs_dn/article/details/51438216 謝謝作者的貢獻! 環境:CentOS6.5 JDK1.8 MySQL5.6.35 MyCat1.4 1.首先安裝MySQL,安裝步驟可以參考http://b

CentOS安裝配置MySql數據庫

ima 16px 必須 eas 方式 temp grep 5.7 leg CentOS版本7.2,MySql版本5.7 1、下載MySql安裝源 wget https://dev.mysql.com/get/mysql57-community-release-el

Linux CentOS安裝配置MySQL資料庫

安裝mysql資料庫   a)下載mysql源安裝包:wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm   b)安裝mysql源:yum localinstall mysql5

Linux(Ubuntu,Debian,Centos)安裝配置mysql並且遠端連線資料庫

1.Ubuntu 16 #1.安裝 sudo apt-get install mysql-server mysql-client libmysqlclient-dev #2.檢查是否安裝成功 sudo netstat -tap | grep mysql #3.啟動服務 service

centos安裝配置vncserver遠端登入伺服器或者虛擬機器

環境:centos6.0 kvm虛擬化環境 一、伺服器端 1 yum install vnc*              //安裝的是tightvnc 2 vi /etc/sysconfig/vncservers   修改成    VNCSERVERS="1:root"

Centos 安裝配置sublime

centos 安裝 閃爍 yum 磁盤 分享 cnblogs 目標 刪除 區別 Sublime 是linux下不錯的編輯器. http://www.sublimetext.com/ 1. 聯網安裝sublime 包 #sudo yum install sublime-tex

centos 安裝配置pptp實現vpn

centos l2tp vpn centos 安裝配置pptp實現vpn 1 前言PPTP(Point to Point Tunneling Protocol),即點對點隧道協議。該協議是在PPP協議的基礎上開發的一種新的增強型安全協議,支持多協議虛擬專用網(VPN),可以通過密碼驗證協

Centos安裝配置redis

bar master 發現 ping 裝配 成功 style not mst 1.安裝rediscd wget http://labfile.oss.aliyuncs.com/files0422/redis-2.8.9.tar.gz tar xvfz redis-2.8.

Linux CentOS安裝配置MySQL5.7數據庫

-s var vim rar linux c system comm p地址 dev 安裝mysql數據庫   a)下載mysql源安裝包:wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarc

Python 安裝與專屬 IDE_Pycharm 安裝配置、永久激活贈漢化版!

機房 發送 交流 沒有想到 HA QQ targe direct 方式 這個為什麽說是一次學生時代的經歷呢,我的出發點並沒有是為了吊胃口。確實,這個Python小應用,只能在學生時代用得著吧,尤其是高中和大學,如果你沒有想到也沒關系,看完我下面說的就會明白了。 對紅蜘

Python安裝與專屬IDE_Pycharm安裝配置、永久激活贈漢化版!

editor 安裝 har 提取 視頻教程 -c Python程序員 load 程序員 我是首先寫pycharm教程,後來考慮到大家會裝不會使用,我又寫了一些基礎使用教程,然後再寫這個Python安裝的。總共花費了87分鐘,確實有點辛苦,所以這些簡單的我都會用太多的話去解釋

Centos6.5 安裝配置 Apache +mysql +php 操作文檔

開機自啟動 作文 ddr pos init dev c-c++ mcrypt file 文件 目錄: 1.配置系統軟件源 2.Apache的安裝 2.1 Apache的下載 2.2 Apache的安裝 3.mysql的安

用戶目錄下編譯mysql源碼實現單主機安裝多個mysql實例

.tar.gz 5.7 unix Language working 符號 cmak sam dcm 1.建立用於安裝mysql的用戶目錄:useradd mysql_1; passwd mysql_1; 2.在沒有mysql_1目錄下建立文件夾setup: su - mys

服務器Centos7.4 下jdk1.8環境配置mysql環境搭建mysql找回(重置)密碼看這篇就夠了

版本 jdk下載 改密 我們 完成 eight ati html wid 最近一直幫我的同學搭建自己的服務器,其中涉及到了以下知識點,經過查詢博客資料等方式,再加上多重實踐,我成功總結出了完整的配置一個簡單服務器環境的步驟: (來自 ZYXS 的CSDN 博客 ,全文地址請

centos 安裝配置python虛擬環境、pip

con extras led 安裝 ble upgrading 工具 rom The centos 安裝配置python虛擬環境、pip 1.安裝pip包安裝工具# 系統默認源沒有pip安裝包[root@localhost python]# yum install pyth

mysql-配置主從數據庫實現讀寫分離

參考 image 增加 mysql- pan 位置 span 主從同步 原則 主從分離的原則:所有的寫操作在主數據庫中進行,因為主從分離的原理是涉及到同步數據,那就可能會出現延遲或者其他問題,就可能會出現臟數據。 所以,在從庫中進行的讀操作也必須是有一定容忍性的數據,例如日

MySql安裝安裝配置以及MySQL服務無法啟動解決方案

MySql免安裝版安裝配置以及MySQL服務無法啟動解決方案       文首提要:             下載的MySQL版本是:mysql-5.7.17-winx64.zip &n

Linux CentOS安裝配置OpenVPN 2.4.0最新版教程

Linux CentOS安裝配置OpenVPN 2.4.0最新版教程 2016.12.27 官方釋出了OpenVPN 2.4.0版本,相比之前的版本變化不大,新版引入了一個更快的資料壓縮演算法叫 lz4(舊版用的是 lzo),新版不再支援W

CentOS安裝配置MySQL8.0

前言 這裡記錄下在CentOS 上,安裝配置MySQL的步驟; 正文 下載yum源的安裝包 yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm 安裝

HIVE的安裝配置mysql安裝、hive建立表、建立分割槽、修改表等內容、hive beeline使用、HIVE的四種資料匯入方式、使用Java程式碼執行hive的sql命令

1.上傳tar包 這裡我上傳的是apache-hive-1.2.1-bin.tar.gz 2.解壓 mkdir -p /home/tuzq/software/hive/ tar -zxvf apache-hive-1.2.1-bin.tar.gz  -C /home/