日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java垂直拆分,MyCat分片:垂直拆分实例解析和代码实现

發布時間:2023/12/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java垂直拆分,MyCat分片:垂直拆分实例解析和代码实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、概述

一種是按照

不同的表(或者Schema)來切分到不同的數據庫(主機)之上,這種切分可以稱之為數據的

垂直(縱向)切分。

二、案例場景

在業務系統中, 有以下表結構 ,但是由于用戶與訂單每天都會產生大量的數據, 單臺服務器的數據存儲及處理能力是有限的, 可以對數據庫表進行拆分, 原有的數據庫表:

三、準備工作

1.準備三臺數據庫實例

192.168.192.157?192.168.192.158?192.168.192.159

2.在三臺數據庫實例中建庫建表

將準備好的三個SQL腳本, 分別導入到三臺MySQL實例中 ;

登錄MySQL數據庫之后, 使用

source命令導入 ;

四、schema.xml的配置

<?xml ?version="1.0"?>?mycat:schema?SYSTEM?"schema.dtd">?

select?user()

select?user()

select?user()

五、server.xml的配置

123456

ITCAST_DB??

123456

ITCAST_DB??

123456

ITCAST_DB

true?

六、測試

1.查詢數據

select?*?from?tb_goods_base;??select?*?from?tb_user;??select?*?from?tb_order_master;

2.插入數據

insert?into?tb_user_address(id,user_id,province_id,city_id,town_id,mobile,address,contact,is_default,notes,create_date,alias)?values?(null,'java00001',NULL,NULL,NULL,'13900112222','鐘樓','張三','0',NULL,NULL,NULL)

insert?into?tb_order_item(id,item_id,goods_id,order_id,title,price,num,total_fee,pic_path,seller_id)?values?(null,19,149187842867954,3,'3G?6','1.00',5,'5.00',NULL,'qiandu')

3.測試跨分片的查詢

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?;

當運行上述的SQL語句時, MyCat會報錯, 原因是因為

當前SQL語句涉及到跨域的join操作?;

七、全局表配置

1.數據備份

數據節點user_db中的關聯的字典表

tb_areas_provinces?,

tb_areas_city?,

tb_areas_region中的數據備份 ;

mysqldump?-uroot?-pitcast?user_db?tb_areas_provinces?>?provinces;?mysqldump?-uroot?-pitcast?user_db?tb_areas_city?>?city;?mysqldump?-uroot?-pitcast?user_db?tb_areas_region?>?region;

2.將備份的表結構及數據信息, 遠程同步到其他兩個數據節點的數據庫中;

scp?city?root@192.168.192.158:/root?scp?city?root@192.168.192.159:/root?scp?provinces?root@192.168.192.158:/root?scp?provinces?root@192.168.192.159:/root?scp?region?root@192.168.192.158:/root?scp?region?root@192.168.192.159:/root

3.導入到對應的數據庫中

mysql?-uroot?-p?goods_db?

4.MyCat邏輯表中的配置

??

5.重啟MyCat

bin/mycat?restart

6.測試

再次執行相同的連接查詢 , 是可以正常查詢出對應的數據的 ;

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?;

當我們對Mycat全局表進行增刪改的操作時, 其他節點主機上的后端MySQL數據庫中的數據時會同步變化的;

update?tb_areas_city?set?city?=?'石家莊'?where?id?=?5;

總結

以上是生活随笔為你收集整理的java垂直拆分,MyCat分片:垂直拆分实例解析和代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。