接上一篇:企業實戰_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讀寫分離操作流程
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SMwkTMyE2N1UWNwcTZiVTMzYzXyMjNxcTM1AzLclDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
二、環境部署安排:
主機名 | 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;
現在完成了,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
# 登入node4節點
[root@node4 ~]# cd /app/mycat/conf/
[root@node4 conf]# cat schema.xml
6.5. 最終的mycat叢集架構