ShardingSphereProxy:快速入门

使用 Docker 运行 ShardingSphere

在基于 Docker 安装 ShardingSphere 时,按照官方文档《使用 Docker :: ShardingSphere》所提供的步骤操作即可。


在运行ShardingSphereProxy之前,我们需要基于我们的测试场景修改配置文件,我测试场景中主要用了三张表,一个订单表,订单表基于user_id进行分表,还有一个user表和product表,这两张表未进行分表。基于这个场景,我们只需要修改两个配置文件,这两个配置文件分别是 global.yaml 和 database-sharding.yaml

配置文件示例

global.yaml的配置

mode:type: Standalone # 单机模式repository:type: H2props:jdbcUrl: jdbc:h2:file:~/config_data # 元数据持久化数据库连接 URLauthority:users:- user: rootpassword: root- user: shardingpassword: shardingprivilege:type: ALL_PERMITTEDtransaction:defaultType: XAproviderType: AtomikossqlParser:sqlStatementCache:initialCapacity: 2000maximumSize: 65535parseTreeCache:initialCapacity: 128maximumSize: 1024logging:loggers:- loggerName: ShardingSphere-SQLadditivity: truelevel: INFOprops:enable: falsesqlFederation:sqlFederationEnabled: falseexecutionPlanCache:initialCapacity: 2000maximumSize: 65535props:system-log-level: INFOmax-connections-size-per-query: 1kernel-executor-size: 16  # Infinite by default.proxy-frontend-flush-threshold: 128  # The default value is 128.# sql-show is the same as props in logger ShardingSphere-SQL, and its priority is lower than logging rulesql-show: falsecheck-table-metadata-enabled: false# Proxy backend query fetch size. A larger value may increase the memory usage of ShardingSphere Proxy.#    # The default value is -1, which means set the minimum value for different JDBC drivers.proxy-backend-query-fetch-size: -1proxy-frontend-executor-size: 0 # Proxy frontend executor size. The default value is 0, which means let Netty decide.proxy-frontend-max-connections: 0 # Less than or equal to 0 means no limitation.proxy-default-port: 3307 # Proxy default port.proxy-netty-backlog: 1024 # Proxy netty backlog.cdc-server-port: 33071 # CDC server portproxy-frontend-ssl-enabled: falseproxy-frontend-ssl-cipher: ''proxy-frontend-ssl-version: TLSv1.2,TLSv1.3

database-sharding.yaml的配置

databaseName: shardingdataSources:ds:url: jdbc:mysql://10.10.37.108:13306/sharding?charset=utf8mb4&parseTime=True&loc=Localusername: {{你的用户名字}}password: {{你的密码}}connectionTimeoutMilliseconds: 30000idleTimeoutMilliseconds: 60000maxLifetimeMilliseconds: 1800000maxPoolSize: 50minPoolSize: 1rules:
- !SHARDINGtables:orders:actualDataNodes: ds.orders_${0..3}tableStrategy:standard:shardingColumn: user_idshardingAlgorithmName: orders_inlinekeyGenerateStrategy:column: user_idkeyGeneratorName: snowflakebindingTables:- ordersshardingAlgorithms:orders_inline:type: INLINEprops:algorithm-expression: orders_${user_id % 4}allow-range-query-with-inline-sharding: truekeyGenerators:snowflake:type: SNOWFLAKE

运行 Docker 容器

使用以下命令运行 ShardingSphere Proxy 的 Docker 容器:

docker run -d \-v /host/path/to/conf:/opt/shardingsphere-proxy/conf \-v /host/path/to/ext-lib:/opt/shardingsphere-proxy/ext-lib \-e PORT=3308 -p13308:3308 apache/shardingsphere-proxy:latest

数据库表结构

在上述配置中,我们对订单表(orders)基于 user_id 进行了分表操作,共分为四张表。而用户表(user)和产品表(product)则未进行分表处理,它们的建表语句如下:

DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders_0`  (`id` bigint NOT NULL,`order_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,`user_id` int NOT NULL,`product_id` int NOT NULL,`order_date` bigint NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (`id` bigint NOT NULL,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product`  (`id` bigint NOT NULL,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

查看分表情况及连接操作

 首先,我们可以使用 Navicat 直接连接 mysql 的 10.10.37.108:13306/sharding通过这种方式便能查看到分表的具体情况。

使用 Navicat 或其他数据库管理工具,我们可以连接到 ShardingSphere Proxy。由于 Proxy 运行在 Docker 容器上,并且暴露了端口 13308,您应该使用以下连接信息:

  • 主机:localhost 或 Docker 容器的 IP 地址
  • 端口:13308
  • 用户名:root 或 sharding(根据我们在 global.yaml 中的配置)
  • 密码:对应的密码

连接成功后,我们将看到 ShardingSphere 自动创建的一些管理数据库和实例,以及我们配置的 sharding 数据库。在 sharding 数据库中,尽管我们实际上有多个 orders 分表,但 ShardingSphere 会将它们抽象为一个逻辑表,使我们能够像操作单个表一样进行操作。

现在,我们可以在 Navicat 中对 sharding 数据库中的表执行增删改查等操作了。对于 user 和 product 表,由于它们没有分表,我们将直接看到并操作这些物理表。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/489908.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 获取鼠标点击位置物体贴图颜色

实现 Ray ray Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit)) {textureCoord hit.textureCoord;textureCoord.x * textureMat.width;textureCoord.y * textureMat.height;textureColor textureMat.GetPixel(Mathf.Flo…

Python高性能web框架-FastApi教程:(3)路径操作装饰器方法的参数

路径操作装饰器方法的参数 1. 定义带有参数的POST请求路由 app.post(/items,tags[这是items测试接口],summary这是items测试的summary,description这是items测试的description,response_description这是items测试的response_description) def test():return {items: items数据…

基于SpringBoot的嗨玩旅游网站:一站式旅游信息服务平台的设计与实现

摘要 在旅游需求日益增长的今天,一个全面、便捷的旅游信息服务平台显得尤为重要。嗨玩旅游网站正是为了满足这一需求而设计的在线平台,它提供了包括景点信息、旅游线路、商品信息、社区信息和活动推广等在内的丰富旅游目的地信息,旨在帮助用…

【K8S系列】Kubernetes 资源对象的 YAML 文件示例及其详细介绍

在 Kubernetes 中,YAML 文件用于定义各种资源对象的配置,包括 Pods、Deployments、Services 等。以下是一些常见 Kubernetes 资源对象的 YAML 文件示例及其详细介绍。 一、Pod Pod 是 Kubernetes 中最基本的部署单位,通常包含一个或多个容器…

MVP模式的理解和实践

MVP(Model-View-Presenter)模式是一种用于组织代码的架构模式,主要用于用户界面的开发。它通过将应用程序的三个主要组件分开,提高了应用的可维护性和可测试性。本文将详细介绍MVP模式的理解和实践,并通过Java语言提供…

微信小程序中 crypto-js 加解密全攻略

一、引言 在微信小程序开发中,数据的安全至关重要。加解密技术在保护用户数据和应用程序的安全性方面起着关键作用。小程序在与服务器进行数据交互时,面临着数据泄露、篡改等安全风险。为了确保用户信息的安全,选择合适的加解密算法变得尤为…

Mac mini m4本地跑大模型(ollama + llama + ComfyUI + Stable Diffusion | flux)

change log 2024-12-11 10:28(推荐重新观看) 针对绘画大模型的使用做进一步的详细操作(flux1dev) 见篇节(绘画大模型) 2024-12-10 更新了基础的chat大模型和绘画大模型的基础环境搭建。 安装chat大模型&am…

jenkins harbor安装

Harbor是一个企业级Docker镜像仓库‌。 文章目录 1. 什么是Docker私有仓库2. Docker有哪些私有仓库3. Harbor简介4. Harbor安装 1. 什么是Docker私有仓库 Docker私有仓库是用于存储和管理Docker镜像的私有存储库。Docker默认会有一个公共的仓库Docker Hub,而与Dock…

Flutter 内嵌 unity3d for android

前言: 最近刚整完 unity3d hybridCLR 更新代码和资源,我们 趁热打铁 将 Unity3D 嵌入 Flutter 应用中。实现在 Flutter 使用 Unity3D, 可以做 小游戏 大游戏; 之前都是 内嵌 Webview 来实现的。虽然 CocosCreator 做出来的效果也不错&#xf…

移远EC200A-CN的OPENCPU使用GO开发嵌入式程序TBOX

演示地址: http://134.175.123.194:8811 admin admin 演示视频: https://www.bilibili.com/video/BV196q2YQEDP 主要功能 WatchDog 1. 守护进程 2. OTA远程升级 TBOX 1. 数据采集、数据可视化、数据上报(内置Modbus TCP/RTU/ASCII,GPS协…

健康管理系统(Koa+Vue3)

系统界面(源码末尾获取) 系统技术 Vue3 Koa Nodejs Html Css Js ....... 系统介绍 系统比较简单,轻轻松松面对结业课堂作业.采用的是基于nodejs开发的Koa框架作为后端,采用Vue框架作为前端,完成快速开发和界面展示. 系统获取 啊啊啊宝/KoaVue3https://gitee.com/ah-ah-b…

KALI安装操作及过程

以下是在计算机上安装 Kali Linux 的详细教程:(通常我直接使用虚拟机) 解压虚拟机安装包,直接在虚拟机中打开KALI (将内存改为4GB) 初始密码账号:kali 一、准备工作 下载 Kali Linux 镜像文件…

【Python小课堂】第 1 课 Windows下的Python基础

第 1 课 Windows下的Python基础 By Yichen Li 2024/12/14 一、内容简介 开宗明义第一节,介绍在Windows下初识Python这门神奇且强大的编程语言,以及最简单的代码编写。 二、Windows11系统 默认读者对Windows11系统有基本的了解。 1、呼出系统命令行方法…

相机测距原理

基础概念的回顾 焦距的定义 焦距是指透镜或镜头的光学中心(通常是透镜的几何中心)到其焦点的距离。 焦点是光线的交点,它指的是透镜或镜头聚焦所有入射光线后汇聚的位置。焦点的位置与透镜的曲率和光线的入射角度相关。就是说所有光线经过…

java使用itext生成复杂数据的pdf

上一篇文章是 java使用itext生成pdf标签 使用了 Adobe Acrobat 软件 设置域 本篇文章不使用其他工具,纯代码手写 pdf表格 首先,什么是Itext Apache iText 是一个开源 Java 库,支持 PDF 文档的开发和转换。 在本教程中,我们将学…

回归预测 | Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习回归预测

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 回归预测 | Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习回归预测 模型设计 基于BiLSTM-Adaboost的回归预测模型结合了双向长短期记忆神经网络(BiLSTM)和Adaboost集成学习的…

MATLAB生成.exe独立程序过程(常见问题解决方法)(2024.12.14)

本文只记录我执行过程中遇到的关键问题、以及解决方法,不讲诉整个流程。 电脑环境 win11系统 matlab 2024b 版本 整体流程 1.下载matlab运行时库,简写为MCR 2.配置MCR环境 3.打包程序 4.目标机器安装程序 一、下载MCR 下载这个折腾了大半天,大概问题就是…

python 调Qt C++ 写法配置和坑点

python 示例写法 和调c动态库一样 通过回调函数方式 将python函数注册到c 动态库中 from ctypes import *def DllCall(nParam, nFlag):print(nParam, nFlag)z2 0.6z3 0.4z4 0.0z5 0.3z6 0.5z7 0.8z8 0.3z9 0.9strData str(z2) str(z3) str(z4) str(z5)…

从零开始学docker(五)-可用的docker镜像

最近docker镜像都不能访问,目前亲测可用的docker镜像可用,并拉取mysql测试完成。 [缺点] docker search 查不到镜像的索引列表,只能手动查询索引目录(解决方案在最后)。 linux服务器vim打开镜像文件daemon.json vim /e…

开源 AI 智能名片 S2B2C 商城小程序对私域流量运营的全方位助力

在当今竞争激烈的商业环境中,私域流量运营已成为企业实现可持续发展和提升竞争力的关键策略之一。开源 AI 智能名片 S2B2C 商城小程序凭借其独特的功能与特性,从多个维度为私域流量运营提供了强有力的支持与推动,以下将详细阐述其在各个方面的…