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安裝會更快
編譯安裝步驟:
- ./congfigrue –prefix=安裝路徑
- make
- 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以后 ,三台機器同樣配置數據庫
具體步驟如下:
- 配置編碼格式,vi /etc/my.cnf ,添加default-character-set=utf8
- 添加開機啟動項
chkconfig --add mysqld
chkconfig mysqld on
- 啟動mysql,service mysqld start
- 配置root用戶並設置密碼,mysqladmin -u root password 123456
- 創建新用戶,首先用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,根據不同機器數據庫名不同
- 上述操作在三台機器上一樣操作
三. 安裝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連接的庫