mycat扩容

原有分片节点为2,此处扩容成3。
2.1.1 mycat 所在环境安装 mysql 客户端程序
2.1.2 mycat 的 lib 目录下添加 mysql 的 jdbc 驱动包
下载mysql-connect-jdbc-5.1.35.jar,下载地址:
https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.35
  把下载的jar包放到mycat lib目录下:/root/data/program/mycat/lib
2.1.3 对扩容缩容的表所有节点数据进行备份,以便迁移失败后的数据恢复
复制 schema.xml、rule.xml 并重命名为 newSchema.xml、newRule.xml 放于 conf 目录下。
newRule.xml中

<mycat:rule xmlns:mycat="http://io.mycat/">
	<tableRule name="rule1">
		<rule>
			<columns>id</columns>
			<algorithm>mod-long</algorithm>
		</rule>
	</tableRule>

	<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
        <!-- how many data nodes -->
        <property name="count">3</property>
    </function>
</mycat:rule>

Count由原来的2改为3
newSchema.xml中添加db03节点,并配置到表的dataNode中

<dataNode name="node_db01" dataHost="dataHost01" database="test01" /> 
<dataNode name="node_db02" dataHost="dataHost01" database="test02" />
 <dataNode name="node_db03" dataHost="dataHost01" database="test03" />
<table name="item" primaryKey="id" dataNode="node_db01,node_db02,node_db03" rule="rule1" >

2.1.4 配置conf/migrateTables.properties
migrateTables.properties
db_user=users
#schema1=tb1,tb2,…
#schema2=all(写all或者不写将对此schema下拆分节点变化的拆分表全部进行重新路由)
#…

#sample
#TESTDB=travelrecord,company,goods
#要扩容的逻辑库 对应的逻辑表
TESTDB=item
2.1.5修改bin/dataMigrate.sh,执行dataMigrate.sh
  指定临时文件路径
#临时文件路径,目录不存在将自动创建,不指定此目录则默认为mycat根下的temp目录
RUN_CMD=“KaTeX parse error: Expected 'EOF', got '#' at position 78: …可以查看此过程中产生的sql #̲完成扩容缩容后是否删除临时文件…RUN_CMD -deleteTempFileDir=false”
通过命令"find / -name mysqldump"查找mysqldump路径为"/usr/bin/mysqldump",指定#mysql bin路径为"/usr/bin/"

#临时文件路径,目录不存在将自动创建,不指定此目录则默认为mycat根下的temp目录
RUN_CMD=“KaTeX parse error: Expected 'EOF', got '#' at position 40: …me/emeet/temp" #̲默认true:不论是否发生主备…RUN_CMD -isAwaysUseMaster=true”
#mysql bin路径
RUN_CMD="$RUN_CMD -mysqlBin=/usr/bin/"

mycat bin目录下执行脚本"./dataMigrate.sh" 报错:
Error: JAVA_HOME environment variable is not set.
这个问题折腾了好久,
网上的解决方案:不用openjdk,下载jdk解压配置环境变量解决的参考文档:https://blog.csdn.net/Haiyang_Duan/article/details/62099225
我自己的解决方案:
手动修改java路径:

#RUN_CMD="\"$JAVA_HOME/bin/java\""
RUN_CMD="/usr/local/jdk1.8.0_201/bin/java"

并屏蔽掉该文件顶部的验证JAVA_HOME代码。
2.1.6扩容缩容成功后,将 newSchema.xml 和 newRule.xml 重命名为 schema.xml 和 rule.xml 并替 换掉原文件,重启 mycat 服务,整个扩容缩容过程完成。
检查各库的数据是否符合预期。
此处有个问题,测试时候,发现历史数据没有重新路由,疑似原因是因为测试库都在本地mysql,需要验证。
重新插入的数据,都路由到三个节点了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值