轉載於:http://blog.itpub.net/29096438/viewspace-2137743/
1.配置文件如下:
- <dataHost name="localhost1" maxCon="1000" minCon="10" balance="2"
- 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.6.121:3306" user="root"
- password="ESBecs00">
- <!-- can have multi read hosts -->
- </writeHost>
- <writeHost host="hostS1" url="192.168.6.121:3307" user="root"
- password="ESBecs00">
- <!-- can have multi read hosts -->
- </writeHost>
- </dataHost>
writeType屬性
負載均衡類型,目前的取值有3種:
1. writeType="0", 所有寫操作發送到配置的第一個writeHost,第一個掛了切到還生存的第二個writeHost,重新啟動后已切換后的為准,切換記錄在配置文件中:dnindex.properties .
2. writeType="1",所有寫操作都隨機的發送到配置的writeHost。
3. writeType="2",沒實現。
1. writeType="0", 所有寫操作發送到配置的第一個writeHost,第一個掛了切到還生存的第二個writeHost,重新啟動后已切換后的為准,切換記錄在配置文件中:dnindex.properties .
2. writeType="1",所有寫操作都隨機的發送到配置的writeHost。
3. writeType="2",沒實現。
switchtype屬性如下(控制自動切換的 )

2 模擬數據庫down機
- 2.1 主庫down機
- [root@localhost ~]# /etc/init.d/mysql stop
Shutting down MySQL.... [確定]
- 2.2 mycat插入數據
- mysql> insert into zs values (2),(3);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
- 2.3 查看備庫
- mysql> select * from zs;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)
數據發送至備庫,可見已切換成功
- 2.4 主庫恢復
- [root@localhost ~]# /etc/init.d/mysql start
Starting MySQL. [確定]
- 2.5 再次插入數據,並查看從和主
- mycat> insert into zs values (4),(5);
- 從上:mysql> select * from zs;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+------+ - 主上:mysql> select * from zs;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec) - 通過上面的步驟可以發現,主庫down掉后 就以從庫為准了,就算主庫恢復了,還是以從庫為准,所以搭個雙主是最好的解決辦法
- 可以看下切換的記錄文件
- [root@localhost conf]# more dnindex.properties
#update
#Fri Apr 21 13:40:09 CST 2017
localhost3=0
localhost2=0
localhost1=1 ###使用第二個writehost - 將新的主庫down機 再恢復,又切換回原主庫了
- [root@localhost conf]# more dnindex.properties
#update
#Fri Apr 21 13:56:09 CST 2017
localhost3=0
localhost2=0
localhost1=0 ###使用第一個writehost
#這0和1代表的就是寫入時使用第幾個writehost的意思了