1. 程式人生 > >Mycat 月分片方法

Mycat 月分片方法

概述  

本篇文章主要介紹Mycat以月進行分片的方法,包括配置方法、注意事項等。

mycat版本:1.4

資料節點:dn1,dn2,dn3

架構:主從

配置  

 建立測試表

CREATE TABLE `tdate` (
   `id` int(11) NOT NULL,
   `createdate` datetime DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

在三個節點上面分別執行建立表語句。

分片配置

<table>引數 

在table引數配置中使用了rule="sharding-by-month"分片函式,同時配置了13個數據節點分別是dn1-dn13,當然資料節點的數目沒有限制,在生產環境避免重複重啟mycat這個節點的範圍大小最好配置超過1年。

<datanode>引數

因為我這裡只有三個節點,所以採取三個節點迴圈作為資料的儲存節點,預設1,4,7,10,第二年1月,這些月份的資料儲存在節點1。在生產婚假一般會配置12個節點,這樣每年的1月可以存在節點1,

 不支援這樣寫,datanode中的節點定義一定要和table一樣
 <dataNode name="dn1,dn4,dn7,dn10,dn13" dataHost="localhost1" database="db1" />

 <datahost>引數

       datahost配置的是主從讀寫分離,如果第一個writehost宕機了自動切換到第二個writehost

分片函式 

vim rule.xml
<tableRule name="sharding-by-month">
                <rule>
                        <columns>createdate</columns>
                        <algorithm>sharding-by-month</algorithm>
                </rule>
</tableRule>

<
function name="sharding-by-month" class="org.opencloudb.route.function.PartitionByMonth"> <property name="dateFormat">yyyy-MM-dd HH:mm:ss</property> <property name="sBeginDate">2015-01-01 00:00:00</property> </function>

權威指南預設的自然月分片使用的dateFormat格式是yyyy-MM-dd,在這裡我是故意這樣測試的。

注意:如果dateFormat格式是yyyy-MM-dd那麼sBeginDate格式就必須是2015-01-01,否則就是上面我配置的這種對應關係。當我使用dateFormat格式是yyyy-MM-dd的時候我在插入語句的createdate欄位使用“2015-01-01 00:00:00”格式的時間也可以識別,反之,我配置dateFormat格式是yyyy-MM-dd HH:mm:ss,當我的插入語句的createdate欄位使用“2015-01-01”格式的時間會報錯,建議函式這裡配置的是什麼格式在執行插入語句的時候時間也使用什麼格式。

在dateFormat格式是yyyy-MM-dd時分片欄位的資料型別可以是date、datetime,在dateFormat格式是yyyy-MM-dd HH:mm:ss是分片欄位的資料型別必須是datetime。

sBeginDate是開始時間

測試資料

在mycat中執行插入語句。

insert into tdate(id,createdate) values(1,'2015-01-01 00:00:00');
insert into tdate(id,createdate) values(2,'2015-02-01 00:00:00');
insert into tdate(id,createdate) values(3,'2015-03-01 00:00:00');
insert into tdate(id,createdate) values(4,'2015-10-01 00:00:00');
insert into tdate(id,createdate) values(5,'2016-01-01 00:00:00');

到master中檢視資料:

select * from db1.tdate; 
select * from db2.tdate; 
select * from db3.tdate; 

插入的結果也正常的分佈到了各個分片中,測試結果正確。

注意事項

1.在進行insert插入時分片欄位必須明確在table後面列出,其它的預設欄位可以不列出在1.4中不受影響。

2.values中不能使用函式,例如:now()

總結

 mycat對月進行分片總體概念比較清晰,但是因為mycat本身對於容錯的處理比較弱,所以在sql語句方面使用盡量簡單的標準語法。

備註:

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。

《歡迎交流討論》

相關推薦

Mycat 分片方法

概述   本篇文章主要介紹Mycat以月進行分片的方法,包括配置方法、注意事項等。 mycat版本:1.4 資料節點:dn1,dn2,dn3 架構:主從 配置    建立測試表 CREATE TABLE `tdate` ( `id` int(11) NOT NULL, `cr

mycat教程(二) —— mycat使用教程及分片方法案例

mycat mycat分區 數據庫中間件 mycat中間件 在完成mycat安裝後, 開始一個示例來盡快熟悉mycat 一、環境說明 1. 服務器說明 服務器名稱 地址 說明 mycat服務器 10.211.55.13 mycat中間件服務器 mysql服務器 10.211.

mycat 離散分片 -&gt; 程序指定分區的分片

spa ssi ica arc direct ted def cut roo 1。程序指定分區的分片 此規則是在運行階段有應用自主決定路由到那個分片。 此方法為直接依據字符子串(必須是數字)計算分區號(由應用傳遞參數。顯式指定分區號)。 2

mycat分離分片

mysql innobackupex mysql主從 mycat rename table 背景:當前分片中有5張表,計劃將按月分片的日誌表分離到其他服務器。 要求:不影響業務情況下進行分離日誌表。 實驗計劃: 1.使用pt工具導出部分庫、部分表,並應用備份集。 2.搭建部分表主

linux下mycat自啟動方法

rc.d bsp home port shell 實現 都是 程序 start 每次開機都要啟動mycat,網上看了好多都是用shell腳本來實現mycat開機自啟動,後來看到一種方法,直接修改系統文件來實現,已經實踐過,方法有效。 1.修改腳本文件rc.local:vi

網際網路架構之Mycat分片規則

常用的分片規則一共有10個 一、列舉法 <tableRule name="sharding-by-intfile"> <rule> <columns>user_id</columns> <algorithm>hash-int

mycat+mysql分片

下載mycat完成環境變數配置: name:MYCAT_HOME value:D:\user\mycat 加入系統路徑 name:path value:;%MYCAT_HOME%\bin; server,rule的xml檔案為預設mycat配置和分片規則,主要

mycat分片

分表分庫雖然能解決大表對資料庫系統的壓力,但它並不是萬能的,也有一些不利之處,因此首要問題是, 分不分庫,分哪些庫,什麼規則分,分多少分片。 原則一:能不分就不分,1000 萬以內的表,不建議分片,通過合適的索引,讀寫分離等方式,可以很好的解決效能問題。 原則二:分片數量儘量

分散式資料庫的分片方法

一、分片的定義和作用 定義:分散式資料庫中資料的儲存單位成為片段。對全域性資料庫的劃分叫做分片。劃分的結果就是片段。每個片段可以儲存在一個以上的場地(伺服器)。 作用: 1、減少網路傳輸量 對資料進行復制儲存,目的是可以就近訪問所需資料副本,減少網路上的資料傳輸量。 2、增

php按周取時間段&&PHP獲取指定時間段之間的 年,,天,時,分,秒&php獲取某段時間內每個方法,返回由這些月份組成的陣列

<?php PHP獲取指定時間段之間的 年,月,天,時,分,秒 Class Utils { /** * format MySQL DateTime (YYYY-MM-DD hh:mm:ss) 把mysql中查找出來的資料格式轉換成時間秒數

PHP中獲取時間的下一週下個方法

//獲取當前時間過一個月的時間,以DATETIME格式顯示 date('Y-m-d H:i:s',strtotime('+1 month')) //獲取當前時間過一個月的時間,以時間戳格式顯示 strtotime(date('Y-m-d H:i:s',strtotime('+1 month'))) //以下是

mycat 連續分片 -> 按日期(天)分片

1,按日期(天)分片 按日期(天)分片:從開始日期算起,按照天數來分片 例如,從2016-01-01,每10天一個分片 注意事項:需要提前將分片規劃好,建好,否則有可能日期超出實際配置分片數 2,新增配置檔案 在function.xml裡面進行

Mycat分片(水平分片)例項

要求: 把一個表分片儲存到三個資料節點上。 節點環境: mysql節點1環境 作業系統版本 : centos6.4 資料庫版本 : mysql-5.6 mycat版本 :1.4 releas

Mac OS X 下安裝使用 Docker(16年3最新方法)

舊方法: 兩年前的一篇 Mac OS X 下安裝使用 Docker 安裝時還是用的 boot2docker, 如今進化到了在 Mac OS X 下用 Docker Toolbox, 而且命令也由 boot2docker 換成了 docker-machin

JAVAEE——宜立方商城13:Mycat數據庫分片、主從復制、讀寫分離、100%Linux中成功安裝Mysql的方法

server structure chang exe under have 重新啟動 switch option 1 海量數據的存儲問題 如今隨著互聯網的發展,數據的量級也是撐指數的增長,從GB到TB到PB。對數據的各種操作也是愈加的困難,傳統的關系性數據庫已經無法滿足快速

老男孩教育每日一題-2017年512日-磁盤知識點:linux系統中LVM配置實現方法?

邏輯卷管理 磁盤 每日一題 1.題目老男孩教育每日一題-2017年5月12日-磁盤知識點:linux系統中LVM配置實現方法?2.參考答案01:將一個或多個物理分區創建為一個PV# pvcreate /dev/sdb{1,2} Physical volume "/dev/sdb1" success

520日重點:當請求的參數是動態的形式時,原生app與h5頁面之間數據交互的方法

post方法 註意 data 不能 images 動態 構建 parse 拼接 方案一: 1.app在打開H5頁面的時候,把需要給的參數,以get的形式,放在H5的url中。 2.然後H5的js從url中獲取到需要的參數,拼接到ajax請求的url中。 3.H5ajax請求

讀書筆記-Mycat權威指南-10-分片規則

line -m 字典 取模運算 連接 兩個 範圍查詢 技術分享 取數 分片規則概述 在數據切分處理中,特別是水平切分中,中間件最終要的兩個處理過程就是數據的切分、數據的聚合。 選擇 合適的切分規則,至關重要,因為它決定了後續數據聚合的難易程度,甚至可以避免跨庫的數據聚

mycat讀寫分離+垂直切分+水平切分+er分片+全局表 測試

mysql cal style st2 create 提交 org 方法 一起 原文http://blog.163.com/[email protected]/blog/static/172718064201683031639683/ 讀寫分離:利用最基礎的m

MySQL 高可用:mysql+mycat實現數據庫分片(分庫分表)

native 分布 for 成功 img 問題 represent apache 新一代 本文引用於http://blog.csdn.net/kk185800961/article/details/51147029 MySQL 高可用:mysql+mycat實現數據庫分片(