日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

基于mysql的主从复制之Mycat简单配置和高可用

發布時間:2023/12/15 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于mysql的主从复制之Mycat简单配置和高可用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


what-mycat

1.Mycat就是MySQL Server,而Mycat后面連接的MySQL Server,就好象是MySQL的存儲引擎,如InnoDB,MyISAM等.

因此,Mycat本身并不存儲數據,數據是在后端的MySQL上存儲的,因此數據可靠性以及事務等都是MySQL保證的.

2.Mycat是數據庫中間件,就是介于數據庫與應用之間,進行數據處理與交互的中間服務。從原有的一個庫,被切分為多個分片數據庫,所有的分片數據庫集群構成了整個完整的數據庫存儲.


所以有了數據庫中間件,應用只需要集中與業務處理,大量的通用的數據聚合,事務,數據源切換都由中間件來處理,中間件的性能與處理能力將直接決定應用的讀寫性能,所以一款好的數據庫中間件至關重要。



術語

分片規則(rule)

邏輯庫(schema)

分片節點(dataNode)

節點主機(dataHost)


how-mycat

首先要安裝,mysql5.7和mycat,并且兩臺主機要先做好mysql的主從復制,

且兩臺主機的mysql都要存在db1數據庫,用來存放mycat的數據.


關于mysql的主從復制,這里就不貼出了,可以移步以下鏈接:

基于GTID的主從復制數據庫

mysql的經典主從復制


配置mycat

vim wrapper.conf????

5 wrapper.java.command=/usr/bin/java ? ? ? ? ? ? ? ? ? ? ?#java命令所在目錄
31 wrapper.java.additional.5=-XX:MaxDirectMemorySize=2G ? 根據實際內存設置
33 wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=2984

vim server.xml

80 ? ? ? ? <user name="mycat"> #登陸mycat的用戶名和密碼
81 ? ? ? ? ? ? ? ? <property name="password">Mycat+007</property>
82 ? ? ? ? ? ? ? ? <property name="schemas">JamesMycatSchema</property>
82 ? ? #mycat中的數據庫名

vim schema.xml


定義mycat中可以創建的表,以及哪些節點可以使用哪些表


7<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
11<table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />
12<table name="goods" primaryKey="ID" type="global" dataNode="dn1,dn2" />
14<table name="hotnews" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3"
15 ? ? ? ? ? ? ? ? ? ? ? ? ? ?rule="mod-long" />

19 ? ? ? ? ? ? ? ? <table name="employee" primaryKey="ID" dataNode="dn1,dn2"
20 ? ? ? ? ? ? ? ? ? ? ? ? ? ?rule="sharding-by-intfile" />
21 ? ? ? ? ? ? ? ? <table name="customer" primaryKey="ID" dataNode="dn1,dn2"
22 ? ? ? ? ? ? ? ? ? ? ? ? ? ?rule="sharding-by-intfile">
23 ? ? ? ? ? ? ? ? ? ? ? ? <childTable name="orders" primaryKey="ID" joinKey="customer_id"
24 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? parentKey="id">
25 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <childTable name="order_items" joinKey="order_id"
26 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? parentKey="id" />
27 ? ? ? ? ? ? ? ? ? ? ? ? </childTable>
28 ? ? ? ? ? ? ? ? ? ? ? ? <childTable name="customer_addr" primaryKey="ID" joinKey="customer_id"
29 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? parentKey="id" />
30 ? ? ? ? ? ? ? ? </table>



36 ? ? ? ? <dataNode name="dn1" dataHost="server33.lalala.com" database="db1" />
37 ? ? ? ? <dataNode name="dn2" dataHost="server33.lalala.com" database="db1" />
38 ? ? ? ? <dataNode name="dn3" dataHost="server33.lalala.com" database="db1" />

43 ? ? ? ? <dataHost name="server33.lalala.com" maxCon="1000" minCon="10" balance="0"
44 ? ? ? ? ? ? ? ? ? ? ? ? ? writeType="0" dbType="mysql" dbDriver="native" switchType="1" ?slaveThreshold="100">
45 ? ? ? ? ? ? ? ? <heartbeat>select user()</heartbeat>
46 ? ? ? ? ? ? ? ? <!-- can have multi write hosts -->


