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 提供的数据迁移脚本,只能支持分片字段的值必须是唯一的,不能重复,因此在使用时尽量使用唯一的字段来做分切字段。
  • 相关阅读:
    保持URL不变和数字验证
    centOS ftp key?
    本地环境测试二级域名
    linux 解决You don't have permission to access 问题
    php smarty section loop
    php header Cannot modify header information headers already sent by ... 解决办法
    linux部分命令
    Linux 里面的文件操作权限说明
    用IT网络和安全专业人士视角来裁剪云的定义
    SQL Server 2008 R2炫酷报表"智"作有方
  • 原文地址:https://www.cnblogs.com/li3807/p/8461878.html
Copyright © 2011-2022 走看看