MySQLOPS數據庫與運維自動化技術分享
來源:懂視網
責編:小采
時間:2020-11-09 07:22:32
MySQLOPS數據庫與運維自動化技術分享
MySQLOPS數據庫與運維自動化技術分享:阿里巴巴解決數據拆分的偽分布式數據庫 中間件Cobar正式開源 六月 19, 2012 by admin · 1 Comment 編者加注: 阿里巴巴于2012年6月19日,正式對外開源的數據庫中間件Cobar,前身是早已經開源的Amoeba,不過其作者陳思儒離職去盛大之后,阿里巴巴內部考慮到
導讀MySQLOPS數據庫與運維自動化技術分享:阿里巴巴解決數據拆分的偽分布式數據庫 中間件Cobar正式開源 六月 19, 2012 by admin · 1 Comment 編者加注: 阿里巴巴于2012年6月19日,正式對外開源的數據庫中間件Cobar,前身是早已經開源的Amoeba,不過其作者陳思儒離職去盛大之后,阿里巴巴內部考慮到
阿里巴巴解決數據拆分的偽分布式數據庫 中間件Cobar正式開源 六月 19, 2012 by admin · 1 Comment 編者加注: 阿里巴巴于2012年6月19日,正式對外開源的數據庫中間件Cobar,前身是早已經開源的Amoeba,不過其作者陳思儒離職去盛大之后,阿里巴巴內部考慮到A
阿里巴巴解決數據拆分的偽分布式數據庫 中間件Cobar正式開源
六月 19, 2012 by
admin · 1 Comment
編者加注:
阿里巴巴于2012年6月19日,正式對外開源的數據庫中間件Cobar,前身是早已經開源的Amoeba,不過其作者陳思儒離職去盛大之后,阿里巴巴內部考慮到Amoeba的穩定性、
性能和功能支持,以及其他因素,重新設立了一個項目組并且更換名稱為Cobar,當時的開發人員是賀賢懋(備注:可能名字的字不對,實在有點久遠,雖然當時一起合作),還
有一位百阿的同事也加入這個團隊(備注:旺旺密碼不記得了,所以他的名字也無法記起,看見請莫怪我這位記憶力不好的百阿同學),開發語言是Java,一開始只支持MySQL
數據庫,并且用在新項目BRMMS(中文名稱:商人社區,BRMMS是項目代號,一般只記得代號,實在參與過太多項目研發),后來也支持Oracle數據庫,因為阿里巴巴中文站
的Offer數據庫,需要從Oracle數據庫+存儲設備,遷移到MySQL+PC Server平臺上,為保證用戶數據的安全性,遷移過程是每128分之一切換的模式。雖然測試的非常嚴格,我
們幾乎所有可能碰到的情況,甚至極端情況都測試過,但是依然碰過一些莫名其妙的問題,比如從MySQL雙主復制模式,從主A切換為B,出現過某個小集群的應用程序連接確實
切換成功,但是又自己切換回來了,直到我離開也沒有找出原因,不過后來再切換又從未出現過,Cobar開源對大家解決數據的垂直拆分和水平拆分,那是如虎貼翼,非常方便!
場景描述
Cobar是關系型數據的分布式處理系統,它可以在分布式的環境下像傳統數據庫一樣為您提供海量數據服務。以下是快速啟動場景:
系統對外提供的數據庫名是dbtest,并且其中有兩張表tb1和tb2。tb1表的數據被映射到物理數據庫dbtest1的tb1上。tb2表的一部分數據被映射到物理數據庫dbtest2的tb2上,另外一部分數據被映射到物理數據庫dbtest3的tb2上。
如下圖所示:

