天天看點

企業實戰_24_MyCat實作讀寫分離

接上一篇:企業實戰_23_MyCat SQL防火牆​

文章目錄

  • ​​一、MyCat讀寫分離操作流程​​
  • ​​二、環境部署安排:​​
  • ​​三、主機操作103(node3)​​
  • ​​3.1. 資料備份​​
  • ​​3.2. 将node3.sql複制到節點5​​
  • ​​3.3. 導入資料​​
  • ​​3.4. 在檢視是否建立主從同步的賬号​​
  • ​​3.5. 建立 主從複制的賬号​​
  • ​​3.6. 給使用者賦予操作所有對象的replication slave權限​​
  • ​​四、在node5從機上建立複制鍊路​​
  • ​​五、給mycat使用者授權​​
  • ​​六、讀寫分離​​
  • ​​6.1. 讀寫分離配置方式​​
  • ​​6.2. 讀寫分離+高可用​​
  • ​​6.3. zk腳本初始化​​
  • ​​6.4. 配置同步驗證​​
  • ​​6.5. 最終的mycat叢集架構​​
一、MyCat讀寫分離操作流程
企業實戰_24_MyCat實作讀寫分離
二、環境部署安排:
主機名 IP位址 角色
node1 192.168.92.101 MYCAT MYSQL,ZK,Haproxy,Keepalived
node2 192.168.92.102 MYSQL,ZK
node3 192.168.92.103 MYSQL,ZK
node4 192.168.92.104 MYSQL,MYCAT ,Haproxy,Keepalived
node5 192.168.92.105 MYSQL
三、主機操作103(node3)

3.1. 資料備份

mysqldump --master-data=2 --single-transaction --routines --triggers --events -uroot -p --databases  product_db order_db03 order_db04  > node3.sql      

3.2. 将node3.sql複制到節點5

scp node3.sql [email protected]:/root      

3.3. 導入資料

mysql -uroot -p < node3.sql      

3.4. 在檢視是否建立主從同步的賬号

mysql -uroot -p
use mysql;
#看是否存在re_impl主從複制賬号
select user,host from user;      

3.5. 建立 主從複制的賬号

'im_repl'@'192.168.92.%' identified by '123456';      

3.6. 給使用者賦予操作所有對象的replication slave權限

*.* to 'im_repl'@'192.168.92.%';      
四、在node5從機上建立複制鍊路
# 登陸資料庫
mysql -uroot -p 

# 建立複制的鍊路 
change master to master_host='192.168.92.103',master_user='im_repl',master_password='123456',MASTER_LOG_FILE='mysql-bin.000012', MASTER_LOG_POS=21272;

# 檢視鍊路
show slave status \G

# 啟動複制鍊路
start slave;      
企業實戰_24_MyCat實作讀寫分離

現在完成了,mysql主從複制的建立

五、給mycat使用者授權

登入node5,檢視是否給mycat使用者授權

mysql -uroot -p123456
use mysql;

# 看是否存在re_impl主從複制賬号
select user,host from user;

# 在mysql主機上建立使用者用來操作資料庫
create user im_mycat@'192.168.92.%' identified by '123456';

# 給操作資料庫讀寫的使用者賦予權限
grant  select,insert,update,delete,execute on *.* to im_mycat@'192.168.92.%';      
六、讀寫分離

6.1. 讀寫分離配置方式

讀寫分離的準備工作

登入mycat節點(node1或者node4節點)

現在可以修改zk就可以同步mycat配置,由于不直覺,現暫時采用修改mycat配置檔案,在初始化zk資料,最後同步配置

6.2. 讀寫分離+高可用

cd /app/mycat/conf/zkconf/

# 修改配置檔案
vim schema.xml      

咱們對node3節點做的讀寫分離和高可用,是以,找到node3節點對應的dataHost 标簽#添加readhost标簽,進行修改,在

将writeHost 标内部新增readHost 标簽,在writeHost外部添加writeHost标簽(節點5)

<dataHost balance="3" maxCon="1000" minCon="10" name="mysql92103" writeType="0" switchType="1" dbType="mysql" dbDriver="native">
        <heartbeat>select user()</heartbeat>
        <writeHost host="192.168.92.103" url="192.168.92.103:3306" password="123456" user="im_mycat">
</writeHost>
    </dataHost>      

調整為

<dataHost balance="3" maxCon="1000" minCon="10" name="mysql92103" writeType="0" switchType="1" dbType="mysql" dbDriver="native">
        <heartbeat>select user()</heartbeat>
        <writeHost host="192.168.92.103" url="192.168.92.103:3306" password="123456" user="im_mycat">
        <readHost host="192.168.92.105" password="123456" url="192.168.92.105:3306" user="im_mycat"/>
</writeHost>
<writeHost host="192.168.92.105" password="123456" url="192.168.92.105:3306" user="im_mycat"/>
    </dataHost>      

注:上面多添加一組寫标簽是為了,當主機當機後,就把讀寫都移到從機上來,來達到mysql的高可用

将修改後的mycat配置資訊,通過初始化zookeeper腳本,來将資訊同步到zookeeper叢集中,在同步zookeeper叢集把資訊同步到2台mycat中

6.3. zk腳本初始化

重新将zk資料初始化,通過zk叢集将mycat配置檔案進行同步

cd /app/mycat/bin/
[root@node4 bin]# ./init_zk_data.sh
o2021-07-15 21:44:04 INFO JAVA_CMD=java
o2021-07-15 21:44:04 INFO Start to initialize /mycat of ZooKeeper
o2021-07-15 21:44:11      

6.4. 配置同步驗證

檢視剛才在zkconf伺服器上修改的 schema.xml檔案,mycat配置是否同步node1和node4伺服器

# 登入node1節點
[root@node1 ~]# cd /app/mycat/conf/
[root@node1 conf]# cat schema.xml      
企業實戰_24_MyCat實作讀寫分離
# 登入node4節點
[root@node4 ~]# cd /app/mycat/conf/
[root@node4 conf]# cat schema.xml      
企業實戰_24_MyCat實作讀寫分離

6.5. 最終的mycat叢集架構