Mycat分庫分表、主從複製、讀寫分離簡單實戰

1、安裝mysql數據庫

192.168.1.121

192.168.1.51

192.168.1.52

本案例數據庫統一的

用戶名:root

密碼:root123456

2、下載mycat

http://dl.mycat.io/

傳到121服務器,解壓即可

3、mycat依賴jre,所以先配置jdk,jre

4、mycat中schema.xml

 

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
        <!-- auto sharding by id (long) -->
        <table name="goods" primaryKey="ID" type="global" dataNode="dn1" />
        <table name="people" primaryKey="ID" type="global" dataNode="dn2" />
    </schema>
    <dataNode name="dn1" dataHost="localhost1" database="db1" />
    <dataNode name="dn2" dataHost="localhost2" database="db2" />
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>show slave status</heartbeat>
        <!-- 主服務器1,用來寫 -->
        <writeHost host="hostM1" url="192.168.1.121:3306" user="root"  password="root123456">
            <!-- 從服務器1,用來讀 -->
            <readHost host="hostS1" url="192.168.1.52:3306" user="root"  password="root123456" />
        </writeHost>        
    </dataHost>
    <dataHost name="localhost2" 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="hostM2" url="192.168.1.51:3306" user="root"
                   password="root123456">
        </writeHost>
    </dataHost>
</mycat:schema>

server.xml的部分配置如下:(基本不用改動)

 

5、啓動mycat 

mycat的bin目錄 使用命令

sh mycat start / restart  /stop/status

用Navicat連接數據庫

 

手動在mycat中建立goods,people表

 

 

6、主從數據庫設置

登錄主數據庫121

第一步:修改my.cnf文件:

在[mysqld]段下添加:

binlog-do-db=db1

binlog-ignore-db=mysql

#啓用二進制日誌

log-bin=mysql-bin

#服務器唯一ID,一般取IP最後一段

server-id=121

第二步:重啓mysql服務

service mysql restart

第三步:建立帳戶並授權slave

mysql>GRANT FILE ON *.* TO 'root'@'%' IDENTIFIED BY 'root123456';

注意:有時候會出現錯誤

錯誤:ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)

mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456';

然後更改配置mysql中的user表中的grant 改爲yes;

#一般不用root帳號,“%”表示所有客戶端都可能連,只要帳號,密碼正確,此處可用具體客戶端IP代替,如192.168.145.226,加強安全

刷新權限

mysql> FLUSH PRIVILEGES;

登錄從數據庫52

第一步:修改my.cnf文件

[mysqld]

server-id=52

第二步:配置從服務器

change master to master_host='192.168.1.121',master_port=3306,master_user='root',master_password='root123456',master_log_file='mysql-bin.000001',master_log_pos=10906;

第二步:啓動從服務器複製功能

start slave;

第三步:檢查從服務器複製功能狀態

show slave status;// Slave_IO_Running | Slave_SQL_Running 都爲YES

 

手動創建數據庫,表。

在mycat中增加數據,121中是主數據庫,用來寫數據;52是從數據庫,用來讀數據。

測試:成功

 

 

 

參考文獻

https://www.cnblogs.com/zmoumou/p/9650969.html

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章