MySQL数据库实践学习(十三)

2022-10-26 13:27:20 浏览数 (2)

3.5.1.5 全局表

对于省、市、区/县表tb_areas_provinces , tb_areas_city , tb_areas_region,是属于数据字典表,在多个业务模块中都可能会遇到,可以将其设置为全局表,利于业务操作。

修改schema.xml中的逻辑表的配置,修改 tb_areas_provinces、tb_areas_city、tb_areas_region 三个逻辑表,增加 type 属性,配置为global,就代表该表是全局表,就会在所涉及到的dataNode中创建给表。对于当前配置来说,也就意味着所有的节点中都有该表了。

代码语言:javascript复制
<table name="tb_areas_provinces" dataNode="dn1,dn2,dn3" primaryKey="id"
type="global"/>
<table name="tb_areas_city" dataNode="dn1,dn2,dn3" primaryKey="id"
type="global"/>
<table name="tb_areas_region" dataNode="dn1,dn2,dn3" primaryKey="id"
type="global"/>

配置完毕后,重新启动MyCat。

1). 删除原来每一个数据库服务器中的所有表结构

2). 通过source指令,导入表及数据

代码语言:javascript复制
source /root/shopping-table.sql
source /root/shopping-insert.sql

3). 检查每一个数据库服务器中的表及数据分布,看到三个节点中都有这三张全局表

4). 然后再次执行上面的多表联查的SQL语句

代码语言:javascript复制
SELECT order_id , payment ,receiver, province , city , area FROM tb_order_master o
, tb_areas_provinces p , tb_areas_city c , tb_areas_region r WHERE
o.receiver_province = p.provinceid AND o.receiver_city = c.cityid AND
o.receiver_region = r.areaid ;

是可以正常执行成功的。

5). 当在MyCat中更新全局表的时候,我们可以看到,所有分片节点中的数据都发生了变化,每个节点的全局表数据时刻保持一致。

0 人点赞