Shardingsphere-Proxy 5.5.0数据迁移

Shardingsphere-Proxy 5.5.0数据迁移

  • Shardingsphere系列目录:
  • 背景
  • 配置集群部署
    • 搭建Zookeeper
    • 修改shardingsphere-proxy配置
    • 重启shardingsphere-proxy
  • 执行数据迁移
    • 连接代理数据库实例(Navicate)
    • 应用代理数据库
    • 注册目标分片数据库存储单元
    • 创建分库分表规则
      • 删除规则
    • 维护源数据库存储单元
    • 执行迁移任务
    • 查询数据迁移任务列表
    • 查询指定任务id的状态
    • 提交任务

Shardingsphere系列目录:

【Springboot 集成 Shardingsphere-JDBC】
【Shardingsphere-Proxy 5.5.0部署】
【Shardingsphere-Proxy 5.5.0数据迁移】

背景

继上一篇【Shardingsphere-Proxy 5.5.0部署】 部署完了Shardingsphere-Proxy,方便在线下查询数据;但是分库分表实现了,但是老数据怎么办,难道还让那4000w+的数据待在那里不动?这样不就造成数据倾斜了吗?所以咱们需要将原先的老数据按照分库分表规则迁移到分片表。

配置集群部署

原先咱们之前部署的shardingsphere-proxy是单机模式(Standalone),但是数据迁移的前提就是需要部署集群模式(Cluster)的shardingsphere-proxy,这个也不难,做以下三步即可:

  1. 搭建Zookeeper
  2. 修改shardingsphere-proxy配置为集群模式
  3. 重启shardingsphere-proxy

搭建Zookeeper

按照【Zookeeper部署】 步骤安装。

修改shardingsphere-proxy配置

在原global.yaml配置基础上,新增配置如下:

mode:# 集群模式type: Clusterrepository:# 持久化仓库类型type: ZooKeeper# 持久化仓库所需属性props:# 注册中心命名空间namespace: governance_ds# 注册中心连接地址(zookeeper的客户端连接端口)server-lists: localhost:2181

以上配置中的namespace可借鉴【Zookeeper部署】中对namespace的配置,其中namespace列表中的元素可选一个填写到此处。

重启shardingsphere-proxy

进入【bin】目录,执行关闭指令:

./stop.sh

进入【bin】目录,执行启动指令:

./start.sh

执行数据迁移

连接代理数据库实例(Navicate)

借鉴【Shardingsphere-Proxy 5.5.0部署】中的Navicate连接代理数据库方法。

应用代理数据库

use sharding_test_db;

注册目标分片数据库存储单元

REGISTER STORAGE UNIT target_test_0  (URL="jdbc:mysql://localhost:3306/test_db_0?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true",USER="root",PASSWORD="123456"
);
REGISTER STORAGE UNIT target_test_1  (URL="jdbc:mysql://localhost:3306/test_db_1?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true",USER="root",PASSWORD="123456" 
);

创建分库分表规则

规则名是proxy代理数据库汇聚的表名

CREATE SHARDING TABLE RULE test_table(DATANODES("target_tss_${0..1}.test_table_${1..31}"),DATABASE_STRATEGY(TYPE="standard",SHARDING_COLUMN=id,SHARDING_ALGORITHM(TYPE(NAME="inline",PROPERTIES("algorithm-expression"="target_tss_${id % 2}")))),			TABLE_STRATEGY(TYPE="standard",SHARDING_COLUMN=stat_date,SHARDING_ALGORITHM(TYPE(NAME="inline",PROPERTIES("algorithm-expression"="test_table_$->{Integer.parseInt(stat_date.toString().substring(8))}")))),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME="snowflake"))
);

sql讲解:
DATABASE_STRATEGY:数据库分片策略(按照id字段取模分片)
TABLE_STRATEGY:表分片策略(按照stat_date字段yyyy-MM-dd时间格式的最后两位并转数字作为分片表后缀)
KEY_GENERATE_STRATEGY:主键生成策略(雪花算法)

这个例子是标准分片的一个例子,可以借鉴【shardingsphere官网】看其他的分片类型例子。

