MyCat安裝配置
下載地址:GitHub - MyCATApache/Mycat-download
閱讀文檔:| MYCAT官方網站—開源分佈式數據庫中間件
1.安裝
運行:
linux:
./mycat start 啓動
./mycat stop 停止
./mycat console 前臺運行
./mycat install 添加到系統自動啓動(暫未實現)
./mycat remove 取消隨系統自動啓動(暫未實現)
./mycat restart 重啓服務
./mycat pause 暫停
./mycat status 查看啓動狀態
win:
直接運行startup_nowrap.bat,如果出現閃退,在cmd 命令行運行,查看出錯原因。
內存配置:
啓動前,一般需要修改JVM配置參數,打開conf/wrapper.conf文件,如下行的內容爲2G和2048,可根據本機配置情況修改爲512M或其它值。 以下配置跟jvm參數完全一致,可以根據自己的jvm參數調整。
Java Additional Parameters
wrapper.java.additional.1=
wrapper.java.additional.1=-DMYCAT_HOME=.
wrapper.java.additional.2=-server
wrapper.java.additional.3=-XX:MaxPermSize=64M
wrapper.java.additional.4=-XX:+AggressiveOpts
wrapper.java.additional.5=-XX:MaxDirectMemorySize=100m
wrapper.java.additional.6=-Dcom.sun.management.jmxremote
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.10=-Xmx100m
wrapper.java.additional.11=-Xms100m
wrapper.java.additional.12=-XX:+UseParNewGC
wrapper.java.additional.13=-XX:+UseConcMarkSweepGC
wrapper.java.additional.14=-XX:+UseCMSCompactAtFullCollection
wrapper.java.additional.15=-XX:CMSFullGCsBeforeCompaction=0
wrapper.java.additional.16=-XX:CMSInitiatingOccupancyFraction=70
以下配置作廢:
wrapper.java.initmemory=3
wrapper.java.maxmemory=64
Mycat連接測試:
測試mycat與測試mysql完全一致,mysql怎麼連接,mycat就怎麼連接。
推薦先採用命令行測試:
mysql -uroot -proot -P8066 -h127.0.0.1
如果採用工具連接,1.4,1.3目前部分工具無法連接,會提示database not selected,建議採用高版本,navicat測試。1.5已經修復了部分工具連接。
2.配置
mysql主從配置
主數據庫:192.168.0.1
從數據庫:192.168.0.2
1主節點配置信息my.cnf
[mysqld]
log-bin=mysql-bin (必須配置) 啓用二進制日誌
server-id=1 (必須配置) 爲本臺服務器配置唯一的Server ID
binlog-do-db=testdb (可選配置)要同步的數據庫名,要同步多個數據庫,就多加幾個replicate-db-db=數據庫名
binlog-ignore-db=mysql (可選配置)//要忽略的數據庫
1.1.添加從庫權限賬號
create user user;
GRANT REPLICATION SLAVE ON *.* TO 'user'@'192.168.0.2' IDENTIFIED BY 'password';
flush privileges; //刷新權限
1.2.重啓主服務器
/bin/systemctl restart mysqld.service(centos)
/bin/systemctl restart mysql.service(ubuntu)
1.3.查看主服務器狀態
show master status;
2.從節點配置信息my.cnf
[mysqld]
log-bin=mysql-bin (必須配置) 啓用二進制日誌
server-id=2 (必須配置) 爲本臺服務器配置唯一的Server ID
replicate-do-db=testdb (可選配置)#在master端不指定binlog-do-db,在slave端用replication-do-db來過濾,要同步多個數據庫,就多加幾個replicate-db-db=數據庫名
binlog-ignore-db=mysql (可選配置)//要忽略的數據庫
relay-log=mysqld-relay-bin
2.配置連接主服務器的信息
change master to master_host='192.168.0.1',master_user='user',master_password='password',master_log_file='mysql-bin.000001', master_log_pos=120;
flush privileges; //刷新權限
start slave;
3.重啓從服務器
/bin/systemctl restart mysqld.service(centos)
/bin/systemctl restart mysql.service(ubuntu)
4.查看從服務器狀態
show slave status;
讀寫分離配置
文件conf/schema.xml
<schema name="mycatdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="localhost1" database="world" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100" maxRetryCount="4">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="localhost:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="localhost:3307" user="root" password="123456" />
</writeHost>
</dataHost>
解釋:
name=“mycatdb” 是虛擬的表名,dataNode="dn1"是虛擬的數據庫
database="world"是真實對應的庫名 ,
url=“localhost:3306” user=“root” password=“123456” 真實對應的數據庫服務IP和用戶名密碼,主要用來連接數據庫。
server.xml配置
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">mycatdb</property>
<!-- 表級 DML 權限設置 -->
<!--
<privileges check="false">
<schema name="TESTDB" dml="0110" >
<table name="tb01" dml="0000"></table>
<table name="tb02" dml="1111"></table>
</schema>
</privileges>
-->
</user>
連接測試 使用mysql連接工具端口8066連接即可地址爲mycat所在主機地址
測試讀寫分離功能
首先寫一條select 語句 然後查看logs/mycat.log日誌
同理寫一條插入語句 查看日誌。
分表配置
首先創建三個數據庫
db01 db02 db03
db01創建users表
db02,db03 創建items表
rule.xml配置
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<!-- how many data nodes -->
<property name="count">2</property>
</function>
schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="mycatdb" checkSQLschema="false" sqlMaxLimit="100">
<table name="users" primaryKey="ID" dataNode="dn1" />
<table name="items" primaryKey="ID" autoIncrement="true" dataNode="dn2,dn3"
rule="mod-long" />
</schema>
<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
/> -->
<dataNode name="dn1" dataHost="localhost1" database="db01" />
<dataNode name="dn2" dataHost="localhost1" database="db02" />
<dataNode name="dn3" dataHost="localhost1" database="db03" />
<!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" />
<dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />
<dataNode name="jdbc_dn2" dataHost="jdbchost" database="db2" />
<dataNode name="jdbc_dn3" dataHost="jdbchost" database="db3" /> -->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="localhost:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="localhost:3307" user="root" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>
注意 :如果表中使用了規則 則規則中數字和節點數相等,不然重啓mycat會失敗
3.監控
1.mycat 控制檯監控
監控默認端口9066
登錄命令
mysql -uroot -proot -P9066 -h127.0.0.1
show @@help;#顯示所有命令
參考網址:https://www.cnblogs.com/parryyang/p/5606071.html
2.web監控
下載項目
1.下載linux版本
將文件解壓放到對應文件夾
2.啓動zookeeper
3.修改mycat-web配置
配置文件路徑mycat-web/WEB-INF/classes
show.period=3000000
zookeeper=192.168.0.3:2181
mycat_warn_mail=XXX
##mycat配置
sqlonline.server=192.168.18.140
sqlonline.user=root
sqlonline.passwd=123456
4.啓動項目
./start.sh &
5.訪問路徑
http://localhost:8082/mycat
打開界面之後只有一個菜單 說明zookeeper沒有連接上檢查即可