MYCAT2搭建

资料参考

mycat2权威指南 地址:Mycat2权威指南 · 语雀

Mycat2中文教程 地址:Mycat2 中文教程_w3cschool

安装

cd   /usr/local
# 下载tar包壳
wget   http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.20.zip
# 下载运行jar包,用http://dl.mycat.org.cn/2.0/   找到最新的jar包
wget   http://dl.mycat.org.cn/2.0/1.22-release/mycat2-1.22-release-jar-with-dependencies.jar
 
# 解压tar包壳(yum install -y unzip zip)
unzip   mycat2-install-template-1.20.zip
# 将运行jar包放到tar包壳的 lib 目录下
mv   mycat2-1.22-release-jar-with-dependencies.jar mycat/lib/
# 修改tar包壳bin/ 目录下所有文件的权限
chmod   777 mycat/bin/*

配置root用户权限

GRANT   ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH   PRIVILEGES;

修改数据源

{
"dbType":   "mysql",
"idleTimeout":   60000,
"initSqls":   [],
"initSqlsGetConnection":   true,
"instanceType":   "READ_WRITE",
"maxCon":   1000,
"maxConnectTimeout":   3000,
"maxRetryCount":   5,
"minCon":   10,
"name":   "db0",
"password":   "<your_mysqldb_password>",
"type":   "JDBC",
"url":   "jdbc:mysql://10.0.27.38:3306?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false",
"user":   "root",
"weight":   0,
"queryTimeout":5000
}

启动

cd mycat/bin
./mycat   start
./mycat   status
./mycat   start 启动
./mycat   stop 停止
./mycat   console 前台运行
./mycat   install 添加到系统自动启动(暂未实现)
./mycat   remove 取消随系统自动启动(暂未实现)
./mycat   restart 重启服务
./mycat   pause 暂停
./mycat   status 查看启动状态

集群设置

/*+ mycat:createDataSource{
"name":"dw0",
"url":"jdbc:mysql://10.0.27.38:3306",
"user":"root",
"password":"123456"
} */;
/*+ mycat:createDataSource{
"name":"dr0",
"url":"jdbc:mysql://10.0.27.38:3306",
"user":"root",
"password":"123456"
} */;
/*! mycat:createCluster{"name":"c0","masters":["dw0"],"replicas":["dr0"]} */;

分表·

mycat2在mycat逻辑库里进行建表,会自动把建表语句写入schema配置文件,不需要自己去配置

create   database insigma_road_detection_v5;
 
-- 创建分表,DBPARTITION指分库数,TBPARTITION指分表数,MOD_HASH(area_code)指area_code字段按照hash方式分表
CREATE   TABLE insigma_road_detection_v5.`detection_gps_info`  (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT,
  `dataset_id` varchar(20) CHARACTER SET   utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
  `assistant_task_id` varchar(32) CHARACTER   SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务id',
  `box_id` varchar(16) CHARACTER SET utf8mb4   COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号',
  `collection_time` datetime(0) NOT NULL   COMMENT '定位采集时间,格式:yyyy-MM-dd HH:mm:ss',
  `latitude_amap` varchar(16) CHARACTER SET   utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '高德坐标维度',
  `longitude_amap` varchar(16) CHARACTER SET   utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '高德坐标经度',
  `latitude_84` varchar(16) CHARACTER SET   utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '维度',
  `longitude_84` varchar(16) CHARACTER SET   utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '经度',
  `altitude` varchar(16) CHARACTER SET   utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '海拔',
  `bearing` varchar(16) CHARACTER SET utf8mb4   COLLATE utf8mb4_general_ci NOT NULL COMMENT '方向角',
  `speed` varchar(16) CHARACTER SET utf8mb4   COLLATE utf8mb4_general_ci NOT NULL COMMENT '速度',
  `program_padding` char(1) CHARACTER SET   utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '是否',
  `gmt_created` datetime(0) NULL DEFAULT   CURRENT_TIMESTAMP(0) COMMENT '创建时间',
  `task_type` int(2) NULL DEFAULT 1 COMMENT '数据类型',
  `area_code` varchar(10) CHARACTER SET   utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '区域编码',
  `gmt_modified` datetime(0) NULL DEFAULT   CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '修改时间',
  `is_deleted` tinyint(4) NULL DEFAULT 0   COMMENT '逻辑删除标志位',
  PRIMARY KEY (`ID`) USING BTREE,
  UNIQUE INDEX   `UK_BOX_ID_COLLECTION_TIME_PROGRAM_PADDING`(`box_id`, `collection_time`,   `program_padding`, `task_type`) USING BTREE,
  INDEX `IX_DATASET_ID`(`dataset_id`,   `task_type`) USING BTREE,
  INDEX   `IX_ASSISTANT_TASK_ID`(`assistant_task_id`) USING BTREE
)   ENGINE = InnoDB DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci   COMMENT = 'gps表' ROW_FORMAT = Dynamic 
DBPARTITION   BY MOD_HASH(area_code) DBPARTITIONS 1
TBPARTITION   BY MOD_HASH(area_code) TBPARTITIONS 10;

