架構(gòu)圖

數(shù)據(jù)庫同步

Master節(jié)點
開啟Binary log
master節(jié)點修改my.ini配置文件
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
重啟MySQL服務(wù)
SHOW MASTER STATUS

創(chuàng)建用戶
//1,在主庫創(chuàng)建賬號,用于從庫的連接
//2,賦予新建的賬戶從庫權(quán)限(不同版本設(shè)置方式不同,此處為mysql8)
mysql> CREATE USER qiao IDENTIFIED BY '123456';
mysql> grant replication slave on *.* to 'qiao'@'%';
mysql> flush privileges;
Slave節(jié)點
開啟log
slave節(jié)點修改my.ini配置文件
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
注:這里面的server-id 一定要和主庫的不同
重啟MySQL服務(wù)
關(guān)聯(lián)Master
change master to master_host='127.0.0.1',
master_port=3307,
master_user='qiao',
master_password='123456',
master_log_file='master-bin.000001',
master_log_pos=0;
master_host:主庫的ip
master_port:主庫的端口,
master_user:連接主庫的賬號’,
master_password:賬號的密碼,
master_log_file:log文件名,
master_log_pos=0;//寫0會賦予默認值
開啟同步
mysql> start slave ;//啟動同步
其他命令:
mysql> show slave status\G //查看啟動狀態(tài),注意不要加分號 mysql> stop slave ; //停止同步
Mycat部署
安裝
1、jdk安裝(略)
2、mycat安裝(官網(wǎng)http://www.mycat.org.cn/)
- wget http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
- tar -zxf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz -C /usr/local/
配置
schema.xml
主配置文件(讀寫分離、高可用、分表、節(jié)點控制)
#定義mycat工作庫mycat_testdb是mycat的一個邏輯庫,可以自定義,但是涉及另外一個server.xml配置文件。mycat_testdb邏輯庫對應dn1這個數(shù)據(jù)節(jié)點
<schema name="mycat_testdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
# 定義名為dn1這個數(shù)據(jù)節(jié)點的邏輯主機地址。和真實的后端數(shù)據(jù)庫中的school庫名。
<dataNode name="dn1" dataHost="host1" database="school" />
# host1這個邏輯主機的最大并發(fā)連接數(shù)。最小連接(類似預熱數(shù)據(jù),提前連接好,節(jié)省臨時連接的消耗)。
balance默認為1,為負載均衡到所有從庫讀操作。
負載均衡類型,目前的取值有4 種:
(1)balance="0", 不開啟讀寫分離機制,所有讀操作都發(fā)送到當前可用的 writeHost 上。
(2)balance="1",全部的 readHost 與 stand by writeHost 參與 select 語句的負載均衡。
簡單的說,當雙主雙從模式(M1->S1,M2->S2,并且 M1 與 M2 互為主備),正常情況下,M2,S1,S2 都參與 select 語句的負載均衡。
(3)balance="2",所有讀操作都隨機的在 writeHost、readhost 上分發(fā)。
(4)balance="3",所有讀請求隨機的分發(fā)到 readhost 執(zhí)行,writerHost 不負擔讀壓力
writeType默認為0,寫操作只分配到第一個writeHost數(shù)據(jù)庫實例組。指定后端數(shù)據(jù)庫軟件類型。
dbDriver是驅(qū)動。
switchType="1"是主庫宕機,自動切換到其他預備主數(shù)據(jù)庫實例組
dbDriver(使用native的話,因為這個值執(zhí)行的是二進制的mysql協(xié)議,所以可以使用mysql和maridb,其他類型的則需要使用JDBC驅(qū)動來支持。)
<dataHost name="host1" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1">
# mycat監(jiān)控后端mysql是否可用,走的心跳信息
<heartbeat>select user()</heartbeat>
# 定義host1邏輯主機中的真實物理主機,這是邏輯主機中的一個真實“可寫”節(jié)點,真實的數(shù)據(jù)庫密碼,不能瞎寫
<writeHost host="hostM1" url="192.168.1.128:3306" user="root" password="abc123">
# 定義host1邏輯主機中的真實物理主機,這是邏輯主機中的一個真實“可讀”節(jié)點,真實的數(shù)據(jù)庫密碼,不能瞎寫
<readHost host="hostS1" url="192.168.1.130:3306" user="root" password="abc123" />
server.xml
mycat軟件本身相關(guān)的配置

啟動
echo 'export PATH=/usr/local/mycat/bin:$PATH' >> /etc/profile
source /etc/profile
mycat start
springboot 整合
配置
#配置數(shù)據(jù)源
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
#這里配置的是Mycat中server.xml中配置賬號密碼,不是數(shù)據(jù)庫的密碼。
spring.datasource.druid.username=root
spring.datasource.druid.password=123456
#mycat的邏輯庫 端口也是mycat的
spring.datasource.druid.url=jdbc:mysql://192.168.142.129:8066/TESTDB
使用
結(jié)合項目的ORM正常使用,過程中對mycat無感知
資料:
https://www.cnblogs.com/yuan9910/p/13807619.html
https://www.cnblogs.com/psc0218/p/13555350.html
https://blog.csdn.net/qq_38361863/article/details/109365127