1. 程式人生 > >mycat動靜分離+mysql主從複製

mycat動靜分離+mysql主從複製

一首先配置mysql的主從複製,這裡Windows下做主伺服器,centos做從服務。
1.Windows下配置mysql為主伺服器,修改mysql安裝路徑下的my.ini配置檔案

server-id=1
#如果以下配置項導致服務無法啟動,要檢視配置項是否有空格,詳情請檢視data資料夾下的err日誌
log-bin=log
#要同步的mstest資料庫,要同步多個數據庫,就多加幾個replicate-db-db=資料庫名
binlog-do-db=test      
#要忽略的資料庫
binlog-ignore-db=mysql  

配置完成後重啟mysql服務,如果報錯,檢視mysql安裝檔案下的data資料夾裡的err檔案檢視詳細內容

2.Centos7配置mysql從服務。
修改/etc/my.cnf檔案,新增

server-id=2
#要同步的mstest資料庫,要同步多個數據庫,就多加幾個replicate-db-db=資料庫名
replicate-do-db=test        
#要忽略的資料庫
replicate-ignore-db=mysql 

然後登入mysql,執行以下命令

change master to master_host='192.168.1.128',master_port=3306,master_user='mstest',master_password='123456'

重啟服務,然後在主伺服器上新增一條資料,在從伺服器上查詢成功則表示主從配置成功。

二、配置mycat的讀寫分離,這裡在centos7下配置mycat
1.mycat主要配置 server.xml、rule.xml、schema.xml等三個配置檔案,首先在mycat安裝路徑下找到這三個配置檔案,
首先配置server.xml


    <user name="root">
        <property name="password">123456</property>
        <property name="schemas">TEST</property>
        <property
name="readOnly">
false</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>

schemas 資料庫名,這裡會和schema.xml中的配置關聯,多個用逗號分開,例如需要這個使用者需要管理兩個資料庫db1,db2,則配置db1,db2

2.配置schema.xml

    <!-- 資料庫配置,與server.xml中的資料庫對應 --> 
    <schema name="TEST" checkSQLschema="true" sqlMaxLimit="100">
        <table name="user"  dataNode="dn1" />
        <table name="user_role"  dataNode="dn1"  /> 
        <table name="user_perimission"  dataNode="dn1"  />
        <table name="role"  dataNode="dn1"  /> 
        <table name="perimission"  dataNode="dn1"  />
    </schema>
    <!-- 分片配置 --> 
        <dataNode name="dn1" dataHost="test1" database="test" /> 

    <!-- 物理資料庫配置 -->
        <dataHost name="test1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native">
            <heartbeat>select user();</heartbeat>
            <writeHost host="hostM1" url="192.168.1.128:3306" user="root" password="root"> 
             <readHost host="hostM1" url="127.0.0.1:3306" user="root" password="root"> </readHost>
             </writeHost> 
        </dataHost> 

schema中的name要與server中的相對應,table標籤中的name為物理資料庫的資料表名。
修改完成之後,啟動mycat
啟動命令為安裝路徑 bin目錄下執行
./mycat start
重啟
./mycat restart
停止
./mycat stop
啟動完成之後,進行測試如果報錯,則去mycat安裝路徑下的conf檢視wrapper.log檔案檢視詳細資訊,如果報錯,無法連線mysql服務的話,使用命令列的形式登入mysql檢視mysql是否可以登入成功,不可以則使用命令列的方式修改程式碼。
ps:報錯沒有找到資料來源,往往是因為使用者名稱密碼無法登入,所以要使用命令列來檢測,不要使用視覺化工具(Navicat),因為Navicat可以登入dos命令不一定