步驟一:環境準備
軟件準備
操作系統: Linux或者Windows (推薦在Linux環境下運行Cobar)
MySQL: http://www.mysql.com/downloads/ (推薦使用5.1以上版本)
JDK:
http://www.oracle.com/technetwork/java/javase/downloads/ (推薦使用1.6以上版本)
Cobar:
http://code.alibabatech.com/wiki/display/cobar/release/ (下載tar.gz或者zip文件)
數據準備
假設本文MySQL所在服務器IP為192.168.0.1,端口為3306,用戶名為test,密碼為空,我們需要創建schema:dbtest1、dbtest2、dbtest3,table:tb1、tb2,腳本如下:
數據庫創建腳本:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#創建dbtest1
drop
database if exists dbtest1;
create
database dbtest1;
use dbtest1;
#在dbtest1上創建tb1
create
table tb1(
id int
not null ,
gmt datetime);
#創建dbtest2
drop
database if exists dbtest2;
create
database dbtest2;
use dbtest2;
#在dbtest2上創建tb2
create
table tb2(
id int
not null ,
val varchar (256));
#創建dbtest3
drop
database if exists dbtest3;
create
database dbtest3;
use dbtest3;
#在dbtest3上創建tb2
create
table tb2(
id int
not null ,
val varchar (256));
|
步驟二:部署和配置Cobar
請確保機器上設置了JAVA環境變量JAVA_HOME 下載Cobar壓縮文件并解壓,進入conf目錄可以看到schema.xml, rule.xml, server.xml等相關的配置文件
?
1
2
3
4
5
6
|
wget http: //code .alibabatech.com /mvn/releases/com/alibaba/cobar/cobar-server/1 .2.4 /cobar-server-1 .2.4. tar .gz
tar
zxf cobar-server-1.2.4. tar .gz
cd
cobar-server-1.2.4 #可以看到bin,conf,lib,logs四個目錄
schema.xml配置如下<span style= "color: #ff0000;" >(注意:schema.xml包含MySQL的IP、端口、用戶名、密碼等配置,您需要按照注釋替換為您的MySQL信息。)< /span >
<strong>schema.xml 配置< /strong >:
|
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
"1.0"
encoding= "UTF-8" ?>
"schema.dtd" >
"http://cobar.alibaba.com/" >
"dbtest"
dataNode= "dnTest1" >
"tb2"
dataNode= "dnTest2,dnTest3"
rule= "rule1"
/>
"dnTest1" >
"dataSource" >
dsTest[ 0 ]
"dnTest2" >
"dataSource" >
dsTest[ 1 ]
"dnTest3" >
"dataSource" >
dsTest[ 2 ]
"dsTest"
type= "mysql" >
"location" >
192.168 . 0.1 : 3306 /dbtest1
192.168 . 0.1 : 3306 /dbtest2
192.168 . 0.1 : 3306 /dbtest3
"user" >test
"password" >
"sqlMode" >STRICT_TRANS_TABLES
?
1
|
rule.xml配置如下"color: #ff0000;" >(本文僅以數字類型的id字段作為拆分字段,將數據拆分到兩個庫中。)
|
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
"1.0"
encoding= "UTF-8" ?>
"rule.dtd" >
"http://cobar.alibaba.com/" >
"rule1" >
id
< function
name= "func1"
class = "com.alibaba.cobar.route.function.PartitionByLong" >
"partitionCount" > 2
"partitionLength" > 512
function >
|
?
?
1
2
3
4
5
6
7
8
9
10
|
"1.0"
encoding= "UTF-8" ?>
"server.dtd" >
"http://cobar.alibaba.com/" >
"test" >
"password" >test
"schemas" >dbtest
|
步驟三:啟動和使用Cobar
啟動Cobar,進入bin目錄可以看到Cobar的啟動、停止與重啟腳本
?
1
2
3
|
. /startup .sh
#Cobar進程名為CobarStartup
查看logs目錄下stdout.log, 啟動成功日志如下< /strong >
|
?
1
2
3
4
5
6
7
8
9
10
11
12
13
|
10:54:19,264 INFO ===============================================
10:54:19,265 INFO Cobar is ready to startup ...
10:54:19,265 INFO Startup processors ...
10:54:19,443 INFO Startup connector ...
10:54:19,446 INFO Initialize dataNodes ...
10:54:19,470 INFO dnTest1:0 init success
10:54:19,472 INFO dnTest3:0 init success
10:54:19,473 INFO dnTest2:0 init success
10:54:19,481 INFO CobarManager is started and listening on 9066
10:54:19,483 INFO CobarServer is started and listening on 8066
10:54:19,484 INFO ===============================================
訪問Cobar同訪問MySQL的方式完全相同, 常用訪問方式如下< /strong >"color: #ff0000;" >(注意:本文將Cobar部署在192.168.0.1這臺機器上,否則請替換為您的Cobar所在IP,其他信息不變)< /span >
|
?
1
2
3
4
5
6
7
8
9
|
#命令行
mysql -h192.168.0.1 -utest -ptest -P8066 -Ddbtest
#JDBC(建議5.1以上的mysql driver版本)
Class.forName( "com.mysql.jdbc.Driver" );
Connection conn = DriverManager.getConnection( "jdbc:mysql://192.168.0.1:8066/dbtest" ,
"test" , "test" );
......
SQL執行示例,執行語句時與使用傳統單一數據庫無區別< /strong >
|
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
mysql>show databases; #dbtest1、dbtest2、dbtest3對用戶透明
+ ----------+
| DATABASE
|
+ ----------+
| dbtest |
+ ----------+
mysql>show tables; #dbtest中有兩張表tb1和tb2
+ -------------------+
| Tables_in_dbtest1 |
+ -------------------+
| tb1 |
| tb2 |
+ -------------------+
mysql> insert
into tb1 (id, gmt)
values (1, now()); #向表tb1插入一條數據
mysql> insert
into tb2 (id, val)
values (1, "part1" ); #向表tb2插入一條數據
mysql> insert
into tb2 (id, val)
values (2, "part1" ), (513,
"part2" ); #向表tb2同時插入多條數據
mysql> select
* from
tb1; #查詢表tb1,驗證數據被成功插入
+ ----+---------------------+
| id | gmt |
+ ----+---------------------+
| 1 | 2012-06-12 15:00:42 |
+ ----+---------------------+
mysql> select
* from
tb2; #查詢tb2,驗證數據被成功插入
+ -----+-------+
| id | val |
+ -----+-------+
| 1 | part1 |
| 2 | part1 |
| 513 | part2 |
+ -----+-------+
mysql> select
* from
tb2 where id
in (1, 513); #根據id查詢
+ -----+-------+
| id | val |
+ -----+-------+
| 1 | part1 |
| 513 | part2 |
+ -----+-------+
|
查看后端MySQL數據庫dbtest1,dbtest2和dbtest3,驗證數據分布在不同的庫中
產品約束
使用JDBC時,推薦使用5.1以上版本Driver進行連接不支持跨庫的關聯操作:join、分頁、排序、子查詢。不支持rewriteBatchedStatements=true參數設置。默認為false不支持useServerPrepStmts=true參數設置。默認為falseBLOB, BINARY, VARBINARY字段不能使用。若特殊需求需要這三種字段,禁止使用PreparedStatement的setBlob()或setBinaryStream()方法設置參數。不支持SAVEPOINT操作。不支持SET語句的執行,事務和字符集設置語句除外對于拆分表(一個表的數據被映射到多個MySQL數據庫),不能更新已有記錄的拆分字段(分庫字段)值只支持MySQL數據節點。對于拆分表,插入操作須給出列名,必須包含拆分字段。
源碼下載地址:http://code.alibabatech.com/svn/cobar/
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
MySQLOPS數據庫與運維自動化技術分享
MySQLOPS數據庫與運維自動化技術分享:阿里巴巴解決數據拆分的偽分布式數據庫 中間件Cobar正式開源 六月 19, 2012 by admin · 1 Comment 編者加注: 阿里巴巴于2012年6月19日,正式對外開源的數據庫中間件Cobar,前身是早已經開源的Amoeba,不過其作者陳思儒離職去盛大之后,阿里巴巴內部考慮到
Top
主站蜘蛛池模板:
亚洲美女aⅴ久久久91|
国产一区二区免费在线|
婷婷精品国产亚洲AV麻豆不片|
香蕉视频在线免费看|
久久久久亚洲精品天堂久久久久久
|
亚洲精品国产suv一区88|
毛色毛片免费观看|
亚洲七久久之综合七久久|
波多野结衣久久高清免费|
亚洲AV无码专区在线电影成人|
好爽好紧好大的免费视频国产
|
精品久久久久久无码免费|
亚洲精品无码不卡在线播HE|
在线观看免费视频网站色|
亚洲av日韩av无码|
91频在线观看免费大全|
亚洲欧洲无码一区二区三区|
亚洲国产精品无码久久青草|
中文在线观看永久免费|
亚洲一级二级三级不卡|
少妇高潮太爽了在线观看免费|
亚洲国产成人久久精品大牛影视|
日韩精品电影一区亚洲|
青青操免费在线观看|
亚洲一区二区三区深夜天堂|
国产一区二区视频免费|
久久久久国产精品免费免费不卡|
亚洲日韩国产精品乱-久|
亚洲福利在线播放|
午夜视频在线免费观看|
亚洲国产成人AV在线播放|
国产黄色一级毛片亚洲黄片大全|
久久99免费视频|
亚洲制服丝袜一区二区三区|
日韩免费无码一区二区视频|
一级毛片免费不卡|
亚洲特级aaaaaa毛片|
无码专区一va亚洲v专区在线|
日韩中文字幕免费视频|
国产亚洲欧美日韩亚洲中文色|
亚洲第一区精品观看|
|