Mycat的安裝與簡單使用

Mycat的安裝與簡單使用

一、準備資源

IP 主機名 數據庫名 安裝軟件
192.168.1.20 master master_db1 mycat,mysql
192.168.1.21 node1 node1_db2 mysql
192.168.1.22 node2 node2_db3 mysql

二、安裝MySQL

安裝mysql的方式有很多,這裏我使用docker來安裝mysql。

3臺機子上都執行同樣的操作

image-20200515152615593

image-20200515155644635

三、連接數據庫

image-20200515155756557

創建數據庫

local-master創建db1

create database db1;

local-node-1創建db2

create database db2;

local-node-2創建db3

create database db3;

四、安裝Mycat

去官網下載mycat,鏈接http://www.mycat.org.cn/

  1. 上傳Mycat到服務器

image-20200515160405920

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

image-20200515160529560

  1. 創建組
groupadd mycat
  1. 創建一個新的用戶,並加入group
useradd -g mycat mycat
  1. 給新用戶設置密碼
passwd mycat

image-20200515161040956

  1. 進入conf

修改server.xml

image-20200515161416760

完整的server.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
	<system>
	<property name="defaultSqlParser">druidparser</property>
	</system>
	<user name="root">
		<property name="password">123456</property>
		<property name="schemas">zdxh</property>
	</user>
</mycat:server>

修改schema.xml

image-20200515161739168

image-20200516105219957

完整的schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">

	<schema name="zdxh" checkSQLschema="false" sqlMaxLimit="100">
		<table name="employee" primaryKey="ID" dataNode="dn1,dn2,dn3"
			rule="sharding-by-intfile" />
	</schema>

	<dataNode name="dn1" dataHost="local-master" database="master_db1" />
	<dataNode name="dn2" dataHost="local-node-1" database="node1_db2" />
	<dataNode name="dn3" dataHost="local-node-2" database="node2_db3" />

	<dataHost name="local-master" 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.1.20:3306" user="root" password="123456"></writeHost>
	</dataHost>
	
	<dataHost name="local-node-1" 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.1.21:3306" user="root" password="123456"></writeHost>
	</dataHost>
	
	<dataHost name="local-node-2" maxCon="1000" minCon="10" balance="0"
		writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM3" url="192.168.1.22:3306" user="root" password="123456"></writeHost>
	</dataHost>

</mycat:schema>

修改partition-hash-int.txt

10000=0
10010=1
10020=2
  1. 啓動mycat
cd bin
./mycat start

啓動成功

image-20200515170634394

五、測試與使用

  1. navicat連接mycat

image-20200515170923072

這裏顯示連接成功,但是打不開數據庫,後面會提到解決方案,先往後面的步驟繼續做

  1. 創建表
use zdxh;
create table employee (id int not null primary key,name varchar(100),sharding_id int not null);

image-20200515175655400

  1. 往mycat中插入數據
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);

效果

image-20200515203852730

在mycat中插入的6條數據被分散地插入到3個數據庫中

image-20200515204045044

image-20200515204109907

image-20200515204124375

六、遇到的問題

問題1

org.opencloudb.config.util.ConfigException: schema zdxh refered by user root is not exist!

image-20200515163739559

原因

schema.xml文件下的schema標籤的name屬性值忘了改成zdxh

解決

schema.xml文件下的schema標籤的name屬性值改成zdxh

問題2

navicat連接mycat,顯示連接成功,卻打不開mycat,提示database not selected的問題

image-20200515171718851

原因

navicat版本的問題

解決

方案1:

如果採用工具連接,1.4,1.3目前部分工具無法連接,會提示database not selected,建議採用高版本,navicat測試。1.5已經修復了部分工具連接。

方案2:使用mysql客戶端連接

mysql -uroot -p123456 -P8066 -h192.168.1.20

image-20200515173743637

方案3:使用sqlyog連接工具連接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章