一、按照月分片
使用場(chǎng)景為按照自然月來分片,每個(gè)自然月為一個(gè)分片,但是一年有12個(gè)月,是不是要有12個(gè)數(shù)據(jù)節(jié)點(diǎn)才行呢?并不是。例如我現(xiàn)在只有三個(gè)分片數(shù)據(jù)庫,這樣就可以1月在第一個(gè)數(shù)據(jù)分片中,2月在第二個(gè)數(shù)據(jù)分片中,3月在第三個(gè)數(shù)據(jù)分片中,當(dāng)來到4月的時(shí)候,就會(huì)重新開始分片,4月在第一個(gè)數(shù)據(jù)分片,5月在第二個(gè)數(shù)據(jù)分片,6月在第三個(gè)數(shù)據(jù)分片,以此類推。
說明1:從開始時(shí)間開始,一個(gè)月為一個(gè)分片,到達(dá)結(jié)束時(shí)間之后,會(huì)重復(fù)開始分片插入
說明2:配置表的dataNode的分片,必須和分片規(guī)則數(shù)量一致,例如:2023-01-01到2023-12-31,一共就需要12個(gè)數(shù)據(jù)節(jié)點(diǎn)
說明3:我只有三個(gè)數(shù)據(jù)節(jié)點(diǎn),所以配置表中,我只需要配置2023-01-01到2023-03-31即可,即使一年又12個(gè)月會(huì)可以重復(fù)插入的。??
二、準(zhǔn)備工作
使用之前已經(jīng)創(chuàng)建tb_logs數(shù)據(jù)庫
三、rule.xml配置?
說明1:分片規(guī)則:"sharding-by-month"
說明2:分庫分表字段為create_time
說明3:dateFormat為時(shí)間格式
說明4:sBeginDate是配置的起始日期
說明5:sEndDate是配置的結(jié)束日期
說明6:有幾臺(tái)數(shù)據(jù)節(jié)點(diǎn),就只需要配置幾個(gè)月的范圍即可,即開始日期到結(jié)束日期的月份要等于數(shù)據(jù)節(jié)點(diǎn)的數(shù)。
四、配置schem.xml
說明1:邏輯庫為hl_logs
說明2:邏輯表為tb_month
說明3:分片規(guī)則為:"sharding-by-month"
說明4:dn4對(duì)應(yīng)的是dbhost1即192.168.3.90分片
說明5:dn5對(duì)應(yīng)的是dbhost2即192.168.3.91分片
說明6:dn6對(duì)應(yīng)的是dbhost3即192.168.3.92分片
五、配置server.xml
說明1:在之前的文章中已經(jīng)將tb_logs表添加到root用戶的權(quán)限中了,所以這里不需要更改即可。
六、按(月)日期分片測(cè)試
首先重啟Mycat
登錄Mycat
查看邏輯庫和邏輯表
這里的tb_month只是邏輯庫,而在MySQL中還并沒有tb_month這個(gè)表,需要在Mycat中創(chuàng)建
create table tb_month(id int auto_increment primary key, name varchar(20), create_time varchar(19));
?
插入一組測(cè)試數(shù)據(jù)
insert into tb_month(name, create_time) values ("張三", "2023-01-02"); insert into tb_month(name, create_time) values ("李四", "2023-02-12"); insert into tb_month(name, create_time) values ("王五", "2023-03-22"); insert into tb_month(name, create_time) values ("趙六", "2023-04-18"); insert into tb_month(name, create_time) values ("侯七", "2024-05-01"); insert into tb_month(name, create_time) values ("孫八", "2024-06-11"); insert into tb_month(name, create_time) values ("周九", "2024-07-21");
說明1:一共三個(gè)數(shù)據(jù)節(jié)點(diǎn),其中1月,4月,7月,10月的數(shù)據(jù)會(huì)分布在192.168.3.90第一個(gè)數(shù)據(jù)節(jié)點(diǎn)上,OK
說明2:一共三個(gè)數(shù)據(jù)節(jié)點(diǎn),其中2月,5月,8月,11月的數(shù)據(jù)會(huì)分布在192.168.3.91第二個(gè)數(shù)據(jù)節(jié)點(diǎn)上,OK
說明3:一共三個(gè)數(shù)據(jù)節(jié)點(diǎn),其中3月,6月,9月,12月的數(shù)據(jù)會(huì)分布在192.168.3.92第三個(gè)數(shù)據(jù)節(jié)點(diǎn)上,OK
說明4:在Mycat上進(jìn)行查詢的數(shù)據(jù)是,所有數(shù)據(jù)節(jié)點(diǎn)的全集。按(月)日期分片是水平分庫分表的一種方式。
?文章來源:http://www.zghlxwxcb.cn/news/detail-760314.html
?
?
文章來源地址http://www.zghlxwxcb.cn/news/detail-760314.html
到了這里,關(guān)于MySQL運(yùn)維13-Mycat分庫分表之按月分片的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!