Mycat分散式讀寫分離+高可用筆記
阿新 • • 發佈:2020-07-22
Mycat基礎配置
使用者建立及資料庫匯入
mysql -S /data/3307/mysql.sock
grant all on *.* to root@'10.0.0.%' identified by '123';
source /root/world.sql
mysql -S /data/3308/mysql.sock
grant all on *.* to root@'10.0.0.%' identified by '123';
source /root/world.sql
mycat實現1主1從讀寫分離
cd /app/mycat/conf/ mv schema.xml schema.xml.bak vim schema.xml <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="sh1"> </schema> <dataNode name="sh1" dataHost="worldtest" database= "world" /> <dataHost name="worldtest" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"> <heartbeat>select user()</heartbeat> <writeHost host="db1" url="10.0.0.12:3307" user="root" password="123"> <readHost host="db2" url="10.0.0.12:3309" user="root" password="123" /> </writeHost> </dataHost> </mycat:schema>
測試是否可用
mysql> begin;select @@server_id;commit; Query OK, 0 rows affected (0.00 sec) +-------------+ | @@server_id | +-------------+ | 7 | +-------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec) mysql> select @@server_id; +-------------+ | @@server_id | +-------------+ | 9 | +-------------+ 1 row in set (0.01 sec)
Mycat高可用+讀寫分離
mv schema.xml schema.xml.1 vim schema.xml <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="sh1"> </schema> <dataNode name="sh1" dataHost="worldtest" database= "world" /> <dataHost name="worldtest" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"> <heartbeat>select user()</heartbeat> <writeHost host="db1" url="10.0.0.12:3307" user="root" password="123"> <readHost host="db2" url="10.0.0.12:3309" user="root" password="123" /> </writeHost> <writeHost host="db3" url="10.0.0.13:3307" user="root" password="123"> <readHost host="db4" url="10.0.0.13:3309" user="root" password="123" /> </writeHost> </dataHost> </mycat:schema>
第一個 whost: 10.0.0.12:3307 真正的寫節點,負責寫操作
第二個 whost: 10.0.0.13:3307 準備寫節點,負責讀,當 10.0.0.12:3307宕掉,會切換為真正的寫節點
測試:
[root@db01 conf]# mysql -uroot -p123456 -h 10.0.0.12 -P 8066
讀:
mysql> select @@server_id;
寫:
mysql> begin ;select @@server_id; commit;