删除规则

如果规则有修改,可以删除后重新添加。有修改语法,但是我感觉先删后增更方便。

DROP SHARDING TABLE RULE IF EXISTS 规则别名;
例:DROP SHARDING TABLE RULE IF EXISTS test_table;

维护源数据库存储单元

REGISTER MIGRATION SOURCE STORAGE UNIT source_tss (URL="jdbc:mysql://localhost:3306/test_db?serverTimezone=UTC&useSSL=false",USER="root",PASSWORD="123456",PROPERTIES("minPoolSize"="1","maxPoolSize"="20","idleTimeout"="60000")
);

执行迁移任务

MIGRATE TABLE 源数据库存储单元别名.源表名 INTO 分库分表汇聚表名;
例:MIGRATE TABLE source_tss.test_table INTO test_table;

查询数据迁移任务列表

可查询任务id

SHOW MIGRATION LIST;

在这里插入图片描述

查询指定任务id的状态

SHOW MIGRATION STATUS '任务id';

在这里插入图片描述

提交任务

COMMIT MIGRATION '任务id';

注意:

  1. 同一个表执行的迁移任务id相同,如果想多次执行同一个表的迁移任务,需要【提交任务】提交完之后可循环执行
  2. 【执行迁移任务】目标表需要为空,报错信息可在【查询指定任务id的状态】列表的【error_message】字段查看
  3. 集群模式修改配置文件中的表分片逻辑后可能会无效,因为有缓存的缘故,我的做法是把zookeeper和shardingsphere-proxy重启就可以了。

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

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

相关文章

el-dialog弹框全局增加可拖拽指令

一、需求弹框可以任意拖拽位置,并且关闭重置不影响下一个弹框出现的位置 首先建的新的js文件draggable.j s具体位置随意 // draggable.js export default {bind(el, binding, vnode) {const dialogHeaderEl = el.querySelector(.el-dialog__header);const dragDom = el.quer…

composer 安装如何彻底删除

举例 安装的composer require php-ffmpeg/php-ffmpeg包 1.通过 Composer 移除包 composer remove php-ffmpeg/php-ffmpeg 2.清理 Composer 缓存(可跳过) composer clear-cache 3.删除 Composer 生成的文件(可选) 某些…

如何将图片旋转任意角度?这四种方法轻松将图片旋转至任意角度!

如何将图片旋转任意角度?当我们涉及到图片时,常常会面临角度不佳的挑战,这一问题可能会给我们带来一系列不便,让我们深入探讨这些挑战,并探寻解决之道,首先,错误的角度可能导致视觉失真&#xf…

SaaS产品管理指标

在SaaS(软件即服务)领域,产品管理是一项关键任务。有效的管理不仅可以提升用户体验,还能驱动业务增长和收入提升。本文将探讨SaaS产品管理中常见且重要的管理指标,帮助产品经理们更好地理解和应用这些指标来优化产品性…

<sa8650>QCX—如何使用 CCI 调试器

<sa8650>QCX—如何使用 CCI 调试器 一、 前言二、 使用 qcxserver 运行 CCI 调试器2.1 单寄存器读取命令2.2 寄存器连续读取2.3 写入命令2.4 解析文件中的ccidbgr命令2.4 -help 参数2.5 检查 I2C 上的活动设备三、 运行单机版 ccidbgr3.1 单寄存器读取命令3.2 解析文件中的cc…

审稿意见回复信英文模板

以下是一个常用的英文审稿意见回复信模板,包含一些常见的语料总结,供你参考: 审稿意见回复信模板 Dear [Editor’s Name], Re: Manuscript ID [Manuscript ID] titled “[Title of the Manuscript]” We sincerely appreciate the time an…

C语言 scanf混合输入

一、hello gcc hello.c -o main.o 生成main.o文件 gcc hello.c 生成 a.out 执行 ./main.out 或者 ./a.out 运行程序 #include "stdio.h"int main() {printf("hello\n"); } 运行结果 sumuchenchem4111 Ccode % gcc hello.c -o main.out sumuchench…

