1. 程式人生 > >mycat安裝和測試

mycat安裝和測試

slave roo character 三臺 delet 1.4 property 啟動項 客戶端

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 [email protected]%‘ 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連接的庫

mycat安裝和測試