Mycat搭建分庫分表方式
分庫分表解決的問題
單表數(shù)據(jù)量過大帶來的性能和存儲容量的限制的問題:
- 索引效率下降
- 讀寫瓶頸
- 存儲容量限制
- 事務(wù)性能問題
分庫分表架構(gòu)
- 再搭建一對主從復(fù)制節(jié)點(diǎn),3307主節(jié)點(diǎn),3309從節(jié)點(diǎn)
- 配置數(shù)據(jù)源 dw1 , dr1,
- 創(chuàng)建集群c1
- 創(chuàng)建邏輯庫 CREATE DATABASE clusterdb;
- 創(chuàng)建廣播表 BROADCAST代表廣播表,意味著所有的數(shù)據(jù)源都會創(chuàng)建這張表
CREATE TABLE clusterdb.`dict_type` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵', `type_id` int(11) NOT NULL COMMENT '業(yè)務(wù)類型id', `name` varchar(255) DEFAULT NULL COMMENT '名稱', PRIMARY KEY (`id`) USING BTREE )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='類型字典' BROADCAST;
添加數(shù)據(jù)
INSERT INTO clusterdb.`dict_type` VALUES (1,1,'發(fā)貨單'); INSERT INTO clusterdb.`dict_type` VALUES (2,2,'收貨單'); INSERT INTO clusterdb.`dict_type` VALUES (3,3,'出庫單'); INSERT INTO clusterdb.`dict_type` VALUES (4,4,'入庫單'); INSERT INTO clusterdb.`dict_type` VALUES (5,5,'出室單'); INSERT INTO clusterdb.`dict_type` VALUES (6,6,'入室單');
驗證一下是否每個數(shù)據(jù)節(jié)點(diǎn)都有數(shù)據(jù)
創(chuàng)建分片庫表
- 分庫分片表就是把數(shù)據(jù)按照特定的算法,分配到不同的數(shù)據(jù)庫表中,達(dá)到降低單表數(shù)據(jù)量過大導(dǎo)致的效率問題。
CREATE TABLE clusterdb.orders( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵', `order_type` int(11) NOT NULL COMMENT '業(yè)務(wù)類型id', `order_name` varchar(255) DEFAULT NULL COMMENT '名稱', PRIMARY KEY (`id`) USING BTREE )ENGINE=INNODB DEFAULT CHARSET=utf8 dbpartition BY mod_hash(id) tbpartition BY mod_hash(id) tbpartitions 1 dbpartitions 2; INSERT into clusterdb.orders values(1,1,'test1'); INSERT into clusterdb.orders values(2,1,'test2'); INSERT into clusterdb.orders values(3,2,'test3'); INSERT into clusterdb.orders values(4,3,'test4'); INSERT into clusterdb.orders values(5,3,'test5'); INSERT into clusterdb.orders values(6,4,'test6'); INSERT into clusterdb.orders values(7,5,'test7'); INSERT into clusterdb.orders values(8,5,'test8'); INSERT into clusterdb.orders values(9,5,'test9'); INSERT into clusterdb.orders values(10,5,'test10');
驗證結(jié)果
在mycat進(jìn)行查詢 select * from clusterdb.orders; 能得到全部的結(jié)果
主節(jié)點(diǎn)1,自動創(chuàng)建clusterdb_0 orders_0 并且存放的是id偶數(shù)的數(shù)據(jù)
主節(jié)點(diǎn)2,自動創(chuàng)建clusterdb_1 orders_1 并且存放的id是基數(shù)的數(shù)據(jù)
到這里分庫分表就成功啦~~
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql?binlog查看指定數(shù)據(jù)庫的操作方法
MySQL 的 binlog(二進(jìn)制日志)主要記錄了數(shù)據(jù)庫上執(zhí)行的所有更改數(shù)據(jù)的 SQL 語句,包括數(shù)據(jù)的插入、更新和刪除等操作這篇文章主要介紹了mysql?binlog查看指定數(shù)據(jù)庫的方法,需要的朋友可以參考下2024-06-06詳解Mysql5.7自帶的壓力測試命令mysqlslap及使用語法
mysqlslap是一個診斷程序,旨在模擬MySQL服務(wù)器的客戶端負(fù)載并報告每個階段的時間。這篇文章主要介紹了Mysql5.7自帶的壓力測試命令mysqlslap的相關(guān)知識,需要的朋友可以參考下2019-10-10解決數(shù)據(jù)庫有數(shù)據(jù)但查詢出來的值為Null問題
這篇文章主要介紹了解決數(shù)據(jù)庫有數(shù)據(jù)但查詢出來的值為Null問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10Windows10 mysql 8.0.12 非安裝版配置啟動方法
這篇文章主要為大家詳細(xì)介紹了Windows10 mysql 8.0.12 非安裝版配置啟動,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05MySQL使用LOAD_FILE()函數(shù)方法總結(jié)
在本篇文章里小編給大家分享了關(guān)于MySQL使用LOAD_FILE()函數(shù)方法和相關(guān)知識點(diǎn),需要的朋友們學(xué)習(xí)下。2019-03-03