🙂🙂🙂關注微信公衆號:【芋艿的後端小屋】有福利: php
- RocketMQ / MyCAT / Sharding-JDBC 全部源碼分析文章列表
- RocketMQ / MyCAT / Sharding-JDBC 中文註釋源碼 GitHub 地址
- 您對於源碼的疑問每條留言都將獲得認真回覆。甚至不知道如何讀源碼也能夠請教噢。
- 新的源碼解析文章實時收到通知。每週更新一篇左右。
從官方倉庫 github.com/MyCATApache… Fork
出屬於本身的倉庫。爲何要 Fork
?既然開始閱讀、調試源碼,咱們可能會寫一些註釋,有了本身的倉庫,能夠進行自由的提交。😈java
使用 IntelliJ IDEA
從 Fork
出來的倉庫拉取代碼。拉取完成後,Maven
會下載依賴包,可能會花費一些時間,耐心等待下。mysql
咱們要搭建的是非分片表的調試環境,須要建立一個數據庫和表:git
db01
。travelrecord
。CREATE TABLE `travelrecord` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin複製代碼
爲了不對實現源碼產生影響,咱們選擇對 test
目錄作變動。github
一、在 resources
目錄下新建文件夾 backups
,將原 resources
下的全部文件移到 backups
下,這樣咱們的環境就乾乾淨了。
二、在 resources
目錄下新建 schema.xml
文件,配置 MyCAT
的邏輯庫、表、數據節點、數據源。sql
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="dbtest" checkSQLschema="true" sqlMaxLimit="100">
<table name="travelrecord" dataNode="dn1" autoIncrement="true" primaryKey="id" />
</schema>
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="127.0.0.1:33061" user="root" password="123456"> <!-- ‼️‼️‼️ url、user、password 設置成你的數據庫 -->
</writeHost>
</dataHost>
</mycat:schema>複製代碼
三、在 resources
目錄下新建 server.xml
文件,配置 MyCAT
系統配置。數據庫
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<property name="nonePasswordLogin">0</property> <!-- 0爲須要密碼登錄、1爲不須要密碼登錄 ,默認爲0,設置爲1則須要指定默認帳戶-->
<property name="useHandshakeV10">1</property>
<property name="useSqlStat">0</property> <!-- 1爲開啓實時統計、0爲關閉 -->
<property name="useGlobleTableCheck">0</property> <!-- 1爲開啓全加班一致性檢測、0爲關閉 -->
<property name="sequnceHandlerType">2</property>
<property name="processorBufferPoolType">0</property>
<property name="handleDistributedTransactions">0</property>
<property name="useOffHeapForMerge">1</property>
<property name="memoryPageSize">64k</property>
<property name="spillsFileBufferSize">1k</property>
<property name="useStreamOutput">0</property>
<property name="systemReserveMemorySize">384m</property>
<property name="useZKSwitch">false</property>
</system>
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">dbtest</property>
</user>
</mycat:server>複製代碼
一、在 java
目錄下新建 debugger
包,和原先已存在的包作區分。
二、在 debbuger
包下新建 MycatStartupTest.java
:後端
package debugger;
import io.mycat.MycatStartup;
/** * {@link io.mycat.MycatStartup}測試 * * Created by yunai on 2017/5/22. */
public class MycatStartupTest {
public static void main(String[] args) {
MycatStartup.main(args);
}
}複製代碼
三、運行 MycatStartupTest.java
,當看到輸出日誌 MyCAT Server startup successfully. see logs in logs/mycat.log
即爲啓動成功。微信
截止目前,test
目錄以下:工具
調試環境已經搭建完成,咱們看看是否正確。
使用 MySQL
客戶端鏈接 MyCAT
:
mysql> insert into travelrecord(name) values ('haha');
Query OK, 1 rows affected (0.01 sec)
mysql> select * from travelrecord;
+--------------------+------+
| id | name |
+--------------------+------+
| 866707181398003712 | haha |
+--------------------+------+
1 rows in set (0.05 sec)複製代碼
成功。😈😈😈
感謝閱讀、收藏、關注。
知其然知其因此然。學習 MyCAT 會是一段很愉快的旅程。若是有你的交流,相信會更加愉快。歡迎添加微信:wangwenbin-server
進行探討。