通过查看物理库,发现已经创建好分表了

 默认是使用雪花算法作为全局序列,也可以通过设置做到自增,不过要id作为分表条件才能实现insert id为null自增

1. 下载Mycat2 从Mycat2官网http://www.mycat.io/下载最新版本的Mycat2,解压缩到指定的目录。 2. 安装Java Mycat2需要Java环境,可以从官网下载并安装Java。 3. 配置Mycat2 在Mycat2的conf目录下,有三个配置文件需要修改: ① server.xml:主要配置服务器的IP和端口。 ② schema.xml:配置数据库信息和数据分片。 ③ rule.xml:配置数据读写分离策略。 4. 启动Mycat2 在Mycat2的bin目录下,执行./mycat start命令,启动Mycat2服务。 5. 测试Mycat2 在Mycat2的bin目录下,执行./mycat console命令,进入Mycat2的控制台,输入show @@datasources命令,可以查看已经配置好的数据源信息。 6. 配置MySQL数据库Mycat2中配置MySQL数据库,需要在schema.xml文件中添加数据源信息。 例如: ```xml <dataHost name="db1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="host1" url="jdbc:mysql://host1:3306/test" user="root" password="123456"> </writeHost> <readHost host="host2" url="jdbc:mysql://host2:3306/test" user="root" password="123456"/> <readHost host="host3" url="jdbc:mysql://host3:3306/test" user="root" password="123456"/> </dataHost> ``` 上面的配置中,定义了一个名为db1的数据源,包含一个写节点和两个读节点,分别连接到host1、host2和host3上的3306端口。 7. 配置数据分片 在schema.xml文件中,可以通过配置数据分片来实现数据的水平扩展。 例如: ```xml <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> <table name="order" primaryKey="id" dataNode="dn1,dn2" rule="mod-long"> </table> </schema> ``` 上面的配置中,定义了一个名为TESTDB的数据库,其中order表被分片到dn1和dn2两个数据节点上,分片规则为mod-long。 8. 配置数据读写分离 在rule.xml文件中,可以配置数据读写分离策略。 例如: ```xml <rule name="user_rule"> <columns>id</columns> <tables>user</tables> <algorithm>mod-long</algorithm> <shardRules> <rule> <dataSourceName>db1</dataSourceName> <tableName>user</tableName> <columnValue>0-2</columnValue> </rule> <rule> <dataSourceName>db2</dataSourceName> <tableName>user</tableName> <columnValue>3-5</columnValue> </rule> <rule> <dataSourceName>db3</dataSourceName> <tableName>user</tableName> <columnValue>6-9</columnValue> </rule> </shardRules> </rule> ``` 上面的配置中,定义了一个名为user_rule的规则,对user表进行分片,根据id字段的值进行分片,分三片,分别连接到db1、db2和db3上。 9. 总结 通过以上步骤,我们成功搭建了一个Mycat2分布式数据库集群。Mycat2具有分布式、高可用、高并发、分片、读写分离等特点,是一个非常优秀的分布式数据库中间件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值