mycat-水平分片配置-最基础入门学习

前提,准备3至4台服务器,如果3台的话,其中一台既是mysql,也是mycat服务器
并在每台服务器上 安装好jdk1.8和mysql
jdk1.8安装步骤,可查看博文
linux系统 安装jdk1.8_chown -r root:root /usr/local/jdk1.8-CSDN博客

mysql安装步骤,可查看博文,mysql的远程访问权限,最好开启,方便测试,方法自行baidu
linux系统 yum方式安装mysql5.7_linux下yum安装mysql5.7-CSDN博客

主机分布情况 172.16.208.214 mycat服务器 【逻辑库,逻辑表】172.16.208.213 mysql服务器 【实际库,实际表】172.16.208.212 mysql服务器 【实际库,实际表】172.16.208.211 mysql服务器 【实际库,实际表】
 

mycat的使用,基本上按以下步骤进行操作


1 修改 mycat的配置文件,主要是 schema.xml,server.xml,rule.xml

  • schema.xml 管理着MyCat的逻辑库、逻辑表以及对应的分片规则、DataNode以及DataSource。

  • server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。

2 根据上面的 schema.xml中的配置文件,在 mysql服务器中【211,212,213】,共3台,新建 实际库 actual_db1

3 启动 mycat服务

后台启动
./bin/mycat start

普通启动,直接看日志
./bin/mycat console

./bin/mycat stop
./bin/mycat status
./bin/mycat restart

4 根据上面的server.xml配置文件中的账号,密码,连接到 mycat 服务器,注意端口是8066

mysql -h 172.16.208.214 -P 8066 -u root -p

5 根据上面的 schema.xml中的配置文件,在 mycat中新建逻辑库 【看版本,也许不用】,新建逻辑表
   再查看MySQL的3个库,发现表都自动创建好
如果实际库中已经有表,且逻辑表和实际表名也相同,就可省略此步骤

CREATE TABLE logic_table_1 (
  id BIGINT (20) NOT NULL,
  title VARCHAR (100) NOT NULL,
  PRIMARY KEY (id)
) ENGINE = INNODB DEFAULT CHARSET = utf8 ;

6 在 mycat中,对逻辑表做增删改查操作,测试,至于数据会如何分布,就是rule.xml中的配置这里使用默认

因为我们采用的分片规则是每节点存储500万条数据,所以当ID大于5000000则会存储到第二个节点
上。
# 会添加到 211机器
INSERT INTO logic_table_1(ID,TITLE) VALUES(1,'goods1'); 
INSERT INTO logic_table_1(ID,TITLE) VALUES(2,'goods2'); 
INSERT INTO logic_table_1(ID,TITLE) VALUES(3,'goods3');

# 会添加到 212机器
INSERT INTO logic_table_1(ID,TITLE) VALUES(5000001,'goods5000001');


以下是配置文件的详细情况
schema.xml配置

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

	<!-- 逻辑库配置 -->
	<schema name="logic_db1" checkSQLschema="false" sqlMaxLimit="100">
		<!-- 逻辑表配置,rule用于指定分片规则 -->
		<table name="logic_table_1" dataNode="dn1,dn2,dn3" rule="auto-sharding-long"/>
	</schema>
	
	<!-- 数据节点配置,通常说所的数据分片 -->
	<dataNode name="dn1" dataHost="localhost1" database="actual_db1" />
	<dataNode name="dn2" dataHost="localhost2" database="actual_db1" />
	<dataNode name="dn3" dataHost="localhost3" database="actual_db1" />
	
	<!-- 节点主机配置 ,具体的数据库实例、读写分离配置和心跳语句 -->
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		
		<writeHost host="hostM1" url="172.16.208.211:3306" user="root"
				   password="ProphetClouds.com2017">
		</writeHost>
	</dataHost>
	
	<dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		
		<writeHost host="hostM2" url="172.16.208.212:3306" user="root"
				   password="ProphetClouds.com2017">
		</writeHost>
	</dataHost>
	
	<dataHost name="localhost3" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		
		<writeHost host="hostM3" url="172.16.208.213:3306" user="root"
				   password="ProphetClouds.com2017">
		</writeHost>
	</dataHost>

</mycat:schema>

server.xml修改如下

<!-- 添加两个用户,一个为只读权限 -->
<user name="root" defaultAccount="true">
		<property name="password">123456</property>
		<property name="schemas">logic_db1</property>
		
		<!-- 表级 DML 权限设置 -->
		<!-- 		
		<privileges check="false">
			<schema name="logic_db1" dml="0110" >
				<table name="tb01" dml="0000"></table>
				<table name="tb02" dml="1111"></table>
			</schema>
		</privileges>		
		 -->
	</user>

	<user name="user">
		<property name="password">user</property>
		<property name="schemas">logic_db1</property>
		<property name="readOnly">true</property>
	</user>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值