zoukankan      html  css  js  c++  java
  • Mycat 分片规则详解--数据迁移及节点扩容

    使用的是 Mycat 提供的 dataMigrate 脚本进行对数据进行迁移和节点扩容,目前支持的 Mycat 是1.6 版本,由于 Mycat 是由 Java 编写的因此在做数据迁移及节点扩容时需要安装JDK等,还有相关的依赖数据库驱动程序等

    准备工作

    • 对扩容表的所有数据节点进行备份,以便迁移失败后的数据恢复
    • 安装JDK 1.8 版本,并设置好环境变量
    • 在 Mycat 的 lib 目录中,增加 MySql 的 JDBC 驱动包
    • 在 Mycat 的环境中安装 MySql 的客户端程序
    • 使用 root 用户登陆 mycat 环境系统

    扩容步骤

    • 复制 schema.xml 和 rule.xml 文件并重命名为 newSchema.xml 和 newRule.xml,存放于 conf 目录
    • 修改 newSchema.xml 和 newRule.xml 配置文件为扩容后的 mycat 配置参数(表的数据节点、数据源、路由规则)
    • 修改 conf 目录下的 migrateTables.properties 文件,该配置文件用于告知工具,那些表需要进行扩容或收缩,如果不在该配置文件的表,不会进行数据迁移,示例如下:

    • 修改 bin 目录下的 dataMigrate.sh 脚本文件,参数说明如下:
      • tempFileDir:临时文件路径,如果目录不存在则会自动创建
      • isAwayUseMaster:默认 true,不论是否发生主备切换,都使用主数据源
      • deleteTempFileDir:默认 true,完成数据迁移后是否删除临时文件
      • threadCount:默认主机环境CPU核心数量 * 2,并行线程数量(用于生成中间文件和导入导出数据)
      • delThreadCount:默认主机环境CPU核心数量 / 2,清理冗余数据的并发线程
      • queryPageSize:默认10万,读取迁移节点全部数据的每次加载数据量
    • 停止 mycat 服务,需要保证数据库不会再有写操作
    • 通过 PuTTY 工具进入 mycat 根目录下的 bin 目录,执行 dataMigrate.sh 脚本,开始进行扩容,

      显示迁移信息和迁移数据(此处不需要迁移,因此显示的是[0 , 0],正常情况应该显示需要迁移的数据量)

      显示数据迁移验证结果

    • 脚本执行完成,如果最后的数据迁移验证通过,就可以将之前的 newSchema.xml 和 newRule.xml 替换之前的 schema.xml 和 rule.xml 文件,并重启 mycat即可。

    存在问题

    • 目前 Mycat 1.6 提供的数据迁移脚本,只能支持分片字段的值必须是唯一的,不能重复,因此在使用时尽量使用唯一的字段来做分切字段。
  • 相关阅读:
    idp账号使用系列记录
    cocos2dxjs binding安卓运行时出现signal 11 (SIGSEGV) 程序闪退问题记录
    cocos2dx 2.1.1 javascript在mac下跨平台编译粗略记录
    cocos2dx2.1使用Xcode整合ios与android开发代码 过程记录
    查找第k个数字的位置
    准备编写ogl2dlib的动画脚本编辑器
    开始学习nebula2 sdk
    地铁尴尬事件
    坦克物理模型(ode)
    MBTI职业性格测试(Psytopic特别版)
  • 原文地址:https://www.cnblogs.com/li3807/p/8461878.html
Copyright © 2011-2022 走看看