若开启半同步复制,超过10秒(默认)没有收到ACK确认消息,会改变为异步复制。MySQL默认是异步复制。
通过在配置文件中配置可能的枚举id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存,不同的省份存到不同的数据节点。
本条规则类似于十进制的求模运算,区别在于是二进制的操作,是取id的二进制低10位,即id二进制&1111111111。 此算法的优点在于如果按照10进制取模运算,在连续插入1-10时候1-10会被分到1-10个分片,增大了插入的事务 控制难度,而此算法根据二进制则可能会分到连续的分片,减少插入事务事务控制难度
此分片适用于,提前规划好分片字段某个范围属于哪个分片
此规则为按天分片
在mycat ER分片表,需要满足几个特点
1、表和表之间存在主从关系
2、存在外键关联
比如:订单表和订单明细表
t_order,t_order_detail
这种就需要把存在关联关系的id存储到
同一个分片节点里面
相应的配置:
1、新建用于扩容的newSchema.xml和newRule.xml文件
这两个文件是扩容以后的分片节点配置
2、修改dataMigrate.sh文件
该文件类型是dos的,需要修改为unix类型
查看.sh文件类型::set ff
修改.sh文件类型::set ff=unix 回车
3、修改dataMigrate.sh中的配置
基本上修改一个即可:
#mysql bin路径
RUN_CMD="$RUN_CMD -mysqlBin=/usr/bin"
这个是mysqldump文件的路径,
找该文件:find / -name mysqldump
4、修改migrateTables.properties配置文件,指定需要迁移的逻辑库和表
注意事项
1、jdk不能用openJdk,需要自己安装,配置环境变量
2、之前的老的schema.xml和rule.xml老配置不能动
3、新增迁移后的节点新配置newSchema.xml和newRule.xml
4、mycat bug migrateTables.properties中逻辑库的名称不能既有大些又有小写,如:enjoyDB,必须全小写或全大写。
5、迁移类:DataMigrator
XA 协议
在mysql实例中开启一个XA事务,指定一个全局唯一标识
XA START ‘any_unique_id’;
Insert
XA事务的操作结束
XA END ‘any_unique_id’;
告知mysql准备提交这个xa事务
XA PREPARE ‘any_unique_id’;
告知mysql提交这个 xa事务
XA COMMIT ‘any_unique_id’;
告知mysql回滚这个 xa事务;
XA ROLLBACK ‘any_unique_id’;
查看本机mysql目前有哪些xa事务处于prepare状态;
XA RECOVER;
xa start xid1
Connection1.execulte(xa start xid1
)
Connection1.insert()
Connection1.end;
Connection2.。。。。
Result1 = Connection1.prepare()
Result2 = Conneciont2.prepare();
TM
If(ALLOK) {
connection1.commit;
connection2.commit;
} else {
Connection1.rollback;
Connection2.rollback;
}
xxDatasource implment dataSouce {
Pri dataSOuce datasource;
getconnection() {
Xa start xx;
Return datasource.getConnect();
}
}
Mybatis jpa
connection.createPrepareStatement.