標籤:star bug lan 資料 實驗 技術分享 my.cnf flush replicat
實驗環境
兩台Centos7 MySQL5.7.12 IP地址為:192.168.10.36 192.168.10.37
一台Centos7 Mycat IP地址為:192.168.10.31
一:安裝mysql,如所示(這裡採用yum安裝):
二:配置MYSQL,以及建立MYSQL主從
1:初始化密碼,由於我沒在/root目錄下找到第一次啟動的隨機密碼,所以我只能用如下操作
vi /etc/my.cnf
mysqd 欄位添加 #skip-grant-tables
然後重啟mysql systemctl restart mysqld 這個時候沒有密碼也能進去;執行下面這一條語句:
update mysql.user set authentication_string=password(123456) where user=‘root‘ and Host = ‘localhost‘;
此時重啟mysql後,注釋掉剛剛添加的那個欄位,systemctl restart mysqld 會告訴你的密碼不符合複雜程度要求,需要再次更改;
SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘[email protected]‘);
FLUSH PRIVILEGES;
之後用新的密碼登入即可!
2:配置MYSQL主從,mysql設定檔內容修改如,主從的server_id一個為36,另外一個為37,此處必須保持不一致:
3:執行如下命令,使其建立主從關係,192.168.10.37為192.168.10.36的Slave
在192.168.10.36上執行:
grant replication slave on *.* to ‘sync‘@‘192.168.10.37‘ identified by ‘sync‘;
在192.168.10.37上執行:
change master to master_host=‘192.168.10.36‘, master_user=‘repluser‘,master_password=‘replpass‘, master_auto_position=1;(此處使用的是GTID多線程複製)
start slave;
此時使用show slave status\G;可驗證主從關係是否建立完成,如:
三:配置Mycat
1:邏輯庫為myyangtest,邏輯表為:
2:查看schema.xml設定檔如所示:
此處為1個dataHost;3個dataNode節點;
3:查看rule.xml設定檔如所示:
4:查看server.xml設定檔內容,主要內容如所示:
5:啟動Mycat,並且開啟Mycat的日誌的Debug模式,
./bin/mycat start
6:建立myyang表,並開始插入資料;
7:首先驗證Mycat讀寫分離,由此先將balance 設定為3,writetype設定為0,先注釋掉第二個writeHost。
先執行如下查詢語句,擷取此條結果後,
然後開啟mycat logs目錄下的mycat.log檔案,可以看到如下內容;
由可以驗證,查詢的路由是發送到192.168.10.37(從伺服器)完成的。
然後執行如下插入語句;
然後再次開啟mycat logs目錄下的mycat.log檔案,可以看到如下內容;
由可以看到插入語句的路由是發送到192.168.10.36(主伺服器)完成的!
至此,可以驗證Mycat的讀寫分離已經實現!
8:驗證Mycat自動切換功能
修改schema.xml內容如所示:
修改完成後重啟mycat!
此時執行插入語句如:
再次開啟記錄檔,可以看到(如)插入語句還是在192.168.10.36(主伺服器)上執行;
此時我們將192.168.10.36的mysql服務給關閉!,檔案會列印報錯資訊,如所示;
此時我們再此執行一條插入語句:
再次開啟記錄檔,如所示:
由此可以看出,此時插入語句是路由到192.168.10.37(從伺服器)完成的!另外我們也可以登陸到192.168.10.37的mysql的db_test3庫中進行驗證(如):
由此Mycat的自動切換功能驗證成功!
Mycat在MySQL主從模式(1主1從)下讀寫分離和及自動切換模式的驗證