mycat安裝和測試


mycat安裝和測試

一.  環境准備

本機環境是三台centos6.5

IP

主機名

數據庫名

安裝軟件

192.168.17.4

master

db1

mycat,mysql

192.168.17.5

slave1

db2

mysql

192.168.17.6

slave2

db3

mysql

 

二.  安裝mysql

1.安裝mysql軟件

linux下安裝mysql有兩種方式:一種是通過下載源碼編譯安裝,一種是通過rpm包安裝,如果配置了yum直接用yum安裝會更快

編譯安裝步驟:

  1.  ./congfigrue –prefix=安裝路徑
  2.  make
  3. make install

因為編譯安裝,后面為了使用方便要將服務注冊到init服務中比較麻煩,這里介紹最簡單的yum安裝

1.     安裝mysql客戶端

yum -y install mysql

 

2.     安裝mysql服務器端

yum -y install mysql-server

yum -y install mysql-devel

 

3.添加mysql用戶及權限並配置數據庫

三台服務器都安裝mysql以后 ,三台機器同樣配置數據庫

具體步驟如下:

  1. 配置編碼格式,vi  /etc/my.cnf  ,添加default-character-set=utf8

 

  1. 添加開機啟動項

chkconfig --add mysqld

chkconfig mysqld on

 

  1. 啟動mysql,service mysqld start

 

  1. 配置root用戶並設置密碼,mysqladmin -u root password 123456

 

  1. 創建新用戶,首先用root用戶登錄,mysql -uroot –p然后輸入密碼

 

執行use mysql,進入用戶管理庫,執行select user,host from user;查詢當前用戶發現有一些user是空的用戶,直接刪掉,delete  from  user  where   user=”” 否則后面會出問題

 

 

這里能看到只能本機訪問root,可以通過執行語句update user set host = '%' where user = 'root' and host='localhost';;來釋放root的訪問權限,讓所有ip都能通過root登錄

 

執行語句insert into mysql.user(Host,User,Password) values("%","mycat",password("123456"));添加新用戶

 

然后是賦權限,我這里是賦了所有權限,可以只賦某個庫,或者部分權限,命令自己網上查,執行賦權限語句grant all privileges on *.* to 'mycat'@'%' identified by '123456';后一定記得執行flush privileges;來刷新權限

 

登錄新建的用戶並創建響應的數據庫,mysql –umycat –p   ,create database db1/db2/db3,根據不同機器數據庫名不同

 

  1. 上述操作在三台機器上一樣操作

 

三.  安裝mycat

1.安裝mycat軟件並創建用戶

下載解壓tar -zxvf Mycat-server-1.4-release-20151019230038-linux.tar.gz

配置環境變量

export MYCAT_HOME=/opt/sxt/soft/mycat

PATH=$PATH:$MYCAT_HOME/bin

 

通過配置sh /opt/sxt/soft/mycat/bin/mycat start執行開機啟動也可以自己寫腳本加入init服務

 

創建一個新的group

groupadd mycat

創建一個新的用戶,並加入group

useradd -g mycat mycat

給新用戶設置密碼,

passwd mycat

 

2.配置mycat配置文件

在三台mysql的配置文件vi /etc/my.cnf中加入lower_case_table_names = 1來忽略大小寫
 
         
編輯schema文件
先備份一下cp   $MYCAT_HOME/conf/schema.xml    $MYCAT_HOME/conf/schema.xml.tmp
vim $MYCAT_HOME/conf/schema.xml 
將里面mycat:schema節點的東西全部干掉,如下配置
<table name="employee" primaryKey="ID" dataNode="dn1,dn2,dn3"
rule="sharding-by-intfile" />
</schema>
<!--數據節點dn1,對應的主機c1,對應是數據庫db1 -->
<dataNode name="dn1" dataHost="master" database="db1" />
<dataNode name="dn2" dataHost="slave1" database="db2" />
<dataNode name="dn3" dataHost="slave2" database="db3" />
<!-- 主機C1-->
<dataHost name="master" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<!--mysql數據庫的連接串 -->
<writeHost host="hostM1" url="master:3306" user="mycat"
password="123456">
</writeHost>
</dataHost>
<!-- 主機C2-->
<dataHost name="slave1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM2" url="slave1:3306" user="mycat"
password="123456">
</writeHost>
</dataHost>
<!-- 主機C3-->
<dataHost name="slave2" maxCon="1000" minCon="10" balance="0"
  writeType="0" dbType="mysql" dbDriver="native">
 <heartbeat>select user()</heartbeat>
 <!--mysql數據庫的連接串 -->
 <writeHost host="hostM3" url="slave2:3306" user="mycat"
    password="123456">
 </writeHost>
</dataHost>
 
         
在conf目錄下配置server.xml ,將目錄下沒有的用戶全部刪掉或者注釋掉,添加可用的用戶,這里添加了
<user name="mycat">
<property name="password">123456</property>
<property name="schemas">JamesMycatSchema</property>
</user>
 
         
修改conf下的partition-hash-int.txt文件  在下面添加10020=2,原本默認的是分兩個就是10000和10010,現在我們三個就要三個分類id了,添加一個即可
 
        

四.  測試mycat

1.啟動mycat,

執行mycat start

 

tail -100  $MYCAT_HOME/logs/wrapper.log查看結果如下就表明啟動成功了

 

2.測試mysql表橫向分割

在虛擬機外的windows安裝Navicat for MySQL,分別連接到三個mysql數據庫,執行建表語句create table employee (id int not null primary key,name varchar(100),sharding_id int not null);

用Navicat for MySQL連接mycat,mycat默認端口是8066,配置如圖:

 

因為剛才執行了建表語句,這時候連接上了mycat里面也有一個空的employee表

執行如下語句

insert into employee(id,name,sharding_id) values(1, 'I am db1',10000);

insert into employee(id,name,sharding_id) values(2, 'I am db2',10010);

insert into employee(id,name,sharding_id) values(3, 'I am db3',10020);

insert into employee(id,name,sharding_id) values(4, 'I am db1',10000);

insert into employee(id,name,sharding_id) values(5, 'I am db2',10010);

insert into employee(id,name,sharding_id) values(6, 'I am db3',10020);

 

刷新一下navicat查看mycat連接的庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM