亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > 文庫 > 正文

之于mycat讀寫分離主從切換策略的調研

2024-09-07 22:12:35
字體:
來源:轉載
供稿:網友
      當從庫宕機后,讀請求會全部轉移到主庫上,對業務無影響。
1、當主庫宕機后
     目前,我們的writehost只設置了一個主庫,當主庫宕機后,通過mycat的 讀寫請求會全部報錯,如下所示:
 
     讀請求:
 
mysql> select * from t1;
ERROR  1184  (HY000): 拒絕連接
    寫請求:
 
mysql> insert into t1 values ( 2 );
ERROR  1184  (HY000): 拒絕連接
2、設置多個writehost,實現主庫宕機后,寫請求自動切換到從庫
    上面看到,如果只設置一個writehost,主庫宕機后,并不會自動切換,所有的 讀寫請求全部受影響。
 
    為了解決這個我們,我們可以設置多個writehost,當主庫宕機后,自動把寫請求切換到從節點。
 
    我們的生產環境是一主一從,我們可以把兩個節點都設置為writehost,這樣如果writehost1(主庫)宕機后,mycat會自動把 寫請求全部轉移到writehost2(從庫)上。
 
    原來配置:
 
[root @demo -init conf]# cat  schema.xml
<?xml version= "1.0" ?>
<!DOCTYPE mycat:schema SYSTEM  " schema.dtd" >
<mycat:schema xmlns:mycat= " http://io.mycat/" >
     <schema name= "db1"  checkSQLschema= "false"  sqlMaxLimit= "500"  dataNode= "dn1" ></schema>
     <dataNode name= "dn1"  dataHost= "localhost1"  database= "db1"  />
     <dataHost name= "localhost1"  maxCon= "1000"  minCon= "10"  balance= "3"  writeType= "0"  dbType= "mysql"  dbDriver= "native"  switchType= "-1"  slaveThreshold= "100" >
         <heartbeat>select user()</heartbeat>
         <!-- can have multi write hosts -->
     <writeHost host= "hostM1"  url= " 192.168.174.30:3306"  user= "root"  password= "123456" >
     <readHost  host= "hostS1"  url= " 192.168.174.30:3307"  user= "root"  password= "123456"  />
     </writeHost>
     </dataHost>
</mycat:schema>
  修改后配置:
 
[root @demo -init conf]# cat  schema.xml
<?xml version= "1.0" ?>
<!DOCTYPE mycat:schema SYSTEM  " schema.dtd" >
<mycat:schema xmlns:mycat= " http://io.mycat/" >
     <schema name= "db1"  checkSQLschema= "false"  sqlMaxLimit= "500"  dataNode= "dn1" ></schema>
     <dataNode name= "dn1"  dataHost= "localhost1"  database= "db1"  />
     <dataHost name= "localhost1"  maxCon= "1000"  minCon= "10"  balance= "3"  writeType= "0"  dbType= "mysql"  dbDriver= "native"  switchType= "1"  slaveThreshold= "100" >
         <heartbeat>select user()</heartbeat>
         <!-- can have multi write hosts -->
     <writeHost host= "hostM1"  url= " 192.168.174.30:3306"  user= "root"  password= "123456" >
     <readHost  host= "hostS1"  url= " 192.168.174.30:3307"  user= "root"  password= "123456"  />
     </writeHost>
     <writeHost host= "hostM2"  url= " 192.168.174.30:3307"  user= "root"  password= "123456" />
     </dataHost>
</mycat:schema>
   就改了兩處:
 
  a)把 switchType="-1"改成 switchType="1";
 
        說明: switchType:
 
<writeHost host= "allinmd-mysql-3"  url= " 192.168.174.30:3307"  user= "root"  password= "123456" />
    這樣配置后,當主庫宕機后,寫請求就會自動轉移到從庫上,從而保證業務正??捎?。
 
3、當原主庫恢復后的處理
     當原主庫恢復后,它將不能納入mycat的管理(blance=3)。也就是說,原主庫恢復后,mycat不會把寫請求發送到原主庫。這是由conf/dnindex.properties來決定的。
 
    下面是mycat官方文檔的說明,摘錄在這。
 
     正常情況下,Mycat 會將第一個 writeHost 作為寫節點,所有的 DML SQL 會發送給此節點,若 Mycat 開啟了讀寫分離,則查詢節點會根據讀寫分離的策略發readHost(+writeHost)上執行,當一個 dataHost 里面配置了兩個或多個 writeHost 的情況下,如果第一個 writeHost 宕機,則 Mycat 會在默認的3 次心跳檢查失敗后,自動切換到下一個可用的 writeHost 執行 DML SQL 語句,并在 conf/dnindex.properties文件里記錄當前所用的 writeHost 的 index(第一個為 0,第二個為 1,依次類推),注意,此文件不能刪除和擅自改變,除非你深刻理解了它的作用以及你的目的。
     那么問題來了,當原來配置的 MySQL 寫節點宕機恢復以后,怎么重新加入 Mycat,要不要恢復為原來的寫節點?關于這個問題,我們也曾與 DBA 討論很久,最終的建議方案是,保持現有狀態不變,改旗易幟,恢復后的MySQL 節點作為從節點,跟隨新的主節點,重新配置主從同步,原先跟隨該節點做同步的其他節點也同樣換帥,重新配置同步源,這些節點的數據手完成同步以后,再加入 Mycat 里。目前 1.3 版本的 Mycat 還沒有實現監控MySQL 主從同步狀態的功能,因此這個過程里,DBA 可以先修改 MySQL 的密碼,讓 Mycat 無法鏈接故障服務器,等同步完成以后,恢復密碼,這樣 Mycat 就自動重新將修復好的 Mycat 納管進來了。
 
     也就是說,當主庫恢復后,需要手工重新配置主從同步。
 
4、讀寫分離的條件
   讀寫分離必須滿足如下條件,讀操作才能發往從節點執行。
 
  a)必須在schema.xml中配置readHost, 而且balance配置不為0。
  b)SQL語句為select 或者show。
  c)   在非事務中。當然,也可以通過注釋/#mycat:db_type=slave, ... / 強制發從。
 
   下面我們測試一下在事務中和在非事務中,select的表現。
 
     先說明一下我的環境,3306是主庫,3307是從庫。
 
   在 非事務中,可以看到通過mycat查詢的是3307 從庫的數據:
 
mysql> select * from t1;   //查到的是從庫數據
+------+
| id   |
+------+
|  3307  |
+------+
1  row in set ( 0.00  sec)
  在 事務中,可以看到通過mycat查詢的是3306 主庫的數據:
 
mysql> begin;
Query OK,  0  rows affected ( 0.00  sec)
 
mysql> select * from t1;  //查到的是主庫數據
+------+
| id |
+------+
|  3306  |
+------+
1  row in set ( 0.00  sec)
   使用 注解,讓 事務中的查詢, 強制讀從庫:
 
mysql> begin;
Query OK,  0  rows affected ( 0.00  sec)
 
mysql> select * from t1;   //看到select 在事務中讀了主庫
+------+
| id |
+------+
|  3306  |
+------+
1  row in set ( 0.00  sec)
 
mysql>  /*!mycat:db_type=slave*/ select * from t1;     //看到加了注解后,select 在事務中讀了從庫
+------+
| id |
+------+
|  3307  |
+------+
1  row in set ( 0.01  sec)
 
mysql> select * from t1;   //看到select 在事務中讀了主庫
+------+
| id |
+------+
|  3306  |
+------+
1  row in set ( 0.00  sec)

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲自拍小视频免费观看| 亚洲人成电影网站| 久久久久成人精品| 国产精品免费小视频| 欧美在线视频网| 亚洲成人久久网| 亚洲电影免费观看高清完整版| 国产亚洲精品美女| 国产一区二区av| 4438全国成人免费| 日本在线观看天堂男亚洲| 国产精品福利小视频| 97成人超碰免| 亚洲美女视频网站| 成人黄色短视频在线观看| 亚洲男人第一av网站| 国产一区二区日韩精品欧美精品| 国产精品成人国产乱一区| 国产精品久久久久久久久久ktv| 亚洲欧洲午夜一线一品| 亚洲精品日韩久久久| 国产成人中文字幕| 国产精品久久久久久婷婷天堂| 亚洲激情 国产| 国产精品免费一区二区三区都可以| 欧美一级淫片丝袜脚交| 国产成人福利视频| 国产91在线播放| 久久伊人精品一区二区三区| 日韩精品免费一线在线观看| 亚洲精品国产拍免费91在线| 精品国偷自产在线| 日韩中文在线视频| 日韩在线观看免费全集电视剧网站| 成人黄色av网| 欧美日韩一区二区三区在线免费观看| 亚洲欧洲一区二区三区久久| 日韩一区二区精品视频| 久久成人精品电影| 国产精品视频一区二区高潮| 国产精品嫩草影院一区二区| 国产精品久久久久久久久男| 性色av香蕉一区二区| 国产精品久久久久久久久久久新郎| 国产一区二区三区视频| 91亚洲精品久久久久久久久久久久| 国产日韩精品电影| 久久久久久久久久国产| 亚洲午夜性刺激影院| 色婷婷久久av| 亚洲人成在线播放| 亚洲福利精品在线| 亚洲人成电影在线播放| 中文字幕一精品亚洲无线一区| 成人欧美一区二区三区黑人| 国产欧美日韩精品专区| 亚洲xxxxx电影| 欧洲中文字幕国产精品| 一区国产精品视频| 午夜精品免费视频| 精品五月天久久| 国产精品视频久| 国产精品扒开腿做爽爽爽的视频| 欧美日韩中文字幕综合视频| 亚洲男人第一av网站| 日韩欧美在线看| 国产999精品视频| 国产一区二区三区网站| 欧美中文字幕第一页| 国产精品视频中文字幕91| 亚洲春色另类小说| 91视频国产高清| 久久亚洲精品中文字幕冲田杏梨| 亚洲加勒比久久88色综合| 97国产一区二区精品久久呦| 国产精品视频免费观看www| 精品自拍视频在线观看| 成人a在线观看| 久久久久久免费精品| 欧美精品午夜视频| 亚洲香蕉伊综合在人在线视看| 成人网在线观看| 精品久久久久久久中文字幕| 欧美日韩黄色大片| 欧洲中文字幕国产精品| 亚洲欧洲日韩国产| 日韩高清不卡av| 欧美亚洲日本网站| 欧美日韩激情视频8区| zzjj国产精品一区二区| 欧美激情视频播放| 2018日韩中文字幕| 国产在线观看一区二区三区| 久久精品国产清自在天天线| 亚洲精品99999| 国产精品稀缺呦系列在线| 精品国产福利视频| 久久久爽爽爽美女图片| 精品国产网站地址| 久久伊人精品天天| 国产亚洲欧美视频| 欧美一级片在线播放| 亚洲一区二区福利| 成人久久一区二区| 欧美日韩免费区域视频在线观看| 欧美精品久久久久久久久| 亚洲香蕉成视频在线观看| 欧美最猛性xxxx| 国产精品精品久久久| 亚洲精品综合精品自拍| 成人免费在线视频网站| 欧美大尺度在线观看| 亚洲第一视频网站| 欧美国产在线电影| 国产精品夜色7777狼人| 人妖精品videosex性欧美| 中文字幕不卡在线视频极品| 亚洲最新av在线网站| 在线观看视频99| 奇米4444一区二区三区| 日韩精品久久久久久久玫瑰园| 狠狠做深爱婷婷久久综合一区| 91久久久久久久久久久| 九九九热精品免费视频观看网站| 国产综合在线视频| 日韩av网址在线观看| 免费成人高清视频| 性欧美在线看片a免费观看| 成人免费福利在线| 欧美最顶级丰满的aⅴ艳星| 永久555www成人免费| 国产精品老牛影院在线观看| 欧美一区二区大胆人体摄影专业网站| 欧美视频在线看| 精品久久久91| 欧美猛交免费看| 亚洲精品一区二区在线| 欧美日韩中文字幕| 亚洲欧洲在线观看| 日韩美女写真福利在线观看| 久久伊人91精品综合网站| 午夜精品久久久久久久男人的天堂| 91九色国产社区在线观看| 91九色视频在线| 国产日韩欧美视频在线| 欧美日韩在线一区| 日韩亚洲一区二区| 国产ts人妖一区二区三区| 日本不卡视频在线播放| 韩国视频理论视频久久| 亚洲国产免费av| 一个人看的www久久| 精品国偷自产在线| 国内免费精品永久在线视频| 亚洲专区中文字幕| 久久久久久久999| 中文字幕日韩有码| 久久久久久久久亚洲| 亚洲欧洲第一视频| 欧美黑人xxxⅹ高潮交| 亚洲一区www| 国内精品久久久久伊人av| 久久精品亚洲一区| 国产精品9999|