連接數據庫的用戶密碼,稍后還要在數據庫授權


?vim schema.xml

因為我們做的是高可用,所以33和44都具有寫的功能

47 ? ? ? ? ? ? ? ? <writeHost host="hostM1" url="server33.lalala.com:3306" user="mycat"
48 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?password="Mycat+007">
49 ? ? ? ? ? ? ? ? ? ? ? ? <!-- can have multi read hosts -->
50 ? ? ? ? ? ? ? ? </writeHost>
51 ? ? ? ? ? ? ? ? <writeHost host="hostS1" url="server44.lalala.com:3306" user="mycat"
52 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?password="Mycat+007">
53 ? ? ? ? ? ? ? ? </writeHost>


server33,server44:


vim /etc/my.cnf


?22?lower_case_table_names?=?1


mysql>CREATE USER mycat identified by 'Mycat+007';
mysql>grant all privileges on *.* to mycat@'%';



配置成功,啟動~???

?mycat start ? ,查看日志????wrapper.log




檢驗

mycat的登陸:?

mysql -umycat -pMycat+007 -P8066 -h127.0.0.1


查看server44,和server33的mycat數據是否同步~


建表:

create?table?employee?(id?int?not?null?primary?key,name?varchar(100),sharding_id?int?not?null);

插入數據:

insert?into?employee(id,name,sharding_id)?values(1,'leader?us',10000); insert?into?employee(id,name,sharding_id)?values(2,?'me',10010); insert?into?employee(id,name,sharding_id)?values(3,?'mycat',10000); insert?into?employee(id,name,sharding_id)?values(4,?'mydog',10010);


在兩臺mycat上,都能看到相同的數據,即為成功




并且在server33和server44上的db1數據庫中,也能看見剛剛創建的數據





heartbeat+drbd+mycat實現高可用分布式存儲


存儲:drbd


vim /etc/drbd.d/lalalala.res

resource lalalala {
meta-disk internal;
device /dev/drbd8;
syncer {
verify-alg sha1;
}
on server33.lalala.com {
disk /dev/vdc;
address 172.25.88.33:7789;
}
on server44.lalala.com {
disk /dev/vdb;
address 172.25.88.44:7789;
}
}


高可用

vim ha.cf

initdead?60???資源初始化時間,如果設置過大,接管時間可能很長,不用擔心,只需要耐心等待~


vim haresources

server33.lalala.com IPaddr::172.25.88.100/24/eth0 drbddisk::lalalala Filesystem::/dev/drbd8::/home/mycat/app/mycat/lib::ext4 mycatd


其他配置照舊~

需要指出的是,因為mycat不屬于LSB,所以要自己編寫腳本啟動文件,我寫的太粗糙了,不要學我.....


vim /etc/init.d/mycatd 注意啟動腳本的位置

3 path=/home/mycat/app/mycat/bin/mycat ? ?#路徑為執行mycat的環境,可以用which查看
4 function usage(){
5 ?echo "$0 {start|stop|restart}"
6 ?exit 1
7 }
8 [ $# -ne 1 ] && usage ? #如果沒有輸入參數,就顯示本腳本用法
9
10
11 case $1 in
12 ?start)
13 $path/mycat start # &>/dev/null &
16 ?;;
17 ?stop)
18 $path/mycat stop &>/dev/null &
21 ?;;
22 ?restart)
23 $path/mycat start &>/dev/null &
24 $path/mycat stop &>/dev/null &
27 ?;;
28 ?*)
29 ?printf "Usage:$0 {start|stop|restart}\n"
30 esac





啟動server33的heartbeat!

可以看到IP,存儲,服務全都啟動拉!




查看掛載點和IP




高可用的接管,take over






轉載于:https://blog.51cto.com/12059878/1912215

總結

以上是生活随笔為你收集整理的基于mysql的主从复制之Mycat简单配置和高可用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。