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