用php做高中数学题库网站,徐州网络推广公司排名,线上营销手段,中原地产接上一篇#xff1a;企业实战_13_MyCat清除冗余数据 https://gblfy.blog.csdn.net/article/details/100057317 文章目录一、跨分片查询验证1. 登录mycat2. 使用逻辑数据库1.3. 执行跨分片查询1.4. 异常信息#xff0c;问题定位1.5. 表分布1.6. 跨分片查询的解决方式1.7. 场景… 接上一篇企业实战_13_MyCat清除冗余数据 https://gblfy.blog.csdn.net/article/details/100057317 文章目录一、跨分片查询验证1. 登录mycat2. 使用逻辑数据库1.3. 执行跨分片查询1.4. 异常信息问题定位1.5. 表分布1.6. 跨分片查询的解决方式1.7. 场景分析二、企业实战跨分片查询2.1. 基础操作(熟悉即可)2.2. node2节点导出表数据2.3. node3节点导入表数据2.4. node4节点导入表数据2.5. MyCat节点2.6. 重启MyCat使配置生效2.7. 再次跨分页查询验证三、全局表验证3.1. 修改全局表数据3.2. node2节点数据验证3.3. node3节点数据验证3.4. node4节点数据验证一、跨分片查询验证
1. 登录mycat
在任意节点(node4)上登录mycat mysql -uapp_imooc -p123456 -h192.168.92.101 -P8066 2. 使用逻辑数据库 use imooc_db;1.3. 执行跨分片查询
SELECTsupplier_name,b.region_name AS 省,c.region_name AS 市,d.region_name AS 区
FROMproduct_supplier_info aJOIN region_info b ON b.region_id a.provinceJOIN region_info c ON c.region_id a.cityJOIN region_info d ON d.region_id a.district1.4. 异常信息问题定位
ERROR 1064 (HY000): invalid route in sql, multi tables found but datanode has no intersection sql1.5. 表分布
表节点region_infonode1product_supplier_infonode2
针对这种情况应该如何处理呢
1.6. 跨分片查询的解决方式
序号方案说明①api方式通过前端程序去订单模块中分别获取省市区的信息之后拼接在一起②数据冗余的方式把这些省市区的信息冗余到商品模块的供应商表中③全局表字典表跨分片操作
1.7. 场景分析
字典类的表
如果通过api方式查询的频率比较高api调取的次数也会很高而且通过前台程序api调用再去拼接比较耗时。
如果通过数据冗余方式这个数据的冗余度比较大字段不多还好说针对字段比较多的字典表的话一旦修改的话我们就要修改和字段表相关的表因此字典类型的不适用api和数据冗余的方式进行处理。
MyCat提供的全局表的功能在每个分片上都会有这个全局表也就是说我们会把region_info这个表以相同的数据存储到这3个数据节点中然后再schema.xml中声明全局表。
二、企业实战跨分片查询
2.1. 基础操作(熟悉即可)
步骤命令说明①mysqldump -uroot -p order_db region_info region_info导出备份region_info表②mysql -uroot -p product_db region_info将region_info 数据导入到product_db数据库中③scp region_info root192.168.43.172:/root将region_info 表以root用户同步到ip为192.x服务器的root目录下面
2.2. node2节点导出表数据 # 在node2节点上导出备份region_info表mysqldump -uroot -p order_db region_info region_info# 复制到node3上scp region_info root192.168.92.103:/root# 复制到node4上scp region_info root192.168.92.104:/root2.3. node3节点导入表数据
# 将region_info 数据导入到product_db数据库中
mysql -uroot -p product_db region_info# 登录mysql
mysql -uroot -p
Enter password: 123456# 使用product_db数据库
use product_db;# 查询region_info是否导入成功
show tables;执行日志
mysql show tables;
-----------------------
| Tables_in_product_db |
-----------------------
| product_brand_info |
| product_category |
| product_comment |
| product_info |
| product_pic_info |
| product_supplier_info |
| region_info |
-----------------------
7 rows in set (0.00 sec)mysql2.4. node4节点导入表数据
# 将region_info 数据导入到customer_db数据库中
mysql -uroot -p customer_db region_info# 登录mysql
mysql -uroot -p
Enter password: 123456# 使用customer_db数据库
use customer_db;# 查询region_info是否导入成功
show tables;执行日志
mysql show tables;
-----------------------
| Tables_in_customer_db |
-----------------------
| customer_balance_log |
| customer_inf |
| customer_level_inf |
| customer_login |
| customer_login_log |
| customer_point_log |
| region_info |
-----------------------
7 rows in set (0.00 sec)mysql2.5. MyCat节点 # 进入mycat的conf目录下面cd /app/mycat/conf/# 编辑schema.xml文件vim schema.xml# 将region_info逻辑表定义为全局表将table nameregion_info primaryKeyregion_id dataNodeordb /
调整为table nameregion_info primaryKeyregion_id dataNodeordb,prodb,custdb typeglobal/2.6. 重启MyCat使配置生效
# 停止mycat
mycat stop# 启动mycat
mycat start# 查看启动日志
[rootnode1 conf]# tail -f /app/mycat/logs/wrapper.log
http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
INFO | jvm 1 | 2021/07/11 17:27:51 | MyCAT Server startup successfully. see logs in logs/mycat.log
2.7. 再次跨分页查询验证
# 使用mysql客户端连接mycat
mysql -uapp_imooc -p123456 -h192.168.92.101 -P8066# 验证跨分片查询
# 执行跨分片查询
SELECTsupplier_name,b.region_name AS 省,c.region_name AS 市,d.region_name AS 区
FROMproduct_supplier_info aJOIN region_info b ON b.region_id a.provinceJOIN region_info c ON c.region_id a.cityJOIN region_info d ON d.region_id a.district三、全局表验证
登录mycat修改全局表数据验证是否同步3个物理节点的物理库的全局表
3.1. 修改全局表数据
登录MyCat修改全局表数据验证是否可以同步到其他3个数据节点中
#使用mysql客户端连接mycat
mysql -uapp_imooc -p123456 -h192.168.92.101 -P8066# 使用逻辑库
use imooc_db;# 查看全局表数据
select * from region_info;mysql select * from region_info;
---------------------------------------------------
| region_id | parent_id | region_name | region_level |
---------------------------------------------------
| 1 | 0 | 中国(china) | 0 |
---------------------------------------------------
1 row in set (0.29 sec)mysql更新全局表数据
-------------------------------------------------# 更新全局表数据
update region_info set region_name中国2022 where region_id1;# 更新后再次查看全局表数据
select * from region_info limit 10;Database changed
mysql select * from region_info;
---------------------------------------------------
| region_id | parent_id | region_name | region_level |
---------------------------------------------------
| 1 | 0 | 中国(china) | 0 |
---------------------------------------------------
1 row in set (0.29 sec)mysql update region_info set region_name中国2022 where region_id1;
Query OK, 1 row affected (0.07 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql select * from region_info;
-------------------------------------------------
| region_id | parent_id | region_name | region_level |
-------------------------------------------------
| 1 | 0 | 中国2022 | 0 |
-------------------------------------------------
1 row in set (0.00 sec)mysql 注mysql更新数据库失败 --read-only 请进入传送门 https://blog.csdn.net/weixin_40816738/article/details/100059688
3.2. node2节点数据验证
登录node2节点
在登录mycat节点修改全局表数据后查看node2节点的数据是否被更新
# 登录数据库mysql -uroot -p # 使用指定数据use order_db;# 更新后再次查看全局表数据
select * from region_info;发现通过登录mycat节点修改全局表数据node2节点的数据已经更新Database changed
mysql select * from region_info;
-------------------------------------------------
| region_id | parent_id | region_name | region_level |
-------------------------------------------------
| 1 | 0 | 中国2022 | 0 |
-------------------------------------------------
1 row in set (0.00 sec)mysql 3.3. node3节点数据验证
登录node3节点
查看在登录mycat节点修改全局表数据node3节点的数据是否被更新
# 登录数据库mysql -uroot -p # 使用指定数据use product_db;# 更新后再次查看全局表数据
select * from region_info limit 10;发现通过登录mycat节点修改全局表数据node3节点的数据已经更新mysql select * from region_info limit 10;
-------------------------------------------------
| region_id | parent_id | region_name | region_level |
-------------------------------------------------
| 1 | 0 | 中国2022 | 0 |
-------------------------------------------------
1 row in set (0.01 sec)mysql3.4. node4节点数据验证
查看在登录mycat节点修改全局表数据node3节点的数据是否被更新
# 登录数据库mysql -uroot -p # 使用指定数据use customer_db;# 更新后再次查看全局表数据
select * from region_info limit 10;发现通过登录mycat节点修改全局表数据node4节点的数据已经更新mysql select * from region_info limit 10;
-------------------------------------------------
| region_id | parent_id | region_name | region_level |
-------------------------------------------------
| 1 | 0 | 中国2022 | 0 |
-------------------------------------------------
1 row in set (0.00 sec)mysql下一篇企业实战_15_MySql主从复制到MyCat总结 https://gblfy.blog.csdn.net/article/details/118657995