1. 程式人生 > >MyCat之路 | Mysql分片的配置

MyCat之路 | Mysql分片的配置

需求及環境分析

1、需求

把 tb_item 表分片儲存到三個資料節點上。

2、安裝環境分析

一臺 mycat伺服器:

  • mycat-server:10.73.150.4

兩臺 mysql 資料庫伺服器:

  • mysql-server-01:10.73.150.54
  • 資料庫名 : db1、db3
  • mysql-server-02:10.73.150.197
  • 資料庫名 : db2

一、安裝相關的軟體

二、配置三臺伺服器的 /etc/hosts 檔案

三臺伺服器的 /etc/hosts 檔案保持一致,以其中一臺伺服器為例:

[[email protected] ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.73.150.4   mycat-server
10.73.150.54  mysql-server-01
10.73.150.197 mysql-server-02

三、配置 MyCat 伺服器

配置 /usr/local/mycat/conf/schema.xml
[[email protected] conf]# vim schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="small" checkSQLschema="false" sqlMaxLimit="100">
                <!-- auto sharding by id (long) -->
<table name="tb_item" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /> </schema> <dataNode name="dn1" dataHost="localhost1" database="db1" /> <dataNode name="dn2" dataHost="localhost2" database="db2" /> <dataNode name="dn3" dataHost
="localhost1" database="db3" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="mysql-server-01:3306" user="root" password="888888"> <!-- can have multi read hosts --> </writeHost> </dataHost> <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="mysql-server-02:3306" user="root" password="888888"> <!-- can have multi read hosts --> </writeHost> </dataHost> </mycat:schema>
配置 /usr/local/mycat/conf/server.xml
[[email protected] conf]# vim server.xml

<user name="root">
        <property name="password">123456</property>
        <property name="schemas">small</property>
</user>

四、啟動伺服器

1、先啟動兩臺 Mysql 伺服器

[[email protected] bin]# service mysqld start
Starting MySQL... SUCCESS! 
[[email protected] bin]# service mysqld status
 SUCCESS! MySQL running (104755)

2、在啟動 MyCat 伺服器

[[email protected] conf]# /usr/local/mycat/bin/mycat start
Starting Mycat-server...

3、檢視 MyCat 伺服器是否啟動成功

tail -500 /usr/local/mycat/logs/mycat.log 

在這裡插入圖片描述

在這裡插入圖片描述

注意:若是Linux版本的Mysql,則需要設定為Mysql大小寫不敏感,否則可能會發生表找不到的問題。

在MySQL的配置檔案中/etc/my.cnf 的 [mysqld] 中增加一行

lower_case_table_names=1

五、進行測試

1、我們使用 Navicat 連線MyCat伺服器

在這裡插入圖片描述

在這裡插入圖片描述

2、建立表

執行如下建表語句,執行之後可以看到資料庫 db1,db2,db3 下都建立了 tb_item 表(開始時是不存在任何表的)。

CREATE TABLE `tb_item` (
  `id` bigint(20) NOT NULL COMMENT '商品id,同時也是商品編號',
  `title` varchar(100) NOT NULL COMMENT '商品標題',
  `sell_point` varchar(500) DEFAULT NULL COMMENT '商品賣點',
  `price` bigint(20) NOT NULL COMMENT '商品價格,單位為:分',
  `num` int(10) NOT NULL COMMENT '庫存數量',
  `barcode` varchar(30) DEFAULT NULL COMMENT '商品條形碼',
  `image` varchar(500) DEFAULT NULL COMMENT '商品圖片',
  `cid` bigint(10) NOT NULL COMMENT '所屬類目,葉子類目',
  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '商品狀態,1-正常,2-下架,3-刪除',
  `created` datetime NOT NULL COMMENT '建立時間',
  `updated` datetime NOT NULL COMMENT '更新時間',
  PRIMARY KEY (`id`),
  KEY `cid` (`cid`),
  KEY `status` (`status`),
  KEY `updated` (`updated`)
) COMMENT='商品表';
3、插入資料

執行以下指令碼觀察一下資料庫的變化:

INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('536563', 'new2 - 阿爾卡特 (OT-927) 炭黑 聯通3G手機 雙卡雙待', '清倉!僅北京,武漢倉有貨!', '29900000', '99999', '', 'http://image.taotao.com/jd/4ef8861cf6854de9889f3db9b24dc371.jpg', '560', '1', '2015-03-08 21:33:18', '2015-04-11 20:38:38');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('562379', 'new8- 三星 W999 黑色 電信3G手機 雙卡雙待雙通', '下單送12000毫安移動電源!雙3.5英寸魔煥炫屏,以非凡視野縱觀天下時局,尊崇翻蓋設計,張弛中,盡顯從容氣度!', '1100', '99999', '', 'http://image.taotao.com/jd/d2ac340e728d4c6181e763e772a9944a.jpg', '560', '1', '2015-03-08 21:27:54', '2015-04-12 17:10:43');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('605616', '阿爾卡特 (OT-979) 冰川白 聯通3G手機', '清倉!僅上海倉有貨!', '30900', '99999', null, 'http://image.taotao.com/jd/a69d0d09a1a04164969c2d0369659b1a.jpg', '560', '1', '2015-03-08 21:33:18', '2015-03-08 21:33:18');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('635906', '阿爾卡特 (OT-927) 單電版 炭黑 聯通3G手機 雙卡雙待', '清倉!僅北京,武漢倉有貨!', '24900', '99999', null, 'http://image.taotao.com/jd/9c1fcdf2bf20450788195c707da00a87.jpg', '560', '1', '2015-03-08 21:33:18', '2015-03-08 21:33:18');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('679532', '阿爾卡特 (OT-986+) 玫紅 AK47 加強版 聯通3G手機', '僅上海,廣州,瀋陽倉有貨!預購從速!', '49900', '99999', null, 'http://image.taotao.com/jd/65e2007d41dc4e3cb308833a1a910f8d.jpg', '560', '1', '2015-03-08 21:32:31', '2015-03-08 21:32:31');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('679533', '阿爾卡特 (OT-986+) 曜石黑 AK47 加強版 聯通3G手機', '少量庫存,搶完即止!<a  target=\"blank\"  href=\"http://sale.jd.com/act/bxYeI1346g.html?erpad_source=erpad\">“領券更優惠!”</a>', '49900', '99999', null, 'http://image.taotao.com/jd/b3251c85da8e4302b7389f3371dd0a68.jpg', '560', '1', '2015-03-08 21:31:36', '2015-03-08 21:31:36');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('691300', '三星 B9120 鈦灰色 聯通3G手機 雙卡雙待雙通', '下單即送10400毫安移動電源!再贈手機魔法盒!', '439900', '99999', null, 'http://image.taotao.com/jd/c1775819c7e44b1c903f27514e70b998.jpg', '560', '1', '2015-03-08 21:29:27', '2015-03-08 21:29:27');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('738388', '三星 Note II (N7100) 雲石白 聯通3G手機', '經典回顧!超值價格值得擁有。', '169900', '99999', null, 'http://image.taotao.com/jd/089b79cbe19f454dab24cce65f2e9602.jpg', '560', '1', '2015-03-08 21:28:16', '2015-03-08 21:28:16');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('741524', '三星 Note II (N7100) 鈦金灰 聯通3G手機', '下單贈12000毫安移動電源', '169900', '99999', null, 'http://image.taotao.com/jd/29e1b92dc7e146489ce46a2262479a0f.jpg', '560', '1', '2015-03-08 21:28:30', '2015-03-08 21:28:30');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('816448', '三星 Note II (N7100) 鑽石粉 聯通3G手機', '經典回顧!超值特惠!', '169900', '99999', null, 'http://image.taotao.com/jd/5a45e88aeca046ec88d7b7ffbc47092a.jpg', '560', '1', '2015-03-08 21:28:44', '2015-03-08 21:28:44');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('816753', '夏普(SHARP)LCD-46DS40A 46英寸 日本原裝液晶面板 智慧全高清液晶電視', '要好屏,選夏普!日本原裝面板,智慧電視,高畫質高音質!<a  target=\"blank\"  href=\"http://item.jd.com/1278686.html\">還有升級版安卓智慧新機46DS52供您選擇!</a>', '379900', '99999', null, 'http://image.taotao.com/jd/2e45ff47f2e7424cb6d95fb9f05151bd.jpg', '76', '1', '2015-03-08 21:27:39', '2015-03-08 21:27:39');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('830972', '飛利浦 老人手機 (X2560) 深情藍 移動聯通2G手機 雙卡雙待', '贈:九安血壓計+8G記憶體!超長待機,關愛無限,更好用!飛利浦簡單健康老人手機!外觀圓滑,手感極佳!', '48900', '99999', null, 'http://image.taotao.com/jd/4f1d41baa6c84219a622f20a4f1c32bb.jpg', '560', '1', '2015-03-08 21:28:30', '2015-03-08 21:28:30');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('832739', '中興 U288 珠光白 移動3G手機', '好評過萬!超大彩屏,超大字型,超大按鍵,超大音量,一鍵SOS緊急呼叫 !', '19900', '99999', null, 'http://image.taotao.com/jd/4021f8a1ffcc4ae2a313c2012d9f35c8.jpg', '560', '1', '2015-03-08 21:28:44', '2015-03-08 21:28:44');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('844022', '三星 SCH-W899 亮金色 電信3G手機 雙卡雙待雙通', '雙3.3英寸魔煥炫屏,CG雙網雙待,臻尊體驗,心繫天下!', '299900', '99999', null, 'http://image.taotao.com/jd/e638243d8341474293be09ad157546b8.jpg', '560', '1', '2015-03-08 21:28:01', '2015-03-08 21:28:01');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('847276', '飛利浦 老人手機 (X2560) 喜慶紅 移動聯通2G手機 雙卡雙待', '超長待機,關愛無限,更好用!飛利浦簡單健康老人手機!外觀圓滑,手感極佳!', '48900', '99999', null, 'http://image.taotao.com/jd/657c61e5018043f89d9fe0f9a1519884.jpg', '560', '1', '2015-03-08 21:28:30', '2015-03-08 21:28:30');

再執行以下指令碼,觀察一下資料庫的變化(id 不同):

INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('5000000', '夏普(SHARP)LCD-52DS51A 52英寸 日本原裝液晶面板 內建WIFI智慧全高清液晶電視', '要好屏,選夏普!日本原裝面板,智慧電視,高畫質高音質!<a  target=\"blank\"  href=\"http://item.jd.com/1278664.html\">還有升級版安卓智慧新機52DS52供您選擇!</a>', '549900', '99999', null, 'http://image.taotao.com/jd/63af01c37a18454ab2fef4670046272e.jpg', '76', '1', '2015-03-08 21:27:45', '2015-03-08 21:27:45');

再執行以下指令碼,觀察一下資料庫的變化:

INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('5000001', '夏普(SHARP)LCD-52DS51A 52英寸 日本原裝液晶面板 內建WIFI智慧全高清液晶電視', '要好屏,選夏普!日本原裝面板,智慧電視,高畫質高音質!<a  target=\"blank\"  href=\"http://item.jd.com/1278664.html\">還有升級版安卓智慧新機52DS52供您選擇!</a>', '549900', '99999', null, 'http://image.taotao.com/jd/63af01c37a18454ab2fef4670046272e.jpg', '76', '1', '2015-03-08 21:27:45', '2015-03-08 21:27:45');

再執行以下指令碼,觀察一下資料庫的變化:

INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('10000000', '夏普(SHARP)LCD-52DS51A 52英寸 日本原裝液晶面板 內建WIFI智慧全高清液晶電視', '要好屏,選夏普!日本原裝面板,智慧電視,高畫質高音質!<a  target=\"blank\"  href=\"http://item.jd.com/1278664.html\">還有升級版安卓智慧新機52DS52供您選擇!</a>', '549900', '99999', null, 'http://image.taotao.com/jd/63af01c37a18454ab2fef4670046272e.jpg', '76', '1', '2015-03-08 21:27:45', '2015-03-08 21:27:45');

再執行以下指令碼,觀察一下資料庫的變化:

INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('10000001', '夏普(SHARP)LCD-52DS51A 52英寸 日本原裝液晶面板 內建WIFI智慧全高清液晶電視', '要好屏,選夏普!日本原裝面板,智慧電視,高畫質高音質!<a  target=\"blank\"  href=\"http://item.jd.com/1278664.html\">還有升級版安卓智慧新機52DS52供您選擇!</a>', '549900', '99999', null, 'http://image.taotao.com/jd/63af01c37a18454ab2fef4670046272e.jpg', '76', '1', '2015-03-08 21:27:45', '2015-03-08 21:27:45');

再執行以下指令碼,觀察一下資料庫的變化:

INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('15000000', '夏普(SHARP)LCD-52DS51A 52英寸 日本原裝液晶面板 內建WIFI智慧全高清液晶電視', '要好屏,選夏普!日本原裝面板,智慧電視,高畫質高音質!<a  target=\"blank\"  href=\"http://item.jd.com/1278664.html\">還有升級版安卓智慧新機52DS52供您選擇!</a>', '549900', '99999', null, 'http://image.taotao.com/jd/63af01c37a18454ab2fef4670046272e.jpg', '76', '1', '2015-03-08 21:27:45', '2015-03-08 21:27:45'
            
           

相關推薦

MyCat | Mysql分片配置

需求及環境分析 1、需求 把 tb_item 表分片儲存到三個資料節點上。 2、安裝環境分析 一臺 mycat伺服器: mycat-server:10.73.150.4 兩臺 mysql 資料庫伺服器: mysql-server-01:10.73.150

MyCat | 配置 Mysql 讀寫分離+強制走寫節點+根據主從延時的讀寫分離

資料庫讀寫分離對於大型系統或者訪問量很高的網際網路應用來說,是必不可少的一個重要功能。對於MySQL來說,標準的讀寫分離是主從模式,一個寫節點Master後面跟著多個讀節點,讀節點的數量取決於系統的壓力,通常是1-3個讀節點的配置。 Mycat讀寫分離和自動切

shell--mysql主從自動部署

shell mysql主從 #!/bin/bash#auto make install Mysql AB Relication#by author max#date 2017-05-04MYSQL_SOFT="mysql mysql-server mysql-devel php-mysql"NUM=`

python-----MySql操作二

速度 http 有著 not null .cn dmi 員工 利用 密碼 一.主鍵   1.每個 表只有一個主鍵   2.每個主鍵可以由多個列組成.(如果主鍵由多個組成,只要有一行列值不等即可) CREATE TABLE NAME ( id INT auto_i

linux運維、架構-MySQL主從復制

date sed mage lin 密碼 sla 環境 從數據 nlog 一、MySQL主從復制原理圖 MySQL主從復制原理:實現主從復制原理是三個線程完成的,主的I/O線程,備的I/O線程與SQL線程 1、首先主庫db01需要開啟binlog、授權一個replica

DBA成長---mysql數據庫服務(二)

連接查詢 過程 where 存在 arc nat 唯一索引 rest nal 管理表記錄 增加insert into 庫.表 values(字段值列表);insert into 庫.表(字段值列表) values(字段值列表);insert into 庫.表 values(

DBA成長---MySQL-MMM集群部署

1.2 軟件包 tle off exc strong stat 地址 clu MySQL-MMM集群部署MMM(Master-Master replication managerfor Mysql,Mysql主主復制管理器)是一套靈活的腳本程序,基於perl實現,用來對my

DBA成長---mysql數據備份與恢復

insert describe status use 表結構 command osi 5.7 數據 數據備份與恢復備份方式: 物理備份:直接拷貝備份庫和表對應的文件 cp -r /var/lib/mysql/mysql /mysql.bak

python---MySQL&表的相關操作

與表相關的基本概念 什麼是表 MySQL中的表類似於檔案,其內的一行資料叫做記錄,記錄所對應的標題稱之為欄位 cid和caption就是表字段,下面的一行行內容就是記錄 儲存引擎介紹 與普通的檔案一樣,MySQL的表也有各種各樣的型別,表的型別不同,所對應的存取機制也不同。儲存引擎就是儲存資料

JAVA學習---mysql讀寫分離

1.mysql讀寫分離,我們需要在資料來源配置檔案中配置多個數據源 2.自定義動態切換資料來源DynamicDataSource,繼承AbstractRoutingDataSource,該類有實現了DataSource介面 然後我們開啟DynamicDataSource繼

mybatis學習----mysql批量新增資料

mybatis學習之路----批量更新資料 接下來兩節要探討的是批量插入和批量更新,因為這兩種操作在企業中也經常用到。     mysql新增語句   insert into 表名(欄位,欄位。。。

python--MySQL數據庫初識

-- 刪除數據 sql語句 create tab 文件夾 需要 操作文件 默認 SQL語句的基本操作(輸入語句後要加分號)   SQL語句主要是針對數據庫裏面的 庫 表 行 這三個對象進行增刪改查.     1. 庫(data文件夾中的文件,每創建一個庫,這個庫的名稱就是文

Vue學習(6)-組合配置選項以及其他配置選項

引言 測試基於vue初始化的腳手架,不加router等其他的,使用index.html,編輯的入口main.js,結合控制檯和頁面觀察輸出結果,學習選項的使用 組合配置選項 parent 型別:Vue instance 詳細 指定已建立

python--MySQl單表查詢

報錯 having 去重 sele close aps 分享圖片 優先級 mysql單表查詢 一 單表查詢語法 #查詢數據的本質:mysql會到你本地的硬盤上找到對應的文件,然後打開文件,按照你的查詢條件來找出你需要的數據。下面是完整的一個單表查詢的語法 select

Django學習:admin配置

1.在admin.py裡面匯入models包 from blog import models admin.site.register(models.Article) 2.建立admin賬號: python manage.py createsuperuser 3.用建

Django學習:templates配置html

1.在我的專案裡面新建templates/index.html 2.修改views.py引數: def index(request): return render(request,'index.html',{'hello':'nihao'}) 3.{'hel

成佩濤程式設計——MySQL除法精度問題

最近在寫一個SQL中遇到除法精度問題,比如: 1 SELECT 7185521/7185522 得出的結果是1,那麼如何讓他得到0.999這樣的結果呢,後來查google得知可以利用TRUNCATE()函式來解決這樣類似大資料除法的精度問題。 TRU

Spring學習(一)—環境配置

背景 雖然本人平時學習和使用的是C++,但是卻用C++找到了一家使用Java的網際網路實習公司,公司的師兄讓我先學習學習Java和Spring,以便入職後上手快一點。就這樣踏上了學習Java和Spring的路。我之前從未學過Java,首先看了馬士兵老師的Jav

oozie排程sqoop踩坑(hue配置

背景: 通過oozie來排程管理sqoop資料抽取流程,一般有兩種方法:一是直接使用oozie的sqoop-action,二是將sqoop語句寫在shell指令碼中,通過shell-action來排程。經過測試,sqoop-action實在是坑多,故採用坑相對

構建高效能web------mysql讀寫分離實戰

一個完整的mysql讀寫分離環境包括以下幾個部分: 應用程式client database proxy database叢集 在本次實戰中,應用程式client基於c3p0連線後端的database proxy。database proxy負責管理client實際訪問data