Vuex详解:Vue.js 状态管理库的完整指南

引言 在Vue.js应用程序开发中,状态管理是一个关键问题。随着应用程序规模的扩大,组件之间的状态共享和管理变得尤为重要。Vuex作为官方推荐的状态管理工具,为解决这些问题提供了一种优雅而强大的解决方案。本文将深入探讨Vuex的各个方面&…

计算机Java项目|基于SpringBoot的音乐网站

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简…

新的应用场景与创新可能性”。

随着GPT-5的即将登场,我们的工作和日常生活将发生怎样的变化?它将带来哪些新的应用场景和创新可能性?我们又该如何准备迎接这一新的技术变革?  在OpenAI首席技术官米拉穆拉蒂的采访中,她明确表示GPT-5将在一年半后发…

Linux Nginx 服务设置开机自启动

文章目录 前言简介一、准备工作二、操作步骤2.1 先创建开机自启脚本2.2 设置文件权限2.3 设置开机自启动2.4 验证2.5 常用命令 总结 前言 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、 提示:以下是本篇文章正文内容&#xff0c…

【SQL Server数据库】带函数查询和综合查询(1)

目录 1.统计年龄大于30岁的学生的人数。 2.统计数据结构有多少人80分或以上。 3.查询“0203”课程的最高分的学生的学号。 4.统计各系开设班级的数目(系名称、班级数目),并创建结果表。 5.选修了以“01”开头的课…

富格林:躲闪黑幕有效规划出金

富格林认为,现货黄金拥有诸多其他投资品种所无法比拟的交易优势,也正是如此,如今越来越多投资者相继涌入现货黄金投资市场中。但不少新手投资者发现了一些问题,自己做的单子为何无法盈利出金?这其中是否存在什么背后黑…

C语言入门课程学习笔记9:指针

C语言入门课程学习笔记9 第41课 - 指针:一种特殊的变量实验-指针的使用小结 第42课 - 深入理解指针与地址实验-指针的类型实验实验小结 第43课 - 指针与数组(上)实验小结 第44课 - 指针与数组(下)实验实验小结 第45课 …

AI入门:AI发展势头这么猛,你在哪个阶段,落后了吗

生活的各方面都在发生着各种变化,笔者的教育生涯伴随着考试分数和排名,但现在的小学已经不公开分数和排名了,高考都屏蔽分数防止炒作了。 个人认为这是一个好的现象,教育就应该只有一个单纯的目的,那就是培养学生如何…

什么是滑动窗口?

滑动窗口(Sliding Window)是一种用于管理和处理数据流的技术,通过在数据流上定义一个固定大小的窗口,从而实现高效的数据处理、传输控制和资源管理。这种技术广泛应用于计算机网络、算法设计、图像处理等领域。 一、滑动窗口的基…

2024上海MWC 参展预告 | 未来先行,解锁数字化新纪元!

一、展会介绍——2024世界移动通信大会 2024年世界移动通信大会上海(MWC上海)将于6月26日至28日在上海新国际博览中心举行。 本届大会以“未来先行(Future First)”为主题聚焦“超越5G”、“数智制“人工智能经济’造”三大热点话题。届时将在包括超级品牌馆(Super Hall)在内…

Linux操作系统汇编语言基础知识(图文代码)

1、什么是汇编语言,它在计算机语言中的地位? 汇编语言是程序设计语言的基础语言,是唯一可以直接与计算机硬件打交道的语言2、汇编语言与源程序、汇编程序、汇编的关系? 3、汇编语言的特点 \1) 汇编语言与机器指令一一对应&#…

打造高效的Java应用架构:从入门到精通

打造高效的Java应用架构:从入门到精通 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在当今快节奏的软件开发环境中,构建高效的Java应…

第14天:Vue.js应用性能优化与SSR/SSG探索

第14天:Vue.js应用性能优化与SSR/SSG探索 目标 学习优化Vue.js应用性能的方法,并探索服务端渲染(SSR)或静态站点生成(SSG)的可能性。 任务概览 学习Vue.js性能优化技术。探索服务端渲染(SSR…